From 9ee786be04fbcc2648c3d5d99edb0c6d9ab8125f Mon Sep 17 00:00:00 2001 From: Karel Suta Date: Fri, 7 Jul 2023 11:09:14 +0200 Subject: [PATCH] Use CodeFlare app token to push PR into OpenShift community operators repository --- .github/workflows/tag-and-build.yml | 89 +--------------------------- .github/workflows/tag-and-buildx.yml | 58 ++++++++++++++++++ Makefile | 4 +- 3 files changed, 63 insertions(+), 88 deletions(-) create mode 100644 .github/workflows/tag-and-buildx.yml diff --git a/.github/workflows/tag-and-build.yml b/.github/workflows/tag-and-build.yml index 413ccf2d8..86b111585 100644 --- a/.github/workflows/tag-and-build.yml +++ b/.github/workflows/tag-and-build.yml @@ -46,96 +46,13 @@ jobs: runs-on: ubuntu-latest # Permission required to create a release - permissions: - contents: write + permissions: write-all steps: - uses: actions/checkout@v3 - - name: Verify that release doesn't exist yet - shell: bash {0} - run: | - gh release view ${{ github.event.inputs.version }} - status=$? - if [[ $status -eq 0 ]]; then - echo "Release ${{ github.event.inputs.version }} already exists." - exit 1 - fi - env: - GITHUB_TOKEN: ${{ github.TOKEN }} - - - name: Activate cache - uses: actions/cache@v3 - with: - path: /cache - key: ${{ runner.os }}-cache-${{ hashFiles('**/go.sum', '.pre-commit-config.yaml') }} - - - name: Install operator-sdk - run: make install-operator-sdk - - - name: Login to Quay.io - uses: redhat-actions/podman-login@v1 - with: - username: ${{ secrets.QUAY_ID }} - password: ${{ secrets.QUAY_TOKEN }} - registry: quay.io - - - name: Image Build and Push - run: | - make build - make image-build -e IMG=quay.io/${{ github.event.inputs.quay-organization }}/codeflare-operator:${{ github.event.inputs.version }} - make image-push -e IMG=quay.io/${{ github.event.inputs.quay-organization }}/codeflare-operator:${{ github.event.inputs.version }} - - - name: Image Push as stable tag - if: ${{ inputs.is-stable }} - run: | - podman tag quay.io/${{ github.event.inputs.quay-organization }}/codeflare-operator:${{ github.event.inputs.version }} quay.io/${{ github.event.inputs.quay-organization }}/codeflare-operator:stable - make image-push -e IMG=quay.io/${{ github.event.inputs.quay-organization }}/codeflare-operator:stable - - name: Build bundle and create PR in OpenShift community operators repository run: | - git config --global user.email "codeflare-ci@redhat.com" - git config --global user.name "CodeFlare CI" - make openshift-community-operator-release - env: - VERSION: ${{ github.event.inputs.version }} - PREVIOUS_VERSION: ${{ github.event.inputs.replaces }} - INSTASCALE_VERSION: ${{ github.event.inputs.instascale-version }} - MCAD_VERSION: ${{ github.event.inputs.mcad-version }} - GH_TOKEN: ${{ secrets.GH_PAT }} - IMAGE_ORG_BASE: quay.io/${{ github.event.inputs.quay-organization }} - OPERATORS_REPO_FORK_ORG: ${{ github.event.inputs.community-operators-prod-fork-organization }} - OPERATORS_REPO_ORG: ${{ github.event.inputs.community-operators-prod-organization }} - - - name: Adjust Compatibility Matrix in readme - run: | - sed -i -E "s/(.*CodeFlare Operator.*)v[0-9]+\.[0-9]+\.[0-9]+(.*)/\1${{ github.event.inputs.version }}\2/" README.md - sed -i -E "s/(.*Multi-Cluster App Dispatcher.*)v[0-9]+\.[0-9]+\.[0-9]+(.*)/\1${{ github.event.inputs.mcad-version }}\2/" README.md - sed -i -E "s/(.*CodeFlare-SDK.*)v[0-9]+\.[0-9]+\.[0-9]+(.*)/\1${{ github.event.inputs.codeflare-sdk-version }}\2/" README.md - sed -i -E "s/(.*InstaScale.*)v[0-9]+\.[0-9]+\.[0-9]+(.*)/\1${{ github.event.inputs.instascale-version }}\2/" README.md - - - name: Adjust MCAD and InstaScale dependencies in the code - run: | - sed -i -E "s/(.*MCAD_VERSION \?= )v[0-9]+\.[0-9]+\.[0-9]+(.*)/\1${{ github.event.inputs.mcad-version }}\2/" Makefile - sed -i -E "s/(.*INSTASCALE_VERSION \?= )v[0-9]+\.[0-9]+\.[0-9]+(.*)/\1${{ github.event.inputs.instascale-version }}\2/" Makefile - sed -i -E "s/(.*instascale-controller:)v[0-9]+\.[0-9]+\.[0-9]+(.*)/\1${{ github.event.inputs.instascale-version }}\2/" controllers/testdata/instascale_test_results/case_1/deployment.yaml - sed -i -E "s/(.*instascale-controller:)v[0-9]+\.[0-9]+\.[0-9]+(.*)/\1${{ github.event.inputs.instascale-version }}\2/" controllers/testdata/instascale_test_results/case_2/deployment.yaml - - - name: Commit readme changes back to repository - uses: stefanzweifel/git-auto-commit-action@v4 - with: - commit_message: Update dependency versions for release ${{ github.event.inputs.version }} - file_pattern: 'README.md controllers/defaults.go *.yaml *.tmpl Makefile' - - - name: Creates a release in GitHub - run: | - gh release create ${{ github.event.inputs.version }} --target ${{ github.ref }} --generate-notes - # Edit notes to add there compatibility matrix - sed --null-data -E "s/(.*<\!-- Compatibility Matrix start -->)(.*)(<\!-- Compatibility Matrix end -->.*)/\2/" README.md > release-notes.md - echo "" >> release-notes.md - echo "$(gh release view --json body --jq .body)" >> release-notes.md - gh release edit ${{ github.event.inputs.version }} --notes-file release-notes.md - rm release-notes.md + gh pr create --repo project-codeflare/community-operators-prod --title "CodeFlare 0.0.5" --body "New release of codeflare operator" --head sutaakar:codeflare-release-0.0.5 --base main env: - GITHUB_TOKEN: ${{ github.TOKEN }} - shell: bash + GH_TOKEN: ${{ secrets.CODEFLARE_MACHINE_ACCOUNT_TOKEN }} diff --git a/.github/workflows/tag-and-buildx.yml b/.github/workflows/tag-and-buildx.yml new file mode 100644 index 000000000..ababcfe1e --- /dev/null +++ b/.github/workflows/tag-and-buildx.yml @@ -0,0 +1,58 @@ +# This workflow will build the CodeFlare Operator image and push it to the project-codeflare image registry + +name: Tag and Releasex +on: + workflow_dispatch: + inputs: + version: + description: 'Tag to be used for operator image' + required: true + default: 'v0.0.0-dev' + replaces: + description: 'The previous semantic version that this tag replaces.' + required: true + default: 'v0.0.0-dev' + mcad-version: + description: 'Published version of multi-cluster-app-dispatcher' + required: true + default: 'v0.0.0-dev' + codeflare-sdk-version: + description: 'Published version of CodeFlare-SDK' + required: true + default: 'v0.0.0-dev' + instascale-version: + description: 'Published version of InstaScale' + required: true + default: 'v0.0.0-dev' + is-stable: + description: 'Select if the built image should be tagged as stable' + required: true + type: boolean + quay-organization: + description: 'Quay organization used to push the built images to' + required: true + default: 'project-codeflare' + community-operators-prod-fork-organization: + description: 'Owner of forked community-operators-prod repository used to push bundle files to' + required: true + default: 'project-codeflare' + community-operators-prod-organization: + description: 'Owner of target community-operators-prod repository used to open a PR against' + required: true + default: 'redhat-openshift-ecosystem' + +jobs: + push: + runs-on: ubuntu-latest + + # Permission required to create a release + permissions: write-all + + steps: + - uses: actions/checkout@v3 + + - name: Build bundle and create PR in OpenShift community operators repository + run: | + gh pr create --repo project-codeflare/community-operators-prod --title "CodeFlare 0.0.5" --body "New release of codeflare operator" --head sutaakar:codeflare-release-0.0.5 --base main + env: + GH_TOKEN: ${{ secrets.CODEFLARE_MACHINE_ACCOUNT_TOKEN }} diff --git a/Makefile b/Makefile index ef3a05be2..c7605af14 100644 --- a/Makefile +++ b/Makefile @@ -368,11 +368,11 @@ bundle-push: ## Push the bundle image. .PHONY: openshift-community-operator-release openshift-community-operator-release: install-gh-cli bundle ## build bundle and create PR in OpenShift community operators repository - git clone https://$(GH_TOKEN)@github.com/$(OPERATORS_REPO_FORK_ORG)/community-operators-prod.git + git clone https://x-access-token:$(GH_TOKEN)@github.com/$(OPERATORS_REPO_FORK_ORG)/community-operators-prod.git cd community-operators-prod && git remote add upstream https://github.com/$(OPERATORS_REPO_ORG)/community-operators-prod.git && git pull upstream main && git push origin main cp -r bundle community-operators-prod/operators/codeflare-operator/$(BUNDLE_VERSION) cd community-operators-prod && git checkout -b codeflare-release-$(BUNDLE_VERSION) && git add operators/codeflare-operator/$(BUNDLE_VERSION)/* && git commit -m "add bundle manifests codeflare version $(BUNDLE_VERSION)" && git push origin codeflare-release-$(BUNDLE_VERSION) - gh pr create --repo $(OPERATORS_REPO_FORK_ORG)/community-operators-prod --title "CodeFlare $(BUNDLE_VERSION)" --body "New release of codeflare operator" --head $(OPERATORS_REPO_ORG):codeflare-release-$(BUNDLE_VERSION) --base main + gh pr create --repo $(OPERATORS_REPO_ORG)/community-operators-prod --title "CodeFlare $(BUNDLE_VERSION)" --body "New release of codeflare operator" --head $(OPERATORS_REPO_FORK_ORG):codeflare-release-$(BUNDLE_VERSION) --base main rm -rf community-operators-prod .PHONY: opm