From 9fdc0e6575a5bc659b9ce85a900fd9a6a0bfdd74 Mon Sep 17 00:00:00 2001 From: Muhammad Faizan Date: Wed, 18 Sep 2024 09:55:16 +0200 Subject: [PATCH] chore: replace prow build job waiting with github action (#433) * replace prow build job waiting with github action * updated * updated * updated * updated --- .github/workflows/create-release.yaml | 46 +++++++- .github/workflows/pull-e2e-test.yml | 112 ++++++++++++++++--- .github/workflows/pull-e2e-upgrade-test.yaml | 88 --------------- .github/workflows/push-e2e-upgrade-test.yaml | 49 +++++--- 4 files changed, 174 insertions(+), 121 deletions(-) delete mode 100644 .github/workflows/pull-e2e-upgrade-test.yaml diff --git a/.github/workflows/create-release.yaml b/.github/workflows/create-release.yaml index de99a260..09107204 100644 --- a/.github/workflows/create-release.yaml +++ b/.github/workflows/create-release.yaml @@ -40,6 +40,7 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 + token: ${{ secrets.GIT_BOT_TOKEN }} # creating git tag using bot token because GITHUB_TOKEN would not trigger build workflow (https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow). - name: Create changelog env: @@ -54,14 +55,13 @@ jobs: RELEASE_ID=$(./.github/scripts/create_draft_release.sh ${{ github.event.inputs.version }}) # this will use the CHANGELOG.md from the step 'Create changelog' echo "release_id=$RELEASE_ID" >> $GITHUB_OUTPUT - - name: Trigger 'release-nats-manager-build' prow job + - name: Add lightweight tag to trigger release build job + env: + GITHUB_TOKEN: ${{ secrets.GIT_BOT_TOKEN }} # creating git tag using bot token because GITHUB_TOKEN would not trigger build workflow (https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow). run: | git tag ${{ github.event.inputs.version }} git push origin ${{ github.event.inputs.version }} - - name: Wait for 'release-nats-manager-build' - run: ./.github/scripts/check-prow-build-job.sh ${{ github.ref_name }} 600 10 30 - - name: Create and upload nats-manager.yaml and nats-default-cr.yaml env: KUSTOMIZE_VERSION: "v4.5.6" @@ -71,9 +71,45 @@ jobs: outputs: release_id: ${{ steps.create-draft.outputs.release_id }} + wait-for-build-job: + name: Wait for build job + needs: [ create-draft ] + runs-on: ubuntu-latest + + steps: + - name: Checkout eventing-tools + uses: actions/checkout@v4 + with: + repository: 'kyma-project/eventing-tools' + path: 'kyma-project/eventing-tools' + ref: main + sparse-checkout: 'scripts/wait-for-commit-check' + + - name: Setup python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + cache: 'pip' + + - name: Install requirements + run: | + pip install -r $GITHUB_WORKSPACE/kyma-project/eventing-tools/scripts/wait-for-commit-check/requirements.txt + + - name: wait for build + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPOSITORY_FULL_NAME: ${{ github.repository_owner }}/nats-manager + GIT_REF: ${{ github.event.inputs.version }} + # The re-usable image-builder workflow from neighbors appends the "Build image" suffix to the check run name. + GIT_CHECK_RUN_NAME: "build-${{ github.event.inputs.version }} / Build image" + INTERVAL: 60 + TIMEOUT: 900 + run: | + python $GITHUB_WORKSPACE/kyma-project/eventing-tools/scripts/wait-for-commit-check/run.py + publish-release: name: Publish release - needs: [verify-release-status, create-draft] + needs: [verify-release-status, create-draft, wait-for-build-job] runs-on: ubuntu-latest steps: diff --git a/.github/workflows/pull-e2e-test.yml b/.github/workflows/pull-e2e-test.yml index b3488503..7990ab06 100644 --- a/.github/workflows/pull-e2e-test.yml +++ b/.github/workflows/pull-e2e-test.yml @@ -15,7 +15,44 @@ on: - "sec-scanners-config.yaml" jobs: + wait-for-build-job: + name: Wait for build job + runs-on: ubuntu-latest + + steps: + - name: Checkout eventing-tools + uses: actions/checkout@v4 + with: + repository: 'kyma-project/eventing-tools' + path: 'kyma-project/eventing-tools' + ref: main + sparse-checkout: 'scripts/wait-for-commit-check' + + - name: Setup python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + cache: 'pip' + + - name: Install requirements + run: | + pip install -r $GITHUB_WORKSPACE/kyma-project/eventing-tools/scripts/wait-for-commit-check/requirements.txt + + - name: Wait for build job + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPOSITORY_FULL_NAME: ${{ github.repository_owner }}/nats-manager + GIT_REF: "${{ github.event.pull_request.head.sha }}" # Note: 'github.event.pull_request.head.sha' is not same as 'github.sha' on pull requests. + # The re-usable image-builder workflow from neighbors appends the "Build image" suffix to the check run name. + GIT_CHECK_RUN_NAME: "build / Build image" + INTERVAL: 60 + TIMEOUT: 900 + run: | + python $GITHUB_WORKSPACE/kyma-project/eventing-tools/scripts/wait-for-commit-check/run.py + e2e: + name: e2e + needs: [ wait-for-build-job ] runs-on: ubuntu-latest steps: - name: Checkout @@ -45,19 +82,6 @@ jobs: run: | make install IMG=$DOCKER_IMAGE - - name: Wait for the 'pull-nats-manager-build' job to succeed - uses: kyma-project/wait-for-commit-status-action@2b3ffe09af8b6f40e1213d5fb7f91a7bd41ffb20 - with: - context: "pull-nats-manager-build" - commit_ref: "${{ github.event.pull_request.head.sha }}" # Note: 'github.event.pull_request.head.sha' is not same as 'github.sha' on pull requests. - timeout: 600000 # 10 minutes in milliseconds - # The check interval is kept long otherwise it will exhaust the GitHub rate limit (More info: https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#rate-limiting) - check_interval: 60000 # 1 minute in milliseconds - env: - GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" - GITHUB_OWNER: "${{ github.repository_owner }}" - GITHUB_REPO: "nats-manager" - - name: Create kyma-system namespace run: | kubectl create namespace kyma-system @@ -116,5 +140,63 @@ jobs: run: | kubectl get nats --all-namespaces -# references: -# wait for other gh checks to finish: https://github.com/marketplace/actions/wait-for-check + e2e-upgrade: # This job tests the upgrade of NATS module from latest image of the main branch to the current commit. + name: e2e-upgrade + needs: [ wait-for-build-job ] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Cache Go dependencies + uses: actions/setup-go@v5 + with: + go-version-file: "./go.mod" + check-latest: true + cache-dependency-path: "./go.sum" + + - run: go version + + - name: Install k3d tools + run: | + make -C hack/ci/ install-k3d-tools + + - name: Install Kyma CLI & setup k3d cluster using kyma CLI + run: | + make kyma + make -C hack/ci/ create-k3d + kubectl version + kubectl cluster-info + + - name: Install latest NATS manager from main branch + run: | + make -C hack/ci/ create-kyma-system-ns + make deploy IMG=europe-docker.pkg.dev/kyma-project/prod/nats-manager:main + + - name: Setup & test NATS CR + run: | + make e2e-setup + + - name: Install the new NATS manager from current commit + run: | + make deploy IMG=${DOCKER_IMAGE} + + - name: Wait for new changes to be reflected + # Waits for NATS-manager image to be updated and NATS CR readiness. + run: | + export MANAGER_IMAGE=${DOCKER_IMAGE} + make e2e-setup + + - name: Run NATS bench + run: | + go install github.com/nats-io/natscli/nats@latest + export PATH=$HOME/go/bin:$PATH + make e2e-bench + + - name: Test NATS-server + run: | + make e2e-nats-server + + - name: Cleanup NATS CR + run: | + make e2e-cleanup diff --git a/.github/workflows/pull-e2e-upgrade-test.yaml b/.github/workflows/pull-e2e-upgrade-test.yaml deleted file mode 100644 index 18d7c9d0..00000000 --- a/.github/workflows/pull-e2e-upgrade-test.yaml +++ /dev/null @@ -1,88 +0,0 @@ -name: pull-e2e-upgrade-test - -env: - DOCKER_IMAGE: europe-docker.pkg.dev/kyma-project/dev/nats-manager:PR-${{ github.event.number }} - E2E_LOG_LEVEL: debug - KYMA_STABILITY: "unstable" - KYMA: "./hack/kyma" - -on: - pull_request: - branches: ["main"] - paths-ignore: - - "docs/**" - - "**.md" - - "sec-scanners-config.yaml" - -jobs: - e2e-upgrade: # This job tests the upgrade of NATS module from latest image of the main branch to the current commit. - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Cache Go dependencies - uses: actions/setup-go@v5 - with: - go-version-file: "./go.mod" - check-latest: true - cache-dependency-path: "./go.sum" - - - run: go version - - - name: Install k3d tools - run: | - make -C hack/ci/ install-k3d-tools - - - name: Install Kyma CLI & setup k3d cluster using kyma CLI - run: | - make kyma - make -C hack/ci/ create-k3d - kubectl version - kubectl cluster-info - - - name: Install latest NATS manager from main branch - run: | - make -C hack/ci/ create-kyma-system-ns - make deploy IMG=europe-docker.pkg.dev/kyma-project/prod/nats-manager:main - - - name: Setup & test NATS CR - run: | - make e2e-setup - - - name: Wait for the 'pull-nats-manager-build' job to succeed - uses: kyma-project/wait-for-commit-status-action@2b3ffe09af8b6f40e1213d5fb7f91a7bd41ffb20 - with: - context: "pull-nats-manager-build" - commit_ref: "${{ github.event.pull_request.head.sha }}" # Note: 'github.event.pull_request.head.sha' is not same as 'github.sha' on pull requests. - timeout: 600000 # 10 minutes in milliseconds - # The check interval is kept long otherwise it will exhaust the GitHub rate limit (More info: https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#rate-limiting) - check_interval: 60000 # 1 minute in milliseconds - env: - GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" - GITHUB_OWNER: "${{ github.repository_owner }}" - GITHUB_REPO: "nats-manager" - - - name: Install the new NATS manager from current commit - run: | - make deploy IMG=${DOCKER_IMAGE} - - - name: Wait for new changes to be reflected - # Waits for NATS-manager image to be updated and NATS CR readiness. - run: | - export MANAGER_IMAGE=${DOCKER_IMAGE} - make e2e-setup - - - name: Run NATS bench - run: | - go install github.com/nats-io/natscli/nats@latest - export PATH=$HOME/go/bin:$PATH - make e2e-bench - - - name: Test NATS-server - run: | - make e2e-nats-server - - - name: Cleanup NATS CR - run: | - make e2e-cleanup diff --git a/.github/workflows/push-e2e-upgrade-test.yaml b/.github/workflows/push-e2e-upgrade-test.yaml index 17b70e49..7a11bf4c 100644 --- a/.github/workflows/push-e2e-upgrade-test.yaml +++ b/.github/workflows/push-e2e-upgrade-test.yaml @@ -15,7 +15,43 @@ on: - "sec-scanners-config.yaml" jobs: + wait-for-build-job: + name: Wait for build job + runs-on: ubuntu-latest + + steps: + - name: Checkout eventing-tools + uses: actions/checkout@v4 + with: + repository: 'kyma-project/eventing-tools' + path: 'kyma-project/eventing-tools' + ref: main + sparse-checkout: 'scripts/wait-for-commit-check' + + - name: Setup python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + cache: 'pip' + + - name: Install requirements + run: | + pip install -r $GITHUB_WORKSPACE/kyma-project/eventing-tools/scripts/wait-for-commit-check/requirements.txt + + - name: Wait for build job + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPOSITORY_FULL_NAME: ${{ github.repository_owner }}/nats-manager + GIT_REF: "${{ github.sha }}" + # The re-usable image-builder workflow from neighbors appends the "Build image" suffix to the check run name. + GIT_CHECK_RUN_NAME: "build / Build image" + INTERVAL: 60 + TIMEOUT: 900 + run: | + python $GITHUB_WORKSPACE/kyma-project/eventing-tools/scripts/wait-for-commit-check/run.py + e2e-upgrade: # This job tests the upgrade of NATS module from latest release from fast channel to current commit. + needs: [ wait-for-build-job ] runs-on: ubuntu-latest steps: - name: Checkout @@ -50,19 +86,6 @@ jobs: run: | make e2e-setup - - name: Wait for the 'post-nats-manager-build' job to succeed - uses: kyma-project/wait-for-commit-status-action@2b3ffe09af8b6f40e1213d5fb7f91a7bd41ffb20 - with: - context: "post-nats-manager-build" - commit_ref: "${{ github.sha }}" - timeout: 600000 # 10 minutes in milliseconds - # The check interval is kept long otherwise it will exhaust the GitHub rate limit (More info: https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#rate-limiting) - check_interval: 60000 # 1 minute in milliseconds - env: - GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" - GITHUB_OWNER: "${{ github.repository_owner }}" - GITHUB_REPO: "nats-manager" - - name: Install the new NATS manager from current commit env: COMMIT_SHA: "${{ github.sha }}"