diff --git a/.github/workflows/check-plugins.yaml b/.github/workflows/check-plugins.yaml index a8fbb48be66..0bece11f287 100644 --- a/.github/workflows/check-plugins.yaml +++ b/.github/workflows/check-plugins.yaml @@ -1,8 +1,8 @@ name: check-plugins-build on: - pull_request: - branches: - - master + # pull_request: + # branches: + # - master env: TEST_PERSIST_BUILD: true jobs: diff --git a/.github/workflows/docusaurus.yaml b/.github/workflows/docusaurus.yaml index 38056fe0316..fc9539c4c76 100644 --- a/.github/workflows/docusaurus.yaml +++ b/.github/workflows/docusaurus.yaml @@ -1,12 +1,12 @@ name: Publish Docusaurus on: - push: - branches: - - master - pull_request: - branches: - - master + # push: + # branches: + # - master + # pull_request: + # branches: + # - master jobs: build: name: Build diff --git a/.github/workflows/scripts/test-extensions-creators-build.sh b/.github/workflows/scripts/test-extensions-creators-build.sh new file mode 100755 index 00000000000..f4fccdd5ab0 --- /dev/null +++ b/.github/workflows/scripts/test-extensions-creators-build.sh @@ -0,0 +1,114 @@ +#!/usr/bin/env bash + +set -eo pipefail + +SKELETON_APP_NAME="test-pkg" + + +validate_tagged_extension_creator() { + TAG=$1 + NODE_VERSION=$2 + UPDATE=$3 + + if [ -n "$UPDATE" ]; then + echo "*** Will also cover the UPDATE path and MIGRATION on this run! ***" + UPDATE="true" + fi + + # these two commands will allow for NVM to work in bash, since it's included in ubuntu-latest + export NVM_DIR=~/.nvm + source ~/.nvm/nvm.sh + + DIR=$(mktemp -d) + cd $DIR + + echo "*** ***************************************** ***" + echo "*** Verifying extension creator for tag ::: ${TAG} ***" + echo "*** ***************************************** ***" + echo "Using temporary directory ${DIR}" + + echo "=> Setting up node version required for this env: ${NODE_VERSION}" + echo "=> Current dir 1:" + pwd + + # setting up correct version of node + nvm install ${NODE_VERSION} + nvm use ${NODE_VERSION} + + # generate skeleton app + npm init @rancher/extension@${TAG} ${SKELETON_APP_NAME} --app-name test-app | cat + cd ${SKELETON_APP_NAME} + + # install dependencies + yarn install + + # test build of pkg inside skeleton app + yarn build-pkg ${SKELETON_APP_NAME} | cat + + echo "=> Current dir 2:" + pwd + + if [ $UPDATE == "true" ]; then + echo "*** ***************************************** ***" + echo "*** Testing FULL UPGRADE path for extensions ***" + echo "*** ***************************************** ***" + echo "=> Testing UPGRADE from legacy-v1 to legacy-v2" + + echo "=> Current dir 3:" + pwd + + git init + #when doing git init, we are sent to .git folder + cd .. + cd ${SKELETON_APP_NAME} + + echo "=> Current dir 4:" + pwd + + npm init @rancher/extension@legacy-v2 -- --update + + rm -rf node_modules + rm -rf yarn.lock + + yarn install + + cat package.json + + yarn build-pkg ${SKELETON_APP_NAME} | cat + + echo "*** ***************************************** ***" + echo "*** Testing UPGRADE from legacy-v2 to latest ***" + echo "*** ***************************************** ***" + + echo "=> Updating node version required for last leg of upgrade path: v20" + + nvm install v20 + nvm use v20 + + npm init @rancher/extension -- --migrate + + # debug changes done via migration script + cat package.json + + rm -rf node_modules + rm -rf yarn.lock + + yarn install + + yarn build-pkg ${SKELETON_APP_NAME} | cat + fi + + echo "Cleaning temporary dir" + cd ${DIR} + + echo "Removing folder ${DIR}" + rm -rf ${DIR} +} + +# test creating an extension with latest shell releases + build +validate_tagged_extension_creator "legacy-v1" "v16" +validate_tagged_extension_creator "legacy-v2" "v16" +validate_tagged_extension_creator "latest" "v20" + +# test update paths + build +validate_tagged_extension_creator "legacy-v1" "v16" "true" \ No newline at end of file diff --git a/.github/workflows/storybook.yaml b/.github/workflows/storybook.yaml index b71bc7a58c8..da3bc74f325 100644 --- a/.github/workflows/storybook.yaml +++ b/.github/workflows/storybook.yaml @@ -2,12 +2,12 @@ name: storybook env: STORYBOOK_TOKEN: ${{ secrets.STORYBOOK_TOKEN }} on: - push: - branches: - - master - pull_request: - branches: - - master + # push: + # branches: + # - master + # pull_request: + # branches: + # - master jobs: storybook: runs-on: ubuntu-latest diff --git a/.github/workflows/test-extension-workflows-master.yml b/.github/workflows/test-extension-workflows-master.yml index 8683db8b665..1862156e3e1 100644 --- a/.github/workflows/test-extension-workflows-master.yml +++ b/.github/workflows/test-extension-workflows-master.yml @@ -1,8 +1,16 @@ name: Test Extension workflows on: - schedule: - - cron: "0 0 * * *" + # schedule: + # - cron: "0 0 * * *" + push: + branches: + - 12158-test-latest-published-versions-shell + - master + # pull_request: + # branches: + # - 12158-test-latest-published-versions-shell + # - master defaults: run: @@ -10,74 +18,227 @@ defaults: working-directory: ./ jobs: - retrieve-tags-master: + test-extensions-creators-and-update-paths: 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 }} + test-extensions-creators-and-update-paths-job-status: ${{ job.status }} steps: - name: Checkout code uses: actions/checkout@v4 with: - ref: master + ref: 12158-test-latest-published-versions-shell - name: Retrieve Shell and Creators versions - run: source ./.github/workflows/scripts/retrieve-versions.sh - id: retrieve-data + run: .github/workflows/scripts/test-extensions-creators-build.sh + id: test-extensions-and-creators 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 }} + # test-extensions-build-legacy-v1: + # runs-on: ubuntu-latest + # outputs: + # test-legacy-v1-job-status: ${{ job.status }} + # steps: + # - name: Checkout code + # uses: actions/checkout@v4 + # with: + # ref: 12158-test-latest-published-versions-shell + + # - name: Setup Nodejs with yarn caching + # uses: actions/setup-node@v4 + # with: + # node-version: '16' + + # - name: Retrieve Shell and Creators versions + # run: .github/workflows/scripts/test-extensions-creators-build.sh legacy-v1 true + # id: test-extensions-and-creators + # shell: bash + # test-extensions-build-legacy-v2: + # runs-on: ubuntu-latest + # outputs: + # test-legacy-v2-job-status: ${{ job.status }} + # steps: + # - name: Checkout code + # uses: actions/checkout@v4 + # with: + # ref: 12158-test-latest-published-versions-shell + + # - name: Setup Nodejs with yarn caching + # uses: actions/setup-node@v4 + # with: + # node-version: '16' + + # - name: Retrieve Shell and Creators versions + # run: .github/workflows/scripts/test-extensions-creators-build.sh legacy-v2 + # id: test-extensions-and-creators + # shell: bash + # test-extensions-build-latest: + # runs-on: ubuntu-latest + # outputs: + # test-latest-job-status: ${{ job.status }} + # steps: + # - name: Checkout code + # uses: actions/checkout@v4 + # with: + # ref: 12158-test-latest-published-versions-shell + + # - name: Setup Nodejs with yarn caching + # uses: actions/setup-node@v4 + # with: + # node-version: '16' + + # - name: Retrieve Shell and Creators versions + # run: .github/workflows/scripts/test-extensions-creators-build.sh latest + # id: test-extensions-and-creators + # shell: bash + # 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 ./.github/workflows/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: [test-extensions-build-legacy-v1, test-extensions-build-legacy-v2, test-extensions-build-latest, 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-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="\nWorkflows testing for extensions failed! 🆘" + # else + # MSG_PREFIX="\nWorkflows 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_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_CATALOG_BUILD_OUTPUT_STRING + # echo $RELEASE_SHELL_PKG_OUTPUT_STRING + # echo $RELEASE_CREATORS_PKG_OUTPUT_STRING + + # MSG="$MSG_PREFIX \n::: $TAGS_OUTPUT_STRING \n::: $EXT_CHART_BUILD_OUTPUT_STRING \n::: $EXT_CATALOG_BUILD_OUTPUT_STRING \n::: $RELEASE_SHELL_PKG_OUTPUT_STRING \n::: $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\", \"workflow_run\": ${{ github.run_id }} }" $SLACK_WEBHOOK + + ################### + # THIS ONE WORKS JUST FINE!!!!! + ################### + # slack-message: + # if: ${{ always() }} + # runs-on: ubuntu-latest + # needs: [test-extensions-build-legacy-v1, test-extensions-build-legacy-v2, test-extensions-build-latest] + # steps: + # - name: Slack message for workflow + # if: always() + # shell: bash + # env: + # SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL_EXT_WFS }} + # run: | + # OUTPUT_ARRAY=("${{ needs.test-extensions-build-legacy-v1.outputs.test-legacy-v1-job-status }}" "${{ needs.test-extensions-build-legacy-v2.outputs.test-legacy-v2-job-status }}" "${{ needs.test-extensions-build-latest.outputs.test-latest-job-status }}") + # JOB_NAME_ARRAY=("test-extensions-build-legacy-v1 job" "test-extensions-build-legacy-v2 job" "test-extensions-build-latest job") + + # if [[ ${OUTPUT_ARRAY[@]} =~ "failure" ]]; then + # MSG_PREFIX="\nWorkflows testing for extensions failed! 🆘" + # else + # MSG_PREFIX="\nWorkflows testing for extensions succedded! ✅" + # fi + + # echo "message prefix ::: $MSG_PREFIX" + + # MSG_OUTPUT="$MSG_PREFIX" + + # for index in "${!OUTPUT_ARRAY[@]}" + # do + # if [[ ${OUTPUT_ARRAY[$index]} == "failure" ]]; then + # EMOJI="🆘" + # else + # EMOJI="✅" + # fi + # MSG_OUTPUT="$MSG_OUTPUT \n::: Status for ${JOB_NAME_ARRAY[$index]} => ${OUTPUT_ARRAY[$index]} $EMOJI" + # done + + # echo "message sent: $MSG_OUTPUT" + + # curl -X POST -H 'Content-type: application/json; charset=utf-8' \ + # --data "{\"branch\": \"master\", \"message\": \"$MSG\", \"workflow_run\": ${{ github.run_id }} }" $SLACK_WEBHOOK 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] + needs: [test-extensions-creators-and-update-paths] steps: - name: Slack message for workflow if: always() @@ -85,31 +246,30 @@ 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-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.test-extensions-creators-and-update-paths-job-status.outputs.test-legacy-v1-job-status }}") + JOB_NAME_ARRAY=("test-extensions-creators-and-update-paths-job-status job") if [[ ${OUTPUT_ARRAY[@]} =~ "failure" ]]; then - MSG_PREFIX="Workflows testing for extensions failed! 🆘" + MSG_PREFIX="\nWorkflows testing for extensions failed! 🆘" else - MSG_PREFIX="Workflows testing for extensions succedded! ✅" + MSG_PREFIX="\nWorkflows 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_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_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_CATALOG_BUILD_OUTPUT_STRING ::: $RELEASE_SHELL_PKG_OUTPUT_STRING ::: $RELEASE_CREATORS_PKG_OUTPUT_STRING" + MSG_OUTPUT="$MSG_PREFIX" + + for index in "${!OUTPUT_ARRAY[@]}" + do + if [[ ${OUTPUT_ARRAY[$index]} == "failure" ]]; then + EMOJI="🆘" + else + EMOJI="✅" + fi + MSG_OUTPUT="$MSG_OUTPUT \n::: Status for ${JOB_NAME_ARRAY[$index]} => ${OUTPUT_ARRAY[$index]} $EMOJI" + done - echo "message sent: $MSG" + echo "message sent: $MSG_OUTPUT" curl -X POST -H 'Content-type: application/json; charset=utf-8' \ - --data "{\"branch\": \"master\", \"message\": \"$MSG\", \"workflow_run\": ${{ github.run_id }} }" $SLACK_WEBHOOK \ No newline at end of file + --data "{\"branch\": \"master\", \"message\": \"$MSG_OUTPUT\", \"workflow_run\": ${{ github.run_id }} }" $SLACK_WEBHOOK \ No newline at end of file diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 102ebaae156..869e6635050 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -1,13 +1,13 @@ name: Tests on: - push: - branches: - - master - - 'release-*' - pull_request: - branches: - - master - - 'release-*' + # push: + # branches: + # - master + # - 'release-*' + # pull_request: + # branches: + # - master + # - 'release-*' workflow_dispatch: inputs: environment: