Skip to content

testing 05

testing 05 #210

Workflow file for this run

name: Build and Publish Images
on:
push:
branches:
- main
- "release-*"
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
workflow_dispatch:
env:
IMG_TAGS: ${{ github.sha }} ${{ github.ref_name }}
IMG_REGISTRY_HOST: quay.io
IMG_REGISTRY_ORG: kuadrant
IMG_REGISTRY_REPO: dns-operator
MAIN_BRANCH_NAME: main
OPERATOR_NAME: dns-operator
jobs:
build:
name: Build and Push image
runs-on: ubuntu-latest
outputs:
build-tags: ${{ steps.build-image.outputs.tags }}
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Install yq tool
run: |
# following sub-shells running make target should have yq already installed
make yq
- name: testing url
run: |
url=`make bundle-operator-image-url`
echo url=$url >> $GITHUB_OUTPUT
- name: testing tag
run: |
tag=`make bundle-operator-image-tag`
echo tag=$tag >> $GITHUB_OUTPUT
- name: Read operator image reference from the manifest bundle
id: operator-image
run: |
{
"url=$(make bundle-operator-image-url)"
"tag=$(make bundle-operator-image-tag)"
} >> $GITHUB_OUTPUT
{
echo "### Workflow variables"
echo "| Variable | Value |"
echo "| ---------- | ----------- |"
echo "| url | $url |"
echo "| tag | $tag |"
} >> $GITHUB_STEP_SUMMARY
- name: Add latest tag
if: ${{ github.ref_name == env.MAIN_BRANCH_NAME }}
id: add-latest-tag
run: |
echo "IMG_TAGS=latest ${{ env.IMG_TAGS }}" >> $GITHUB_ENV
- name: Install qemu dependency
run: |
sudo apt-get update
sudo apt-get install -y qemu-user-static
- name: Build Image
id: build-image
uses: redhat-actions/buildah-build@v2
with:
image: ${{ env.OPERATOR_NAME }}
tags: ${{ env.IMG_TAGS }}
platforms: linux/amd64,linux/arm64
build-args: |
GIT_SHA=${{ github.sha }}
DIRTY=false
dockerfiles: |
./Dockerfile
- name: Print Build Info
run: echo "Image = ${{ steps.build-image.outputs.image }}, Tags = ${{ steps.build-image.outputs.tags }}"
- name: Push Image
if: github.repository_owner == 'kuadrant'
id: push-to-quay
uses: redhat-actions/push-to-registry@v2
with:
image: ${{ steps.build-image.outputs.image }}
tags: ${{ steps.build-image.outputs.tags }}
registry: ${{ env.IMG_REGISTRY_HOST }}/${{ env.IMG_REGISTRY_ORG }}
username: ${{ secrets.IMG_REGISTRY_USERNAME }}
password: ${{ secrets.IMG_REGISTRY_TOKEN }}
- name: Print Image URL
run: echo "Image pushed to ${{ steps.push-to-quay.outputs.registry-paths }}"
build-bundle:
name: Build and Push bundle image
needs: [build]
runs-on: ubuntu-20.04
outputs:
build-tags: ${{ steps.build-image.outputs.tags }}
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Read operator image reference from the manifest bundle
id: operator-image
run: |
echo "url=$(make bundle-operator-image-url)" >> $GITHUB_OUTPUT
echo "tag=$(make bundle-operator-image-tag)" >> $GITHUB_OUTPUT
- name: Verify referenced opeator image has previously been built
uses: nick-fields/assert-action@v2
with:
expected: ${{ steps.operator-image.tag }}
actual: ${{ needs.build.outputs.build-tags }}
comparison: contains
- name: Install qemu dependency
run: |
sudo apt-get update
sudo apt-get install -y qemu-user-static
- name: Build Image
id: build-image
uses: redhat-actions/buildah-build@v2
with:
image: ${{ env.OPERATOR_NAME }}-bundle
tags: ${{ needs.build.outputs.build-tags }}
platforms: linux/amd64,linux/arm64
build-args: |
GIT_SHA=${{ github.sha }}
DIRTY=false
dockerfiles: |
./bundle.Dockerfile
- name: Print Build Info
run: echo "Image = ${{ steps.build-image.outputs.image }}, Tags = ${{ steps.build-image.outputs.tags }}, Operator IMG = ${{ steps.operator-image.url }}"
- name: Push Image
if: github.repository_owner == 'kuadrant'
id: push-to-quay
uses: redhat-actions/push-to-registry@v2
with:
image: ${{ steps.build-image.outputs.image }}
tags: ${{ steps.build-image.outputs.tags }}
registry: ${{ env.IMG_REGISTRY_HOST }}/${{ env.IMG_REGISTRY_ORG }}
username: ${{ secrets.IMG_REGISTRY_USERNAME }}
password: ${{ secrets.IMG_REGISTRY_TOKEN }}
- name: Print Image URL
run: echo "Image pushed to ${{ steps.push-to-quay.outputs.registry-paths }}"
build-catalog:
name: Build and Push catalog image
needs: [build, build-bundle]
runs-on: ubuntu-20.04
outputs:
build-tags: ${{ steps.build-image.outputs.tags }}
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Read operator bundle image reference
id: operator-bundle
run: |
echo "image=$(make print-bundle-image)" >> $GITHUB_OUTPUT
- name: Run make catalog-build
run: make catalog-build
- name: Verify referenced bundle has previously been built
uses: nick-fields/assert-action@v2
with:
expected: ${{ steps.operator-bundle.image }}
actual: ${{ needs.build-bundle.outputs.build-tags }}
comparison: contains
- name: Install qemu dependency
run: |
sudo apt-get update
sudo apt-get install -y qemu-user-static
- name: Build Image
id: build-image
uses: redhat-actions/buildah-build@v2
with:
image: ${{ env.OPERATOR_NAME }}-catalog
tags: ${{ needs.build.outputs.build-tags }}
platforms: linux/amd64,linux/arm64
context: ./tmp/catalog
dockerfiles: |
./tmp/catalog/index.Dockerfile
- name: Print Build Info
run: echo "Image = ${{ steps.build-image.outputs.image }}, Tags = ${{ steps.build-image.outputs.tags }}, Bundle IMG = ${{ steps.operator-bundle.image }}"
- name: Push Image
if: github.repository_owner == 'kuadrant'
id: push-to-quay
uses: redhat-actions/push-to-registry@v2
with:
image: ${{ steps.build-image.outputs.image }}
tags: ${{ steps.build-image.outputs.tags }}
registry: ${{ env.IMG_REGISTRY_HOST }}/${{ env.IMG_REGISTRY_ORG }}
username: ${{ secrets.IMG_REGISTRY_USERNAME }}
password: ${{ secrets.IMG_REGISTRY_TOKEN }}
- name: Print Image URL
run: echo "Image pushed to ${{ steps.push-to-quay.outputs.registry-paths }}"
verify-builds:
name: Ensure all image references are equal (operator, bundle, catalog)
needs: [build, build-bundle, build-catalog]
runs-on: ubuntu-latest
steps:
- name: Verify bundle and image tags match
uses: nick-fields/assert-action@v2
with:
expected: ${{ needs.build.outputs.build-tags }}
actual: ${{ needs.build-bundle.outputs.build-tags }}
- name: Verify catalog and bundle tags match
uses: nick-fields/assert-action@v2
with:
expected: ${{ needs.build-bundle.outputs.build-tags }}
actual: ${{ needs.build-catalog.outputs.build-tags }}