diff --git a/.github/workflows/ci-test-custom-script.yml b/.github/workflows/ci-test-custom-script.yml index 5474418df1..b79eb73222 100644 --- a/.github/workflows/ci-test-custom-script.yml +++ b/.github/workflows/ci-test-custom-script.yml @@ -13,6 +13,12 @@ on: description: "These are the optional tags a developer can specify in order to run a subset of all the tests" required: false type: string + default: "" + matrix: + description: "Matrix jobs" + required: false + type: string + default: "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59]" jobs: ci-test: @@ -29,69 +35,7 @@ jobs: strategy: fail-fast: false matrix: - job: - [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - ] + job: ${{ fromJson(inputs.matrix) }} # Service containers to run with this job. Required for running tests services: diff --git a/.github/workflows/integration-tests-command.yml b/.github/workflows/integration-tests-command.yml index 6aa5728233..a872a161f9 100644 --- a/.github/workflows/integration-tests-command.yml +++ b/.github/workflows/integration-tests-command.yml @@ -6,20 +6,58 @@ on: types: [ok-to-test-command] jobs: - notify: + tag-check: runs-on: ubuntu-latest + outputs: + tags: ${{ steps.checkAll.outputs.tags }} + matrix: ${{ steps.checkAll.outputs.matrix }} steps: + - name: Check if tags arg is present in the command + id: checkTags + run: | + checkArg=`echo '${{toJSON(github.event.client_payload.slash_command.args.named)}}' | jq 'has("tags")'` + echo "tags=$checkArg" >> $GITHUB_OUTPUT + + - name: Add a comment on the PR with tags documentation link + if: steps.checkTags.outputs.tags != 'true' + uses: peter-evans/create-or-update-comment@v3 + with: + issue-number: ${{ github.event.client_payload.pull_request.number }} + body: | + The provided command lacks any tags. Please execute '/ok-to-test' again, specifying the tags you want to include or use `@tag.All` to run all specs. + Explore the tags documentation [here](https://www.notion.so/appsmith/Ok-to-test-With-Tags-7c0fc64d4efb4afebf53348cd6252918) + + - name: Stop the workflow run if tags are not present + if: steps.checkTags.outputs.tags != 'true' + run: exit 1 + + - name: Check if @tag.All is present in tags + if: steps.checkTags.outputs.tags == 'true' + id: checkAll + run: | + tags="${{ github.event.client_payload.slash_command.args.named.tags }}" + if [[ $tags == *"@tag.All"* ]]; then + echo "tags=" >> $GITHUB_OUTPUT + echo "matrix=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59]" >> $GITHUB_OUTPUT + else + echo "tags=$tags" >> $GITHUB_OUTPUT + echo "matrix=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]" >> $GITHUB_OUTPUT + fi + # This step creates a comment on the PR with a link to this workflow run. - name: Add a comment on the PR with link to workflow run + if: steps.checkTags.outputs.tags == 'true' uses: peter-evans/create-or-update-comment@v3 with: issue-number: ${{ github.event.client_payload.pull_request.number }} body: | Tests running at: <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>. Workflow: `${{ github.workflow }}`. - Tags: `${{ github.event.client_payload.slash_command.args.named.tags }}`. + Tags: `${{ steps.checkAll.outputs.tags }}`. server-build: + needs: [tag-check] + if: success() name: server-build uses: ./.github/workflows/server-build.yml secrets: inherit @@ -28,6 +66,8 @@ jobs: skip-tests: true client-build: + needs: [tag-check] + if: success() name: client-build uses: ./.github/workflows/client-build.yml secrets: inherit @@ -36,6 +76,8 @@ jobs: check-test-files: "true" rts-build: + needs: [tag-check] + if: success() name: rts-build uses: ./.github/workflows/rts-build.yml secrets: inherit @@ -43,6 +85,8 @@ jobs: pr: ${{ github.event.client_payload.pull_request.number }} test-appsmithctl: + needs: [tag-check] + if: success() name: appsmithctl uses: ./.github/workflows/appsmithctl.yml secrets: inherit @@ -50,7 +94,7 @@ jobs: pr: ${{ github.event.client_payload.pull_request.number }} build-docker-image: - needs: [client-build, server-build, rts-build] + needs: [tag-check, client-build, server-build, rts-build] # Only run if the build step is successful if: success() name: build-docker-image @@ -60,7 +104,7 @@ jobs: pr: ${{ github.event.client_payload.pull_request.number }} ci-test: - needs: [build-docker-image] + needs: [tag-check, build-docker-image] # Only run if the build step is successful if: success() name: ci-test @@ -68,7 +112,9 @@ jobs: secrets: inherit with: pr: ${{ github.event.client_payload.pull_request.number }} - tags: ${{ github.event.client_payload.slash_command.args.named.tags }} + tags: ${{ needs.tag-check.outputs.tags }} + matrix: ${{ needs.tag-check.outputs.matrix }} + ci-test-result: needs: [ci-test] diff --git a/.github/workflows/test-build-docker-image.yml b/.github/workflows/test-build-docker-image.yml index 9e106a8032..e399026a80 100644 --- a/.github/workflows/test-build-docker-image.yml +++ b/.github/workflows/test-build-docker-image.yml @@ -6,6 +6,12 @@ on: - cron: "30 00 * * 1-5" # This line enables manual triggering of this workflow. workflow_dispatch: + inputs: + tags: + description: "Tags" + required: false + type: string + default: "" # trigger for pushes to master push: @@ -17,7 +23,31 @@ on: - "!app/client/cypress/manual_TestSuite/**" jobs: + setup: + runs-on: ubuntu-latest + outputs: + tags: ${{ steps.setup.outputs.tags }} + matrix: ${{ steps.setup.outputs.matrix }} + steps: + - name: Set tags and matrix runner + id: setup + run: | + if [ "${{github.event_name}}" == "workflow_dispatch" ]; then + if [[ "${{inputs.tags}}" != "" && "${{inputs.tags}}" != *"@tag.All"* ]]; then + echo "tags=${{inputs.tags}}" >> $GITHUB_OUTPUT + echo "matrix=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]" >> $GITHUB_OUTPUT + else + echo "tags=" >> $GITHUB_OUTPUT + echo "matrix=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59]" >> $GITHUB_OUTPUT + fi + else + echo "tags=" >> $GITHUB_OUTPUT + echo "matrix=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59]" >> $GITHUB_OUTPUT + fi + server-build: + needs: [setup] + if: success() name: server-build uses: ./.github/workflows/server-build.yml secrets: inherit @@ -26,6 +56,8 @@ jobs: skip-tests: true client-build: + needs: [setup] + if: success() name: client-build uses: ./.github/workflows/client-build.yml secrets: inherit @@ -33,6 +65,8 @@ jobs: pr: 0 rts-build: + needs: [setup] + if: success() name: rts-build uses: ./.github/workflows/rts-build.yml secrets: inherit @@ -50,7 +84,7 @@ jobs: pr: 0 ci-test: - needs: [build-docker-image] + needs: [setup, build-docker-image] # Only run if the build step is successful if: success() name: ci-test @@ -58,6 +92,8 @@ jobs: secrets: inherit with: pr: 0 + tags: ${{needs.setup.outputs.tags}} + matrix: ${{needs.setup.outputs.matrix}} server-unit-tests: name: server-unit-tests