diff --git a/.github/workflows/build-images.yaml b/.github/workflows/build-images.yaml index 05294987..c537da0a 100644 --- a/.github/workflows/build-images.yaml +++ b/.github/workflows/build-images.yaml @@ -26,143 +26,9 @@ env: LATEST_AUTHORINO_GITREF: ${{ vars.AUTHORINO_SHA != '' && vars.AUTHORINO_SHA || 'latest' }} jobs: - build: - name: Build and push image - runs-on: ubuntu-20.04 - steps: - - name: Check out code - uses: actions/checkout@v3 - - 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: Add branch tag - if: ${{ github.ref_name != env.MAIN_BRANCH_NAME }} - id: add-branch-tag - run: | - echo "IMG_TAGS=${GITHUB_REF_NAME/\//-} ${{ env.IMG_TAGS }}" >> $GITHUB_ENV - - name: Set Operator version - id: operator-version - run: | - if [[ ${GITHUB_REF_NAME/\//-} =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-.+)?$ ]]; then - echo "VERSION=${GITHUB_REF_NAME/\//-}" >> $GITHUB_ENV - else - echo "VERSION=${{ github.sha }}" >> $GITHUB_ENV - fi - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Install yq dependency - run: make yq - - name: Set default authorino image - run: | - echo "DEFAULT_AUTHORINO_IMAGE=$(./bin/yq e -e '.config.authorinoImage' ${{ env.BUILD_CONFIG_FILE }} || echo ${{ env.IMG_REGISTRY_HOST }}/${{ env.IMG_REGISTRY_ORG }}/authorino:${{ env.LATEST_AUTHORINO_GITREF }})" >> $GITHUB_ENV - - 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,linux/s390x,linux/ppc64le - build-args: | - OPERATOR_VERSION=${{ env.VERSION }} - GIT_SHA=${{ github.sha }} - DIRTY=false - DEFAULT_AUTHORINO_IMAGE=${{ env.DEFAULT_AUTHORINO_IMAGE }} - containerfiles: | - ./Dockerfile - - name: Push Image - if: ${{ !env.ACT }} - 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: - needs: build - name: Build and push bundle image - runs-on: ubuntu-20.04 - if: github.ref_name == 'main' || startsWith(github.ref, 'refs/tags/v') # We cannot use `env.MAIN_BRANCH_NAME` because `env` context is not available to `job.if`. See https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability - steps: - - name: Set up Go 1.21.x - uses: actions/setup-go@v4 - with: - go-version: 1.21.x - id: go - - name: Check out code - uses: actions/checkout@v3 - - 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: Add release tag - if: ${{ github.ref_name != env.MAIN_BRANCH_NAME }} - id: add-branch-tag - run: | - TAG_NAME=${GITHUB_REF_NAME/\//-} - echo "TAG_NAME=${TAG_NAME}" >> $GITHUB_ENV - echo "IMG_TAGS=${TAG_NAME} ${{ env.IMG_TAGS }}" >> $GITHUB_ENV - - name: Set Operator version - id: operator-version - run: | - tag=${GITHUB_REF_NAME} - if [[ ${tag} =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-.+)?$ ]]; then - echo "VERSION=${tag#v}" >> $GITHUB_ENV - else - echo "VERSION=${{ github.sha }}" >> $GITHUB_ENV - fi - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Run make bundle (main) - if: ${{ github.ref_name == env.MAIN_BRANCH_NAME }} - run: make bundle REGISTRY=${{ env.IMG_REGISTRY_HOST }} ORG=${{ env.IMG_REGISTRY_ORG }} IMAGE_TAG=${{ github.sha }} AUTHORINO_VERSION=${{ env.LATEST_AUTHORINO_GITREF }} - - name: Run make bundle (release) - if: ${{ github.ref_name != env.MAIN_BRANCH_NAME }} - run: make bundle REGISTRY=${{ env.IMG_REGISTRY_HOST }} ORG=${{ env.IMG_REGISTRY_ORG }} VERSION=${{env.VERSION}} AUTHORINO_VERSION=${{ github.event.inputs.authorinoVersion }} CHANNELS=${{ github.event.inputs.channels }} DEFAULT_CHANNEL=stable - - name: Git diff - run: git diff - - name: Verify manifests and bundle (main) - if: github.ref_name == env.MAIN_BRANCH_NAME - run: make verify-manifests verify-bundle REGISTRY=${{ env.IMG_REGISTRY_HOST }} ORG=${{ env.IMG_REGISTRY_ORG }} IMAGE_TAG=${{ github.sha }} AUTHORINO_VERSION=${{ env.LATEST_AUTHORINO_GITREF }} - - name: Verify manifests and bundle (release) - if: ${{ github.ref_name != env.MAIN_BRANCH_NAME }} - run: make verify-manifests verify-bundle REGISTRY=${{ env.IMG_REGISTRY_HOST }} ORG=${{ env.IMG_REGISTRY_ORG }} VERSION=${{env.VERSION}} AUTHORINO_VERSION=${{ github.event.inputs.authorinoVersion }} CHANNELS=${{ github.event.inputs.channels }} DEFAULT_CHANNEL=stable - - name: Build Image - id: build-image - uses: redhat-actions/buildah-build@v2 - with: - image: ${{ env.OPERATOR_NAME }}-bundle - tags: ${{ env.IMG_TAGS }} - platforms: linux/amd64,linux/arm64,linux/s390x,linux/ppc64le - build-args: | - version=${{ env.VERSION }} - containerfiles: | - ./bundle.Dockerfile - - name: Push Image - if: ${{ !env.ACT }} - 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 - if: github.ref_name == 'main' || startsWith(github.ref, 'refs/tags/v') # We cannot use `env.MAIN_BRANCH_NAME` because `env` context is not available to `job.if`. See https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability steps: - name: Set up Go 1.21.x uses: actions/setup-go@v4 @@ -213,6 +79,9 @@ jobs: VERSION=${{ env.VERSION }} \ AUTHORINO_VERSION=${{ github.event.inputs.authorinoVersion }} \ CHANNELS=${{ inputs.channels }} + - name: print the catalog dockerfile + run: | + cat ./catalog/${{ env.OPERATOR_NAME }}-catalog.Dockerfile - name: Git diff run: git diff - name: Build Image @@ -221,7 +90,7 @@ jobs: with: image: ${{ env.OPERATOR_NAME }}-catalog tags: ${{ env.IMG_TAGS }} - platforms: linux/amd64,linux/arm64 + platforms: linux/amd64,linux/arm64,linux/s390x,linux/ppc64le context: ./catalog dockerfiles: | ./catalog/${{ env.OPERATOR_NAME }}-catalog.Dockerfile diff --git a/Makefile b/Makefile index 94f30a2e..32b37cf6 100644 --- a/Makefile +++ b/Makefile @@ -138,14 +138,16 @@ $(YQ): .PHONY: yq yq: $(YQ) ## Download yq locally if necessary. +ARCH ?= $(shell go env GOARCH) + OPM = $(PROJECT_DIR)/bin/opm -OPM_VERSION = v1.26.2 +OPM_VERSION ?= 1.48.0 $(OPM): @{ \ set -e ;\ mkdir -p $(dir $(OPM)) ;\ OS=$(shell go env GOOS) && ARCH=$(shell go env GOARCH) && \ - curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/$(OPM_VERSION)/$${OS}-$${ARCH}-opm ;\ + curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v$(OPM_VERSION)/$${OS}-$(ARCH)-opm ;\ chmod +x $(OPM) ;\ } diff --git a/make/catalog.mk b/make/catalog.mk index fe9e0ef4..04bfc3e9 100644 --- a/make/catalog.mk +++ b/make/catalog.mk @@ -8,7 +8,8 @@ CATALOG_DOCKERFILE = $(PROJECT_DIR)/catalog/authorino-operator-catalog.Dockerfil $(CATALOG_DOCKERFILE): $(OPM) -mkdir -p $(PROJECT_DIR)/catalog/authorino-operator-catalog - cd $(PROJECT_DIR)/catalog && $(OPM) generate dockerfile authorino-operator-catalog + cd $(PROJECT_DIR)/catalog && $(OPM) generate dockerfile authorino-operator-catalog -b "quay.io/operator-framework/opm:latest" -i "quay.io/operator-framework/opm:latest" + catalog-dockerfile: $(CATALOG_DOCKERFILE) ## Generate catalog dockerfile. $(CATALOG_FILE): $(OPM) $(YQ)