From bffed8e7d985072d6d4b529f5f8e02e3396b8f26 Mon Sep 17 00:00:00 2001 From: Alexandre Alves Date: Wed, 13 Nov 2024 14:50:16 +0000 Subject: [PATCH 1/4] create nightly tests for extension workflows in branch 'master' + adjustments needed for the workflows in test to be testable --- .github/workflows/build-extension-catalog.yml | 37 +++++- .github/workflows/build-extension-charts.yml | 41 +++++- .github/workflows/release-shell-pkg.yaml | 35 +++++- .../workflows/test-extension-workflows.yml | 117 ++++++++++++++++++ 4 files changed, 217 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/test-extension-workflows.yml diff --git a/.github/workflows/build-extension-catalog.yml b/.github/workflows/build-extension-catalog.yml index 2a81b51b361..2f4b7c52d08 100644 --- a/.github/workflows/build-extension-catalog.yml +++ b/.github/workflows/build-extension-catalog.yml @@ -12,22 +12,43 @@ on: tagged_release: required: false type: string + is_test: + required: false + type: string + test_ext_repo: + required: false + type: string + test_ext_branch: + required: false + type: string secrets: registry_token: required: true + outputs: + build-extension-catalog-job-status: + value: ${{ jobs.build-extension-catalog.outputs.build-status }} jobs: build-extension-catalog: name: Build container image - if: github.ref_type == 'tag' || (github.ref == 'refs/heads/main' && github.event_name != 'pull_request') + if: github.ref_type == 'tag' || (github.ref == 'refs/heads/main' && github.event_name != 'pull_request') || inputs.is_test == 'true' runs-on: ubuntu-latest permissions: actions: write contents: read packages: write - + outputs: + build-status: ${{ job.status }} steps: - - name: Checkout repository + - if: inputs.is_test == 'true' + name: Checkout repository (test flow) + uses: actions/checkout@v4 + with: + repository: rancher/${{ inputs.test_ext_repo }} + ref: ${{ inputs.test_ext_branch }} + + - if: inputs.is_test != 'true' + name: Checkout repository (normal flow) uses: actions/checkout@v4 - name: Enable Corepack @@ -60,7 +81,7 @@ jobs: run: yarn - name: Parse Extension Name - if: github.ref_type == 'tag' + if: github.ref_type == 'tag' || inputs.is_test == 'true' id: parsed-name env: GH_TOKEN: ${{ github.token }} @@ -69,7 +90,13 @@ jobs: - name: Build and push UI image run: | - publish="yarn publish-pkgs -cp -r ${{ inputs.registry_target }} -o ${{ github.repository_owner }}" + publish="yarn publish-pkgs -c" + + if [[ "${{ inputs.is_test }}" != "true" ]]; then + publish="$publish -p" + fi + + publish="$publish -r ${{ inputs.registry_target }} -o ${{ github.repository_owner }}" if [[ -n "${{ inputs.tagged_release }}" ]]; then publish="$publish -t ${{ inputs.tagged_release }}" diff --git a/.github/workflows/build-extension-charts.yml b/.github/workflows/build-extension-charts.yml index 0cb43d4408d..edba881700d 100644 --- a/.github/workflows/build-extension-charts.yml +++ b/.github/workflows/build-extension-charts.yml @@ -9,6 +9,20 @@ on: tagged_release: required: true type: string + is_test: + required: false + type: string + test_ext_repo: + required: false + type: string + test_ext_branch: + required: false + type: string + outputs: + build-job-status: + value: ${{ jobs.build-extension-artifact.outputs.build-status }} + release-job-status: + value: ${{ jobs.release.outputs.release-status }} env: ACTIONS_RUNNER_DEBUG: false @@ -26,8 +40,19 @@ jobs: permissions: actions: write contents: read + outputs: + build-status: ${{ job.status }} steps: - - name: Checkout + - if: inputs.is_test == 'true' + name: Checkout (test flow) + uses: actions/checkout@v4 + with: + repository: rancher/${{ inputs.test_ext_repo }} + ref: ${{ inputs.test_ext_branch }} + fetch-depth: 0 + + - if: inputs.is_test != 'true' + name: Checkout (normal flow) uses: actions/checkout@v4 with: fetch-depth: 0 @@ -55,7 +80,7 @@ jobs: run: yarn - name: Parse Extension Name - if: github.ref_type == 'tag' + if: github.ref_type == 'tag' || inputs.is_test == 'true' id: parsed-name env: GH_TOKEN: ${{ github.token }} @@ -72,10 +97,14 @@ jobs: publish="$publish -t ${{ inputs.tagged_release }}" fi + if [[ "${{ inputs.is_test }}" == "true" ]]; then + publish="$publish -f" + fi + $publish - name: Upload charts artifact - if: github.ref_type == 'tag' || (github.ref == 'refs/heads/main' && github.event_name != 'pull_request') + if: github.ref_type == 'tag' || (github.ref == 'refs/heads/main' && github.event_name != 'pull_request') || inputs.is_test == 'true' uses: actions/upload-artifact@v3 with: name: charts @@ -83,7 +112,7 @@ jobs: release: name: Release Build - if: github.ref_type == 'tag' || (github.ref == 'refs/heads/main' && github.event_name != 'pull_request') + if: github.ref_type == 'tag' || (github.ref == 'refs/heads/main' && github.event_name != 'pull_request') || inputs.is_test != 'true' needs: build-extension-artifact runs-on: ubuntu-latest permissions: @@ -91,6 +120,8 @@ jobs: contents: write deployments: write pages: write + outputs: + release-status: ${{ job.status }} steps: - name: Checkout uses: actions/checkout@v4 @@ -119,4 +150,4 @@ jobs: charts_dir: ./charts/* env: CR_TOKEN: '${{ secrets.GITHUB_TOKEN }}' - CR_SKIP_EXISTING: true + CR_SKIP_EXISTING: true \ No newline at end of file diff --git a/.github/workflows/release-shell-pkg.yaml b/.github/workflows/release-shell-pkg.yaml index 9caef82bee0..1e414250782 100644 --- a/.github/workflows/release-shell-pkg.yaml +++ b/.github/workflows/release-shell-pkg.yaml @@ -5,15 +5,43 @@ on: tags: - 'shell-pkg-v*' - 'creators-pkg-v*' + workflow_call: + inputs: + tag: + required: false + type: string + is_test: + required: false + type: string + test_branch: + required: false + type: string + outputs: + build-release-shell-creators-status: + value: ${{ jobs.build.outputs.build-status }} jobs: + build: runs-on: ubuntu-latest permissions: contents: read packages: write + if: github.repository == 'rancher/dashboard' && (github.event_name == 'workflow_call' || (github.event_name == 'push' && github.event.ref == 'refs/tags/${{ github.ref_name }}')) + outputs: + build-status: ${{ job.status }} steps: - - uses: actions/checkout@v3 + - if: inputs.is_test == 'true' && inputs.test_branch != '' + name: Checkout (test flow) + uses: actions/checkout@v3 + with: + persist-credentials: false + ref: ${{ inputs.test_branch }} + fetch-depth: 0 + + - if: inputs.is_test != 'true' + name: Checkout (normal flow) + uses: actions/checkout@v3 with: fetch-depth: 0 persist-credentials: false @@ -29,7 +57,7 @@ jobs: - name: Check Tags Version Matching env: - TAG: ${{github.ref_name}} + TAG: ${{ inputs.tag || github.ref_name }} run: ./.github/workflows/scripts/check-package-tag-version.sh shell: bash @@ -59,5 +87,6 @@ jobs: - name: Publish Shell Package to npm run: ./shell/scripts/publish-shell.sh --npm env: - TAG: ${{github.ref_name}} + TAG: ${{ inputs.tag || github.ref_name }} + DRY_RUN: ${{ inputs.is_test }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/test-extension-workflows.yml b/.github/workflows/test-extension-workflows.yml new file mode 100644 index 00000000000..e6a5adbb3c9 --- /dev/null +++ b/.github/workflows/test-extension-workflows.yml @@ -0,0 +1,117 @@ +name: Test Extension workflows + +on: + schedule: + - cron: "0 0 * * *" + +defaults: + run: + shell: bash + working-directory: ./ + +jobs: + retrieve-tags-master: + runs-on: ubuntu-latest + outputs: + SHELL_TAG: ${{ steps.retrieve-data.outputs.SHELL_TAG }} + CREATORS_TAG: ${{ steps.retrieve-data.outputs.CREATORS_TAG }} + ECI_TAG: ${{ steps.retrieve-data.outputs.ECI_TAG }} + EXTENSIONS_TAG: ${{ steps.retrieve-data.outputs.EXTENSIONS_TAG }} + CURR_JOB_ID: ${{ github.job }} + tags-job-status: ${{ job.status }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: master + + - name: Retrieve Shell and Creators versions + run: source ./shell/scripts/retrieve-versions.sh + id: retrieve-data + shell: bash + test-build-extension-charts-master: + needs: retrieve-tags-master + uses: rancher/dashboard/.github/workflows/build-extension-charts.yml@master + permissions: + actions: write + contents: write + deployments: write + pages: write + with: + target_branch: 'gh-pages' + tagged_release: ${{ needs.retrieve-tags-master.outputs.EXTENSIONS_TAG }} + is_test: 'true' + test_ext_repo: 'ui-plugin-examples' + test_ext_branch: 'main' + test-build-extension-catalog-master: + needs: retrieve-tags-master + uses: rancher/dashboard/.github/workflows/build-extension-catalog.yml@master + permissions: + actions: write + contents: read + packages: write + with: + registry_target: ghcr.io + registry_user: ${{ github.actor }} + tagged_release: ${{ needs.retrieve-tags-master.outputs.ECI_TAG }} + is_test: 'true' + test_ext_repo: 'ui-plugin-examples' + test_ext_branch: 'main' + secrets: + registry_token: ${{ secrets.GITHUB_TOKEN }} + test-release-shell-pkg-master: + needs: retrieve-tags-master + uses: rancher/dashboard/.github/workflows/release-shell-pkg.yaml@master + with: + is_test: 'true' + test_branch: 'master' + tag: ${{ needs.retrieve-tags-master.outputs.SHELL_TAG }} + test-release-creators-pkg-master: + needs: retrieve-tags-master + uses: rancher/dashboard/.github/workflows/release-shell-pkg.yaml@master + with: + is_test: 'true' + test_branch: 'master' + tag: ${{ needs.retrieve-tags-master.outputs.CREATORS_TAG }} + + slack-message: + if: ${{ always() }} + runs-on: ubuntu-latest + needs: [retrieve-tags-master, test-build-extension-charts-master, test-build-extension-catalog-master, test-release-shell-pkg-master, test-release-creators-pkg-master] + steps: + - name: Slack message for workflow + if: always() + shell: bash + env: + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL_EXT_WFS }} + run: | + OUTPUT_ARRAY=("${{ needs.retrieve-tags-master.outputs.tags-job-status }}" "${{ needs.test-build-extension-charts-master.outputs.build-job-status }}" "${{ needs.test-build-extension-charts-master.outputs.release-job-status }}" "${{ needs.test-build-extension-catalog-master.outputs.build-extension-catalog-job-status }}" "${{ needs.test-release-shell-pkg-master.outputs.build-release-shell-creators-status }}" "${{ needs.test-release-creators-pkg-master.outputs.build-release-shell-creators-status }}") + + if [[ ${OUTPUT_ARRAY[@]} =~ "failure" ]]; then + MSG_PREFIX="Workflows testing for extensions failed! 🆘" + else + MSG_PREFIX="Workflows testing for extensions succedded! ✅" + fi + + echo "message prefix ::: $MSG_PREFIX" + + TAGS_OUTPUT_STRING="status for retrieve-tags-master - build => ${{ needs.retrieve-tags-master.outputs.tags-job-status }}" + EXT_CHART_BUILD_OUTPUT_STRING="status for test-build-extension-charts-master - build => ${{ needs.test-build-extension-charts-master.outputs.build-job-status }}" + EXT_CHART_RELEASE_OUTPUT_STRING="status for test-build-extension-charts-master - release => ${{ needs.test-build-extension-charts-master.outputs.release-job-status }}" + EXT_CATALOG_BUILD_OUTPUT_STRING="status for test-build-extension-catalog-master - build => ${{ needs.test-build-extension-catalog-master.outputs.build-extension-catalog-job-status }}" + RELEASE_SHELL_PKG_OUTPUT_STRING="status for test-release-shell-pkg-master - release => ${{ needs.test-release-shell-pkg-master.outputs.build-release-shell-creators-status }}" + RELEASE_CREATORS_PKG_OUTPUT_STRING="status for test-release-creators-pkg-master - release => ${{ needs.test-release-creators-pkg-master.outputs.build-release-shell-creators-status }}" + + echo $TAGS_OUTPUT_STRING + echo $EXT_CHART_BUILD_OUTPUT_STRING + echo $EXT_CHART_RELEASE_OUTPUT_STRING + echo $EXT_CATALOG_BUILD_OUTPUT_STRING + echo $RELEASE_SHELL_PKG_OUTPUT_STRING + echo $RELEASE_CREATORS_PKG_OUTPUT_STRING + + MSG="$MSG_PREFIX ::: $TAGS_OUTPUT_STRING ::: $EXT_CHART_BUILD_OUTPUT_STRING ::: $EXT_CHART_RELEASE_OUTPUT_STRING ::: $EXT_CATALOG_BUILD_OUTPUT_STRING ::: $RELEASE_SHELL_PKG_OUTPUT_STRING ::: $RELEASE_CREATORS_PKG_OUTPUT_STRING" + + echo "message sent: $MSG" + + curl -X POST -H 'Content-type: application/json; charset=utf-8' \ + --data '{ branch: "master", message: $MSG }' $SLACK_WEBHOOK \ No newline at end of file From 3449f74a9abcf9c16a7fae02fa1241f7edf99d4b Mon Sep 17 00:00:00 2001 From: Alexandre Alves Date: Thu, 14 Nov 2024 12:00:56 +0000 Subject: [PATCH 2/4] add missing script changes + add workflow to run tests against release-2.9 --- ...ml => test-extension-workflows-master.yml} | 0 .../test-extension-workflows-release-2.9.yml | 117 ++++++++++++++++++ shell/scripts/extension/parse-tag-name | 2 + shell/scripts/publish-shell.sh | 7 ++ shell/scripts/retrieve-versions.sh | 54 ++++++++ 5 files changed, 180 insertions(+) rename .github/workflows/{test-extension-workflows.yml => test-extension-workflows-master.yml} (100%) create mode 100644 .github/workflows/test-extension-workflows-release-2.9.yml create mode 100644 shell/scripts/retrieve-versions.sh diff --git a/.github/workflows/test-extension-workflows.yml b/.github/workflows/test-extension-workflows-master.yml similarity index 100% rename from .github/workflows/test-extension-workflows.yml rename to .github/workflows/test-extension-workflows-master.yml diff --git a/.github/workflows/test-extension-workflows-release-2.9.yml b/.github/workflows/test-extension-workflows-release-2.9.yml new file mode 100644 index 00000000000..dd7e5242b69 --- /dev/null +++ b/.github/workflows/test-extension-workflows-release-2.9.yml @@ -0,0 +1,117 @@ +name: Test Extension workflows + +on: + schedule: + - cron: "0 0 * * *" + +defaults: + run: + shell: bash + working-directory: ./ + +jobs: + retrieve-tags-release-2-dot-9: + runs-on: ubuntu-latest + outputs: + SHELL_TAG: ${{ steps.retrieve-data.outputs.SHELL_TAG }} + CREATORS_TAG: ${{ steps.retrieve-data.outputs.CREATORS_TAG }} + ECI_TAG: ${{ steps.retrieve-data.outputs.ECI_TAG }} + EXTENSIONS_TAG: ${{ steps.retrieve-data.outputs.EXTENSIONS_TAG }} + CURR_JOB_ID: ${{ github.job }} + tags-job-status: ${{ job.status }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: release-2.9 + + - name: Retrieve Shell and Creators versions + run: source ./shell/scripts/retrieve-versions.sh + id: retrieve-data + shell: bash + test-build-extension-charts-release-2-dot-9: + needs: retrieve-tags-release-2-dot-9 + uses: rancher/dashboard/.github/workflows/build-extension-charts.yml@release-2.9 + permissions: + actions: write + contents: write + deployments: write + pages: write + with: + target_branch: 'gh-pages' + tagged_release: ${{ needs.retrieve-tags-release-2-dot-9.outputs.EXTENSIONS_TAG }} + is_test: 'true' + test_ext_repo: 'ui-plugin-examples' + test_ext_branch: 'main' + test-build-extension-catalog-release-2-dot-9: + needs: retrieve-tags-release-2-dot-9 + uses: rancher/dashboard/.github/workflows/build-extension-catalog.yml@release-2.9 + permissions: + actions: write + contents: read + packages: write + with: + registry_target: ghcr.io + registry_user: ${{ github.actor }} + tagged_release: ${{ needs.retrieve-tags-release-2-dot-9.outputs.ECI_TAG }} + is_test: 'true' + test_ext_repo: 'ui-plugin-examples' + test_ext_branch: 'main' + secrets: + registry_token: ${{ secrets.GITHUB_TOKEN }} + test-release-shell-pkg-release-2-dot-9: + needs: retrieve-tags-release-2-dot-9 + uses: rancher/dashboard/.github/workflows/release-shell-pkg.yaml@release-2.9 + with: + is_test: 'true' + test_branch: 'release-2.9' + tag: ${{ needs.retrieve-tags-release-2-dot-9.outputs.SHELL_TAG }} + test-release-creators-pkg-release-2-dot-9: + needs: retrieve-tags-release-2-dot-9 + uses: rancher/dashboard/.github/workflows/release-shell-pkg.yaml@release-2.9 + with: + is_test: 'true' + test_branch: 'release-2.9' + tag: ${{ needs.retrieve-tags-release-2-dot-9.outputs.CREATORS_TAG }} + + slack-message: + if: ${{ always() }} + runs-on: ubuntu-latest + needs: [retrieve-tags-release-2-dot-9, test-build-extension-charts-release-2-dot-9, test-build-extension-catalog-release-2-dot-9, test-release-shell-pkg-release-2-dot-9, test-release-creators-pkg-release-2-dot-9] + steps: + - name: Slack message for workflow + if: always() + shell: bash + env: + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL_EXT_WFS }} + run: | + OUTPUT_ARRAY=("${{ needs.retrieve-tags-release-2-dot-9.outputs.tags-job-status }}" "${{ needs.test-build-extension-charts-release-2-dot-9.outputs.build-job-status }}" "${{ needs.test-build-extension-charts-release-2-dot-9.outputs.release-job-status }}" "${{ needs.test-build-extension-catalog-release-2-dot-9.outputs.build-extension-catalog-job-status }}" "${{ needs.test-release-shell-pkg-release-2-dot-9.outputs.build-release-shell-creators-status }}" "${{ needs.test-release-creators-pkg-release-2-dot-9.outputs.build-release-shell-creators-status }}") + + if [[ ${OUTPUT_ARRAY[@]} =~ "failure" ]]; then + MSG_PREFIX="Workflows testing for extensions failed! 🆘" + else + MSG_PREFIX="Workflows testing for extensions succedded! ✅" + fi + + echo "message prefix ::: $MSG_PREFIX" + + TAGS_OUTPUT_STRING="status for retrieve-tags-release-2-dot-9 - build => ${{ needs.retrieve-tags-release-2-dot-9.outputs.tags-job-status }}" + EXT_CHART_BUILD_OUTPUT_STRING="status for test-build-extension-charts-release-2-dot-9 - build => ${{ needs.test-build-extension-charts-release-2-dot-9.outputs.build-job-status }}" + EXT_CHART_RELEASE_OUTPUT_STRING="status for test-build-extension-charts-release-2-dot-9 - release => ${{ needs.test-build-extension-charts-release-2-dot-9.outputs.release-job-status }}" + EXT_CATALOG_BUILD_OUTPUT_STRING="status for test-build-extension-catalog-release-2-dot-9 - build => ${{ needs.test-build-extension-catalog-release-2-dot-9.outputs.build-extension-catalog-job-status }}" + RELEASE_SHELL_PKG_OUTPUT_STRING="status for test-release-shell-pkg-release-2-dot-9 - release => ${{ needs.test-release-shell-pkg-release-2-dot-9.outputs.build-release-shell-creators-status }}" + RELEASE_CREATORS_PKG_OUTPUT_STRING="status for test-release-creators-pkg-release-2-dot-9 - release => ${{ needs.test-release-creators-pkg-release-2-dot-9.outputs.build-release-shell-creators-status }}" + + echo $TAGS_OUTPUT_STRING + echo $EXT_CHART_BUILD_OUTPUT_STRING + echo $EXT_CHART_RELEASE_OUTPUT_STRING + echo $EXT_CATALOG_BUILD_OUTPUT_STRING + echo $RELEASE_SHELL_PKG_OUTPUT_STRING + echo $RELEASE_CREATORS_PKG_OUTPUT_STRING + + MSG="$MSG_PREFIX ::: $TAGS_OUTPUT_STRING ::: $EXT_CHART_BUILD_OUTPUT_STRING ::: $EXT_CHART_RELEASE_OUTPUT_STRING ::: $EXT_CATALOG_BUILD_OUTPUT_STRING ::: $RELEASE_SHELL_PKG_OUTPUT_STRING ::: $RELEASE_CREATORS_PKG_OUTPUT_STRING" + + echo "message sent: $MSG" + + curl -X POST -H 'Content-type: application/json; charset=utf-8' \ + --data '{ branch: "release-2.9", message: $MSG }' $SLACK_WEBHOOK \ No newline at end of file diff --git a/shell/scripts/extension/parse-tag-name b/shell/scripts/extension/parse-tag-name index e87e6bbff0b..ef19335b4af 100755 --- a/shell/scripts/extension/parse-tag-name +++ b/shell/scripts/extension/parse-tag-name @@ -4,6 +4,8 @@ GITHUB_RELEASE_TAG=$1 GITHUB_RUN_ID=$2 GITHUB_WORKFLOW_TYPE=$3 +echo "Parse tag name - evaluating release tag $GITHUB_RELEASE_TAG" + # Ensure "catalog" workflow release tag name does not match a pkg/ if [[ "${GITHUB_WORKFLOW_TYPE}" == "catalog" ]]; then for d in pkg/*/ ; do diff --git a/shell/scripts/publish-shell.sh b/shell/scripts/publish-shell.sh index e0e11671951..823a7f9289b 100755 --- a/shell/scripts/publish-shell.sh +++ b/shell/scripts/publish-shell.sh @@ -50,6 +50,13 @@ function publish() { PUBLISH_ARGS="--no-git-tag-version --access public --registry $NPM_REGISTRY --tag pre-release" fi + # when testing the workflow, we don't want to actually do an npm publish but only a dry run + if [ ${DRY_RUN} == "true" ]; then + PUBLISH_ARGS="$PUBLISH_ARGS --dry-run" + fi + + echo "Publish to NPM - arguments ::: ${PUBLISH_ARGS}" + echo "Publishing ${NAME} from ${FOLDER}" pushd ${FOLDER} >/dev/null diff --git a/shell/scripts/retrieve-versions.sh b/shell/scripts/retrieve-versions.sh new file mode 100644 index 00000000000..811aafcb202 --- /dev/null +++ b/shell/scripts/retrieve-versions.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +set -eo pipefail + +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" +BASE_DIR="$( + cd $SCRIPT_DIR && cd ../.. & + pwd +)" +SHELL_DIR=$BASE_DIR/shell +CREATORS_DIR=$BASE_DIR/creators/extension + +function generate_tag_export() { + NAME=$1 + + case $NAME in + "shell") + SHELL_V=$(jq -r .version ${SHELL_DIR}/package.json) + echo "SHELL_TAG=shell-pkg-v$SHELL_V" >> $GITHUB_OUTPUT + echo "Shell tag retrieved ::: ${SHELL_V}" + ;; + "creators") + CREATORS_V=$(jq -r .version ${CREATORS_DIR}/package.json) + echo "CREATORS_TAG=creators-pkg-v$CREATORS_V" >> $GITHUB_OUTPUT + echo "Creators tag retrieved ::: ${CREATORS_V}" + ;; + "extension") + REPO_NAME=$2 + BRANCH=$3 + EXTENSION=$4 + git clone https://github.com/rancher/$REPO_NAME.git + pushd ${BASE_DIR}/$REPO_NAME + + git checkout $BRANCH + + ECI_NAME=$(jq -r .name ./package.json) + ECI_VERSION=$(jq -r .version ./package.json) + EXTENSION_VERSION=$(jq -r .version pkg/$EXTENSION/package.json) + ECI_TAG_FULL=$ECI_NAME-$ECI_VERSION + EXTENSION_TAG_FULL=$EXTENSION-$EXTENSION_VERSION + + echo "ECI_TAG=$ECI_TAG_FULL" >> $GITHUB_OUTPUT + echo "EXTENSION_TAG=$EXTENSION_TAG_FULL" >> $GITHUB_OUTPUT + echo "ECI tag retrieved ::: ${ECI_TAG_FULL}" + echo "Extension tag retrieved ::: ${EXTENSION_TAG_FULL}" + + popd + ;; + esac +} + +generate_tag_export "shell" +generate_tag_export "creators" +generate_tag_export "extension" "ui-plugin-examples" "main" "clock" \ No newline at end of file From 32aad708d2b50f024e8fdb8a3664a3ae69dc18f1 Mon Sep 17 00:00:00 2001 From: Alexandre Alves Date: Thu, 14 Nov 2024 12:02:54 +0000 Subject: [PATCH 3/4] add workflow to run tests against release-2.8 --- .../test-extension-workflows-release-2.8.yml | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 .github/workflows/test-extension-workflows-release-2.8.yml diff --git a/.github/workflows/test-extension-workflows-release-2.8.yml b/.github/workflows/test-extension-workflows-release-2.8.yml new file mode 100644 index 00000000000..60474cee451 --- /dev/null +++ b/.github/workflows/test-extension-workflows-release-2.8.yml @@ -0,0 +1,117 @@ +name: Test Extension workflows + +on: + schedule: + - cron: "0 0 * * *" + +defaults: + run: + shell: bash + working-directory: ./ + +jobs: + retrieve-tags-release-2-dot-8: + runs-on: ubuntu-latest + outputs: + SHELL_TAG: ${{ steps.retrieve-data.outputs.SHELL_TAG }} + CREATORS_TAG: ${{ steps.retrieve-data.outputs.CREATORS_TAG }} + ECI_TAG: ${{ steps.retrieve-data.outputs.ECI_TAG }} + EXTENSIONS_TAG: ${{ steps.retrieve-data.outputs.EXTENSIONS_TAG }} + CURR_JOB_ID: ${{ github.job }} + tags-job-status: ${{ job.status }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: release-2.8 + + - name: Retrieve Shell and Creators versions + run: source ./shell/scripts/retrieve-versions.sh + id: retrieve-data + shell: bash + test-build-extension-charts-release-2-dot-8: + needs: retrieve-tags-release-2-dot-8 + uses: rancher/dashboard/.github/workflows/build-extension-charts.yml@release-2.8 + permissions: + actions: write + contents: write + deployments: write + pages: write + with: + target_branch: 'gh-pages' + tagged_release: ${{ needs.retrieve-tags-release-2-dot-8.outputs.EXTENSIONS_TAG }} + is_test: 'true' + test_ext_repo: 'ui-plugin-examples' + test_ext_branch: 'main' + test-build-extension-catalog-release-2-dot-8: + needs: retrieve-tags-release-2-dot-8 + uses: rancher/dashboard/.github/workflows/build-extension-catalog.yml@release-2.8 + permissions: + actions: write + contents: read + packages: write + with: + registry_target: ghcr.io + registry_user: ${{ github.actor }} + tagged_release: ${{ needs.retrieve-tags-release-2-dot-8.outputs.ECI_TAG }} + is_test: 'true' + test_ext_repo: 'ui-plugin-examples' + test_ext_branch: 'main' + secrets: + registry_token: ${{ secrets.GITHUB_TOKEN }} + test-release-shell-pkg-release-2-dot-8: + needs: retrieve-tags-release-2-dot-8 + uses: rancher/dashboard/.github/workflows/release-shell-pkg.yaml@release-2.8 + with: + is_test: 'true' + test_branch: 'release-2.8' + tag: ${{ needs.retrieve-tags-release-2-dot-8.outputs.SHELL_TAG }} + test-release-creators-pkg-release-2-dot-8: + needs: retrieve-tags-release-2-dot-8 + uses: rancher/dashboard/.github/workflows/release-shell-pkg.yaml@release-2.8 + with: + is_test: 'true' + test_branch: 'release-2.8' + tag: ${{ needs.retrieve-tags-release-2-dot-8.outputs.CREATORS_TAG }} + + slack-message: + if: ${{ always() }} + runs-on: ubuntu-latest + needs: [retrieve-tags-release-2-dot-8, test-build-extension-charts-release-2-dot-8, test-build-extension-catalog-release-2-dot-8, test-release-shell-pkg-release-2-dot-8, test-release-creators-pkg-release-2-dot-8] + steps: + - name: Slack message for workflow + if: always() + shell: bash + env: + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL_EXT_WFS }} + run: | + OUTPUT_ARRAY=("${{ needs.retrieve-tags-release-2-dot-8.outputs.tags-job-status }}" "${{ needs.test-build-extension-charts-release-2-dot-8.outputs.build-job-status }}" "${{ needs.test-build-extension-charts-release-2-dot-8.outputs.release-job-status }}" "${{ needs.test-build-extension-catalog-release-2-dot-8.outputs.build-extension-catalog-job-status }}" "${{ needs.test-release-shell-pkg-release-2-dot-8.outputs.build-release-shell-creators-status }}" "${{ needs.test-release-creators-pkg-release-2-dot-8.outputs.build-release-shell-creators-status }}") + + if [[ ${OUTPUT_ARRAY[@]} =~ "failure" ]]; then + MSG_PREFIX="Workflows testing for extensions failed! 🆘" + else + MSG_PREFIX="Workflows testing for extensions succedded! ✅" + fi + + echo "message prefix ::: $MSG_PREFIX" + + TAGS_OUTPUT_STRING="status for retrieve-tags-release-2-dot-8 - build => ${{ needs.retrieve-tags-release-2-dot-8.outputs.tags-job-status }}" + EXT_CHART_BUILD_OUTPUT_STRING="status for test-build-extension-charts-release-2-dot-8 - build => ${{ needs.test-build-extension-charts-release-2-dot-8.outputs.build-job-status }}" + EXT_CHART_RELEASE_OUTPUT_STRING="status for test-build-extension-charts-release-2-dot-8 - release => ${{ needs.test-build-extension-charts-release-2-dot-8.outputs.release-job-status }}" + EXT_CATALOG_BUILD_OUTPUT_STRING="status for test-build-extension-catalog-release-2-dot-8 - build => ${{ needs.test-build-extension-catalog-release-2-dot-8.outputs.build-extension-catalog-job-status }}" + RELEASE_SHELL_PKG_OUTPUT_STRING="status for test-release-shell-pkg-release-2-dot-8 - release => ${{ needs.test-release-shell-pkg-release-2-dot-8.outputs.build-release-shell-creators-status }}" + RELEASE_CREATORS_PKG_OUTPUT_STRING="status for test-release-creators-pkg-release-2-dot-8 - release => ${{ needs.test-release-creators-pkg-release-2-dot-8.outputs.build-release-shell-creators-status }}" + + echo $TAGS_OUTPUT_STRING + echo $EXT_CHART_BUILD_OUTPUT_STRING + echo $EXT_CHART_RELEASE_OUTPUT_STRING + echo $EXT_CATALOG_BUILD_OUTPUT_STRING + echo $RELEASE_SHELL_PKG_OUTPUT_STRING + echo $RELEASE_CREATORS_PKG_OUTPUT_STRING + + MSG="$MSG_PREFIX ::: $TAGS_OUTPUT_STRING ::: $EXT_CHART_BUILD_OUTPUT_STRING ::: $EXT_CHART_RELEASE_OUTPUT_STRING ::: $EXT_CATALOG_BUILD_OUTPUT_STRING ::: $RELEASE_SHELL_PKG_OUTPUT_STRING ::: $RELEASE_CREATORS_PKG_OUTPUT_STRING" + + echo "message sent: $MSG" + + curl -X POST -H 'Content-type: application/json; charset=utf-8' \ + --data '{ branch: "release-2.8", message: $MSG }' $SLACK_WEBHOOK \ No newline at end of file From eace22b896004c89740035e4c8268d21a6f5518e Mon Sep 17 00:00:00 2001 From: Alexandre Alves Date: Mon, 25 Nov 2024 15:56:34 +0000 Subject: [PATCH 4/4] adjust workflows to not use release-status output since it will never be populated as that job doesnt run in these workflow tests --- .github/workflows/build-extension-charts.yml | 2 -- .github/workflows/test-extension-workflows-master.yml | 6 ++---- .github/workflows/test-extension-workflows-release-2.8.yml | 6 ++---- .github/workflows/test-extension-workflows-release-2.9.yml | 6 ++---- 4 files changed, 6 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build-extension-charts.yml b/.github/workflows/build-extension-charts.yml index edba881700d..1e7720bb286 100644 --- a/.github/workflows/build-extension-charts.yml +++ b/.github/workflows/build-extension-charts.yml @@ -21,8 +21,6 @@ on: outputs: build-job-status: value: ${{ jobs.build-extension-artifact.outputs.build-status }} - release-job-status: - value: ${{ jobs.release.outputs.release-status }} env: ACTIONS_RUNNER_DEBUG: false diff --git a/.github/workflows/test-extension-workflows-master.yml b/.github/workflows/test-extension-workflows-master.yml index e6a5adbb3c9..7c12de63dc9 100644 --- a/.github/workflows/test-extension-workflows-master.yml +++ b/.github/workflows/test-extension-workflows-master.yml @@ -85,7 +85,7 @@ jobs: env: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL_EXT_WFS }} run: | - OUTPUT_ARRAY=("${{ needs.retrieve-tags-master.outputs.tags-job-status }}" "${{ needs.test-build-extension-charts-master.outputs.build-job-status }}" "${{ needs.test-build-extension-charts-master.outputs.release-job-status }}" "${{ needs.test-build-extension-catalog-master.outputs.build-extension-catalog-job-status }}" "${{ needs.test-release-shell-pkg-master.outputs.build-release-shell-creators-status }}" "${{ needs.test-release-creators-pkg-master.outputs.build-release-shell-creators-status }}") + OUTPUT_ARRAY=("${{ needs.retrieve-tags-master.outputs.tags-job-status }}" "${{ needs.test-build-extension-charts-master.outputs.build-job-status }}" "${{ needs.test-build-extension-catalog-master.outputs.build-extension-catalog-job-status }}" "${{ needs.test-release-shell-pkg-master.outputs.build-release-shell-creators-status }}" "${{ needs.test-release-creators-pkg-master.outputs.build-release-shell-creators-status }}") if [[ ${OUTPUT_ARRAY[@]} =~ "failure" ]]; then MSG_PREFIX="Workflows testing for extensions failed! 🆘" @@ -97,19 +97,17 @@ jobs: TAGS_OUTPUT_STRING="status for retrieve-tags-master - build => ${{ needs.retrieve-tags-master.outputs.tags-job-status }}" EXT_CHART_BUILD_OUTPUT_STRING="status for test-build-extension-charts-master - build => ${{ needs.test-build-extension-charts-master.outputs.build-job-status }}" - EXT_CHART_RELEASE_OUTPUT_STRING="status for test-build-extension-charts-master - release => ${{ needs.test-build-extension-charts-master.outputs.release-job-status }}" EXT_CATALOG_BUILD_OUTPUT_STRING="status for test-build-extension-catalog-master - build => ${{ needs.test-build-extension-catalog-master.outputs.build-extension-catalog-job-status }}" RELEASE_SHELL_PKG_OUTPUT_STRING="status for test-release-shell-pkg-master - release => ${{ needs.test-release-shell-pkg-master.outputs.build-release-shell-creators-status }}" RELEASE_CREATORS_PKG_OUTPUT_STRING="status for test-release-creators-pkg-master - release => ${{ needs.test-release-creators-pkg-master.outputs.build-release-shell-creators-status }}" echo $TAGS_OUTPUT_STRING echo $EXT_CHART_BUILD_OUTPUT_STRING - echo $EXT_CHART_RELEASE_OUTPUT_STRING echo $EXT_CATALOG_BUILD_OUTPUT_STRING echo $RELEASE_SHELL_PKG_OUTPUT_STRING echo $RELEASE_CREATORS_PKG_OUTPUT_STRING - MSG="$MSG_PREFIX ::: $TAGS_OUTPUT_STRING ::: $EXT_CHART_BUILD_OUTPUT_STRING ::: $EXT_CHART_RELEASE_OUTPUT_STRING ::: $EXT_CATALOG_BUILD_OUTPUT_STRING ::: $RELEASE_SHELL_PKG_OUTPUT_STRING ::: $RELEASE_CREATORS_PKG_OUTPUT_STRING" + MSG="$MSG_PREFIX ::: $TAGS_OUTPUT_STRING ::: $EXT_CHART_BUILD_OUTPUT_STRING ::: $EXT_CATALOG_BUILD_OUTPUT_STRING ::: $RELEASE_SHELL_PKG_OUTPUT_STRING ::: $RELEASE_CREATORS_PKG_OUTPUT_STRING" echo "message sent: $MSG" diff --git a/.github/workflows/test-extension-workflows-release-2.8.yml b/.github/workflows/test-extension-workflows-release-2.8.yml index 60474cee451..9ed04ef7b04 100644 --- a/.github/workflows/test-extension-workflows-release-2.8.yml +++ b/.github/workflows/test-extension-workflows-release-2.8.yml @@ -85,7 +85,7 @@ jobs: env: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL_EXT_WFS }} run: | - OUTPUT_ARRAY=("${{ needs.retrieve-tags-release-2-dot-8.outputs.tags-job-status }}" "${{ needs.test-build-extension-charts-release-2-dot-8.outputs.build-job-status }}" "${{ needs.test-build-extension-charts-release-2-dot-8.outputs.release-job-status }}" "${{ needs.test-build-extension-catalog-release-2-dot-8.outputs.build-extension-catalog-job-status }}" "${{ needs.test-release-shell-pkg-release-2-dot-8.outputs.build-release-shell-creators-status }}" "${{ needs.test-release-creators-pkg-release-2-dot-8.outputs.build-release-shell-creators-status }}") + OUTPUT_ARRAY=("${{ needs.retrieve-tags-release-2-dot-8.outputs.tags-job-status }}" "${{ needs.test-build-extension-charts-release-2-dot-8.outputs.build-job-status }}" "${{ needs.test-build-extension-catalog-release-2-dot-8.outputs.build-extension-catalog-job-status }}" "${{ needs.test-release-shell-pkg-release-2-dot-8.outputs.build-release-shell-creators-status }}" "${{ needs.test-release-creators-pkg-release-2-dot-8.outputs.build-release-shell-creators-status }}") if [[ ${OUTPUT_ARRAY[@]} =~ "failure" ]]; then MSG_PREFIX="Workflows testing for extensions failed! 🆘" @@ -97,19 +97,17 @@ jobs: TAGS_OUTPUT_STRING="status for retrieve-tags-release-2-dot-8 - build => ${{ needs.retrieve-tags-release-2-dot-8.outputs.tags-job-status }}" EXT_CHART_BUILD_OUTPUT_STRING="status for test-build-extension-charts-release-2-dot-8 - build => ${{ needs.test-build-extension-charts-release-2-dot-8.outputs.build-job-status }}" - EXT_CHART_RELEASE_OUTPUT_STRING="status for test-build-extension-charts-release-2-dot-8 - release => ${{ needs.test-build-extension-charts-release-2-dot-8.outputs.release-job-status }}" EXT_CATALOG_BUILD_OUTPUT_STRING="status for test-build-extension-catalog-release-2-dot-8 - build => ${{ needs.test-build-extension-catalog-release-2-dot-8.outputs.build-extension-catalog-job-status }}" RELEASE_SHELL_PKG_OUTPUT_STRING="status for test-release-shell-pkg-release-2-dot-8 - release => ${{ needs.test-release-shell-pkg-release-2-dot-8.outputs.build-release-shell-creators-status }}" RELEASE_CREATORS_PKG_OUTPUT_STRING="status for test-release-creators-pkg-release-2-dot-8 - release => ${{ needs.test-release-creators-pkg-release-2-dot-8.outputs.build-release-shell-creators-status }}" echo $TAGS_OUTPUT_STRING echo $EXT_CHART_BUILD_OUTPUT_STRING - echo $EXT_CHART_RELEASE_OUTPUT_STRING echo $EXT_CATALOG_BUILD_OUTPUT_STRING echo $RELEASE_SHELL_PKG_OUTPUT_STRING echo $RELEASE_CREATORS_PKG_OUTPUT_STRING - MSG="$MSG_PREFIX ::: $TAGS_OUTPUT_STRING ::: $EXT_CHART_BUILD_OUTPUT_STRING ::: $EXT_CHART_RELEASE_OUTPUT_STRING ::: $EXT_CATALOG_BUILD_OUTPUT_STRING ::: $RELEASE_SHELL_PKG_OUTPUT_STRING ::: $RELEASE_CREATORS_PKG_OUTPUT_STRING" + MSG="$MSG_PREFIX ::: $TAGS_OUTPUT_STRING ::: $EXT_CHART_BUILD_OUTPUT_STRING ::: $EXT_CATALOG_BUILD_OUTPUT_STRING ::: $RELEASE_SHELL_PKG_OUTPUT_STRING ::: $RELEASE_CREATORS_PKG_OUTPUT_STRING" echo "message sent: $MSG" diff --git a/.github/workflows/test-extension-workflows-release-2.9.yml b/.github/workflows/test-extension-workflows-release-2.9.yml index dd7e5242b69..46c1b33e74d 100644 --- a/.github/workflows/test-extension-workflows-release-2.9.yml +++ b/.github/workflows/test-extension-workflows-release-2.9.yml @@ -85,7 +85,7 @@ jobs: env: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL_EXT_WFS }} run: | - OUTPUT_ARRAY=("${{ needs.retrieve-tags-release-2-dot-9.outputs.tags-job-status }}" "${{ needs.test-build-extension-charts-release-2-dot-9.outputs.build-job-status }}" "${{ needs.test-build-extension-charts-release-2-dot-9.outputs.release-job-status }}" "${{ needs.test-build-extension-catalog-release-2-dot-9.outputs.build-extension-catalog-job-status }}" "${{ needs.test-release-shell-pkg-release-2-dot-9.outputs.build-release-shell-creators-status }}" "${{ needs.test-release-creators-pkg-release-2-dot-9.outputs.build-release-shell-creators-status }}") + OUTPUT_ARRAY=("${{ needs.retrieve-tags-release-2-dot-9.outputs.tags-job-status }}" "${{ needs.test-build-extension-charts-release-2-dot-9.outputs.build-job-status }}" "${{ needs.test-build-extension-catalog-release-2-dot-9.outputs.build-extension-catalog-job-status }}" "${{ needs.test-release-shell-pkg-release-2-dot-9.outputs.build-release-shell-creators-status }}" "${{ needs.test-release-creators-pkg-release-2-dot-9.outputs.build-release-shell-creators-status }}") if [[ ${OUTPUT_ARRAY[@]} =~ "failure" ]]; then MSG_PREFIX="Workflows testing for extensions failed! 🆘" @@ -97,19 +97,17 @@ jobs: TAGS_OUTPUT_STRING="status for retrieve-tags-release-2-dot-9 - build => ${{ needs.retrieve-tags-release-2-dot-9.outputs.tags-job-status }}" EXT_CHART_BUILD_OUTPUT_STRING="status for test-build-extension-charts-release-2-dot-9 - build => ${{ needs.test-build-extension-charts-release-2-dot-9.outputs.build-job-status }}" - EXT_CHART_RELEASE_OUTPUT_STRING="status for test-build-extension-charts-release-2-dot-9 - release => ${{ needs.test-build-extension-charts-release-2-dot-9.outputs.release-job-status }}" EXT_CATALOG_BUILD_OUTPUT_STRING="status for test-build-extension-catalog-release-2-dot-9 - build => ${{ needs.test-build-extension-catalog-release-2-dot-9.outputs.build-extension-catalog-job-status }}" RELEASE_SHELL_PKG_OUTPUT_STRING="status for test-release-shell-pkg-release-2-dot-9 - release => ${{ needs.test-release-shell-pkg-release-2-dot-9.outputs.build-release-shell-creators-status }}" RELEASE_CREATORS_PKG_OUTPUT_STRING="status for test-release-creators-pkg-release-2-dot-9 - release => ${{ needs.test-release-creators-pkg-release-2-dot-9.outputs.build-release-shell-creators-status }}" echo $TAGS_OUTPUT_STRING echo $EXT_CHART_BUILD_OUTPUT_STRING - echo $EXT_CHART_RELEASE_OUTPUT_STRING echo $EXT_CATALOG_BUILD_OUTPUT_STRING echo $RELEASE_SHELL_PKG_OUTPUT_STRING echo $RELEASE_CREATORS_PKG_OUTPUT_STRING - MSG="$MSG_PREFIX ::: $TAGS_OUTPUT_STRING ::: $EXT_CHART_BUILD_OUTPUT_STRING ::: $EXT_CHART_RELEASE_OUTPUT_STRING ::: $EXT_CATALOG_BUILD_OUTPUT_STRING ::: $RELEASE_SHELL_PKG_OUTPUT_STRING ::: $RELEASE_CREATORS_PKG_OUTPUT_STRING" + MSG="$MSG_PREFIX ::: $TAGS_OUTPUT_STRING ::: $EXT_CHART_BUILD_OUTPUT_STRING ::: $EXT_CATALOG_BUILD_OUTPUT_STRING ::: $RELEASE_SHELL_PKG_OUTPUT_STRING ::: $RELEASE_CREATORS_PKG_OUTPUT_STRING" echo "message sent: $MSG"