From 4dd480b956b84400b264e64ec9cd249d38dbd98c Mon Sep 17 00:00:00 2001 From: Dan Prince Date: Fri, 13 Oct 2023 08:30:28 -0400 Subject: [PATCH] Shared github workflows and operator-sdk 1.31 This PR switches the operator to use shared build workflows for building operator, bundle, and catalog/index images. Additionally operator-sdk is bumped to 1.31. (also includes bump to OPM and controller-gen) Jira: OSP-29146 Jira: OSP-26858 --- .ci-operator.yaml | 2 +- .github/create_bundle.sh | 13 -- .github/create_opm_index.sh | 15 -- .github/workflows/build-octavia-operator.yaml | 188 ++---------------- Makefile | 4 +- ...enstack.org_octaviaamphoracontrollers.yaml | 2 +- .../octavia.openstack.org_octaviaapis.yaml | 2 +- api/bases/octavia.openstack.org_octavias.yaml | 2 +- ...enstack.org_octaviaamphoracontrollers.yaml | 2 +- .../octavia.openstack.org_octaviaapis.yaml | 2 +- .../bases/octavia.openstack.org_octavias.yaml | 2 +- 11 files changed, 22 insertions(+), 212 deletions(-) delete mode 100755 .github/create_bundle.sh delete mode 100755 .github/create_opm_index.sh diff --git a/.ci-operator.yaml b/.ci-operator.yaml index 7bb24500..71ef6166 100644 --- a/.ci-operator.yaml +++ b/.ci-operator.yaml @@ -1,4 +1,4 @@ build_root_image: name: tools namespace: openstack-k8s-operators - tag: ci-build-root-golang-1.19-sdk-1.26 + tag: ci-build-root-golang-1.19-sdk-1.31 diff --git a/.github/create_bundle.sh b/.github/create_bundle.sh deleted file mode 100755 index fdbd8bb8..00000000 --- a/.github/create_bundle.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -set -e - -echo "Creating octavia operator bundle" -cd .. -echo "${GITHUB_SHA}" -echo "${BASE_IMAGE}" - -RELEASE_VERSION=$(grep "^VERSION" Makefile | awk -F'?= ' '{ print $2 }') -echo "Release Version: $RELEASE_VERSION" - -echo "Creating bundle image..." -USE_IMAGE_DIGESTS=true VERSION=$RELEASE_VERSION IMG=${REGISTRY}/${BASE_IMAGE}:${GITHUB_SHA} make bundle diff --git a/.github/create_opm_index.sh b/.github/create_opm_index.sh deleted file mode 100755 index 6ff3c763..00000000 --- a/.github/create_opm_index.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -set -e - -echo "Creating operator index image" -echo "${REGISTRY}" -echo "${GITHUB_SHA}" -echo "${INDEX_IMAGE}" -echo "${INDEX_IMAGE_TAG}" -echo "${BUNDLE_IMAGE}" - -echo "opm index add --bundles ${REGISTRY}/${BUNDLE_IMAGE}:${GITHUB_SHA} --tag ${REGISTRY}/${INDEX_IMAGE}:${GITHUB_SHA} -u podman --pull-tool podman" -opm index add --bundles "${REGISTRY}/${BUNDLE_IMAGE}:${GITHUB_SHA}" --tag "${REGISTRY}/${INDEX_IMAGE}:${GITHUB_SHA}" -u podman --pull-tool podman - -echo "podman tag ${REGISTRY}/${INDEX_IMAGE}:${GITHUB_SHA} ${REGISTRY}/${INDEX_IMAGE}:${INDEX_IMAGE_TAG}" -podman tag "${REGISTRY}/${INDEX_IMAGE}:${GITHUB_SHA}" "${REGISTRY}/${INDEX_IMAGE}:${INDEX_IMAGE_TAG}" diff --git a/.github/workflows/build-octavia-operator.yaml b/.github/workflows/build-octavia-operator.yaml index cbc1547f..f88000bc 100644 --- a/.github/workflows/build-octavia-operator.yaml +++ b/.github/workflows/build-octavia-operator.yaml @@ -1,4 +1,4 @@ -name: Octavia Operator image builder +name: octavia operator image builder on: push: @@ -11,177 +11,15 @@ env: latesttag: latest jobs: - - check-secrets: - runs-on: ubuntu-latest - steps: - - name: Check secrets are set - id: have-secrets - if: "${{ env.imagenamespace != '' }}" - run: echo "::set-output name=ok::true" - outputs: - have-secrets: ${{ steps.have-secrets.outputs.ok }} - - build-octavia-operator: - name: Build octavia-operator image using buildah - runs-on: ubuntu-latest - needs: [check-secrets] - if: needs.check-secrets.outputs.have-secrets == 'true' - - steps: - - uses: actions/checkout@v2 - - - name: Get branch name - id: branch-name - uses: tj-actions/branch-names@v5 - - - name: Set latest tag for non main branch - if: "${{ steps.branch-name.outputs.current_branch != 'main' }}" - run: | - echo "latesttag=${{ steps.branch-name.outputs.current_branch }}-latest" >> $GITHUB_ENV - - - name: Buildah Action - id: build-octavia-operator - uses: redhat-actions/buildah-build@v2 - with: - image: octavia-operator - tags: ${{ env.latesttag }} ${{ github.sha }} - containerfiles: | - ./Dockerfile - - - name: Push octavia-operator To ${{ env.imageregistry }} - uses: redhat-actions/push-to-registry@v2 - with: - image: ${{ steps.build-octavia-operator.outputs.image }} - tags: ${{ steps.build-octavia-operator.outputs.tags }} - registry: ${{ env.imageregistry }}/${{ env.imagenamespace }} - username: ${{ secrets.QUAY_USERNAME }} - password: ${{ secrets.QUAY_PASSWORD }} - - build-octavia-operator-bundle: - needs: [ check-secrets, build-octavia-operator ] - name: octavia-operator-bundle - runs-on: ubuntu-latest - if: needs.check-secrets.outputs.have-secrets == 'true' - - steps: - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: 1.19.x - - - name: Checkout octavia-operator repository - uses: actions/checkout@v2 - - - name: Install operator-sdk - uses: redhat-actions/openshift-tools-installer@v1 - with: - source: github - operator-sdk: '1.26.0' - - - name: Log in to Quay Registry - uses: redhat-actions/podman-login@v1 - with: - registry: ${{ env.imageregistry }} - username: ${{ secrets.QUAY_USERNAME }} - password: ${{ secrets.QUAY_PASSWORD }} - - - name: Log in to Red Hat Registry - uses: redhat-actions/podman-login@v1 - with: - registry: registry.redhat.io - username: ${{ secrets.REDHATIO_USERNAME }} - password: ${{ secrets.REDHATIO_PASSWORD }} - - - name: Create bundle image - run: | - pushd "${GITHUB_WORKSPACE}"/.github/ - chmod +x "create_bundle.sh" - "./create_bundle.sh" - popd - env: - REGISTRY: ${{ env.imageregistry }}/${{ env.imagenamespace }} - GITHUB_SHA: ${{ github.sha }} - BASE_IMAGE: octavia-operator - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Get branch name - id: branch-name - uses: tj-actions/branch-names@v5 - - - name: Set latest tag for non main branch - if: "${{ steps.branch-name.outputs.current_branch != 'main' }}" - run: | - echo "latesttag=${{ steps.branch-name.outputs.current_branch }}-latest" >> $GITHUB_ENV - - - name: Build octavia-operator-bundle using buildah - id: build-octavia-operator-bundle - uses: redhat-actions/buildah-build@v2 - with: - image: octavia-operator-bundle - tags: ${{ env.latesttag }} ${{ github.sha }} - containerfiles: | - ./bundle.Dockerfile - - - name: Push octavia-operator To ${{ env.imageregistry }} - uses: redhat-actions/push-to-registry@v2 - with: - image: ${{ steps.build-octavia-operator-bundle.outputs.image }} - tags: ${{ steps.build-octavia-operator-bundle.outputs.tags }} - registry: ${{ env.imageregistry }}/${{ env.imagenamespace }} - username: ${{ secrets.QUAY_USERNAME }} - password: ${{ secrets.QUAY_PASSWORD }} - - build-octavia-operator-index: - needs: [ check-secrets, build-octavia-operator-bundle ] - name: octavia-operator-index - runs-on: ubuntu-latest - if: needs.check-secrets.outputs.have-secrets == 'true' - - steps: - - name: Checkout octavia-operator repository - uses: actions/checkout@v2 - - - name: Get branch name - id: branch-name - uses: tj-actions/branch-names@v5 - - - name: Set latest tag for non main branch - if: "${{ steps.branch-name.outputs.current_branch != 'main' }}" - run: | - echo "latesttag=${{ steps.branch-name.outputs.current_branch }}-latest" >> $GITHUB_ENV - - - name: Install opm - uses: redhat-actions/openshift-tools-installer@v1 - with: - source: github - opm: 'latest' - - - name: Log in to Red Hat Registry - uses: redhat-actions/podman-login@v1 - with: - registry: ${{ env.imageregistry }} - username: ${{ secrets.QUAY_USERNAME }} - password: ${{ secrets.QUAY_PASSWORD }} - - - name: Create index image - run: | - pushd "${GITHUB_WORKSPACE}"/.github/ - chmod +x "create_opm_index.sh" - "./create_opm_index.sh" - popd - env: - REGISTRY: ${{ env.imageregistry }}/${{ env.imagenamespace }} - GITHUB_SHA: ${{ github.sha }} - BUNDLE_IMAGE: octavia-operator-bundle - INDEX_IMAGE_TAG: ${{ env.latesttag }} - INDEX_IMAGE: octavia-operator-index - - - name: Push octavia-operator-index To ${{ env.imageregistry }} - uses: redhat-actions/push-to-registry@v2 - with: - image: octavia-operator-index - tags: ${{ env.latesttag }} ${{ github.sha }} - registry: ${{ env.imageregistry }}/${{ env.imagenamespace }} - username: ${{ secrets.QUAY_USERNAME }} - password: ${{ secrets.QUAY_PASSWORD }} + call-build-workflow: + uses: openstack-k8s-operators/openstack-k8s-operators-ci/.github/workflows/reusable-build-operator.yaml@main + with: + operator_name: octavia + go_version: 1.19.x + operator_sdk_version: 1.31.0 + secrets: + IMAGENAMESPACE: ${{ secrets.IMAGENAMESPACE }} + QUAY_USERNAME: ${{ secrets.QUAY_USERNAME }} + QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }} + REDHATIO_USERNAME: ${{ secrets.REDHATIO_USERNAME }} + REDHATIO_PASSWORD: ${{ secrets.REDHATIO_PASSWORD }} diff --git a/Makefile b/Makefile index a3f317c4..ae84ffa6 100644 --- a/Makefile +++ b/Makefile @@ -175,7 +175,7 @@ ENVTEST ?= $(LOCALBIN)/setup-envtest ## Tool Versions KUSTOMIZE_VERSION ?= v3.8.7 -CONTROLLER_TOOLS_VERSION ?= v0.10.0 +CONTROLLER_TOOLS_VERSION ?= v0.11.1 KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" .PHONY: kustomize @@ -217,7 +217,7 @@ ifeq (,$(shell which opm 2>/dev/null)) 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/v1.23.0/$${OS}-$${ARCH}-opm ;\ + curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v1.29.0/$${OS}-$${ARCH}-opm ;\ chmod +x $(OPM) ;\ } else diff --git a/api/bases/octavia.openstack.org_octaviaamphoracontrollers.yaml b/api/bases/octavia.openstack.org_octaviaamphoracontrollers.yaml index 15496196..7cf2b6cb 100644 --- a/api/bases/octavia.openstack.org_octaviaamphoracontrollers.yaml +++ b/api/bases/octavia.openstack.org_octaviaamphoracontrollers.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.10.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: octaviaamphoracontrollers.octavia.openstack.org spec: diff --git a/api/bases/octavia.openstack.org_octaviaapis.yaml b/api/bases/octavia.openstack.org_octaviaapis.yaml index 6537a9e0..ca1790e4 100644 --- a/api/bases/octavia.openstack.org_octaviaapis.yaml +++ b/api/bases/octavia.openstack.org_octaviaapis.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.10.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: octaviaapis.octavia.openstack.org spec: diff --git a/api/bases/octavia.openstack.org_octavias.yaml b/api/bases/octavia.openstack.org_octavias.yaml index 919203ea..8d2217f3 100644 --- a/api/bases/octavia.openstack.org_octavias.yaml +++ b/api/bases/octavia.openstack.org_octavias.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.10.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: octavias.octavia.openstack.org spec: diff --git a/config/crd/bases/octavia.openstack.org_octaviaamphoracontrollers.yaml b/config/crd/bases/octavia.openstack.org_octaviaamphoracontrollers.yaml index 15496196..7cf2b6cb 100644 --- a/config/crd/bases/octavia.openstack.org_octaviaamphoracontrollers.yaml +++ b/config/crd/bases/octavia.openstack.org_octaviaamphoracontrollers.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.10.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: octaviaamphoracontrollers.octavia.openstack.org spec: diff --git a/config/crd/bases/octavia.openstack.org_octaviaapis.yaml b/config/crd/bases/octavia.openstack.org_octaviaapis.yaml index 6537a9e0..ca1790e4 100644 --- a/config/crd/bases/octavia.openstack.org_octaviaapis.yaml +++ b/config/crd/bases/octavia.openstack.org_octaviaapis.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.10.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: octaviaapis.octavia.openstack.org spec: diff --git a/config/crd/bases/octavia.openstack.org_octavias.yaml b/config/crd/bases/octavia.openstack.org_octavias.yaml index 919203ea..8d2217f3 100644 --- a/config/crd/bases/octavia.openstack.org_octavias.yaml +++ b/config/crd/bases/octavia.openstack.org_octavias.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.10.0 + controller-gen.kubebuilder.io/version: v0.11.1 creationTimestamp: null name: octavias.octavia.openstack.org spec: