diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 6ce37dd1a0..941b9a2013 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -7,6 +7,7 @@ on: pull_request: branches: - "*" + merge_group: workflow_dispatch: schedule: # run at 6AM UTC Daily @@ -14,17 +15,60 @@ on: - cron: "0 6 * * *" jobs: + define-matrix: + runs-on: ubuntu-22.04 + steps: + # use cli rather than event context to avoid race conditions (label added after push) + - name: PR + if: ${{ github.event_name == 'pull_request' }} + run: | + labels=$(gh pr view -R ${{github.repository}} ${{github.event.pull_request.number}} --json labels -q '.labels[].name' -r '.[]') + + if [[ $labels == *"UPGRADE_TESTS"* ]]; then + if [[ $labels == *"LIGHT_UPGRADE_TESTS"* ]]; then + echo "UPGRADE_TESTS_LIGHT=true" >> $GITHUB_OUTPUT + else + echo "UPGRADE_TESTS=true" >> $GITHUB_OUTPUT + fi + fi + + if [[ $labels == *"ADMIN_TESTS"* ]]; then + echo "ADMIN_TESTS=true" >> $GITHUB_OUTPUT + fi + - name: mergegroup + if: ${{ github.event_name == 'merge_group' }} + run: | + labels=$(gh pr view -R ${{github.repository}} ${{github.event.pull_request.number}} --json labels -q '.labels[].name' -r '.[]') + if [[ $labels == *"MINIMAL_TESTS"* ]]; then + exit + fi + # TODO: maybe run more tests here + echo "LIGHT_UPGRADE_TESTS=true" >> $GITHUB_OUTPUT + - name: schedule + if: ${{ github.event_name == 'schedule' }} + run: | + echo "UPGRADE_TESTS=true" >> $GITHUB_OUTPUT + echo "LIGHT_UPGRADE_TESTS=true" >> $GITHUB_OUTPUT + echo "ADMIN_TESTS=true" >> $GITHUB_OUTPUT + e2e: + needs: define-matrix strategy: matrix: include: - make-target: "start-e2e-test" runs-on: ubuntu-20.04 run: true + - make-target: "start-upgrade-test" + runs-on: ubuntu-20.04 + run: ${{ needs.define-matrix.outputs.UPGRADE_TESTS }} - make-target: "start-upgrade-test-light" runs-on: ubuntu-20.04 - run: ${{ github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'MINIMAL_CI') }} - name: ${{ matrix.make-target }} + run: ${{ needs.define-matrix.outputs.UPGRADE_TESTS_LIGHT }} + - make-target: "start-e2e-admin-test" + runs-on: ubuntu-20.04 + run: ${{ needs.define-matrix.outputs.ADMIN_TESTS }} + name: e2e uses: ./.github/workflows/reusable-e2e.yml with: make-target: ${{ matrix.make-target }} @@ -33,7 +77,7 @@ jobs: secrets: inherit # this allows you to set a required status check ok: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: e2e steps: - run: echo "e2e tests passed" diff --git a/.github/workflows/reusable-e2e.yml b/.github/workflows/reusable-e2e.yml index a7e3ef2104..e60c453446 100644 --- a/.github/workflows/reusable-e2e.yml +++ b/.github/workflows/reusable-e2e.yml @@ -22,6 +22,7 @@ on: jobs: e2e: + name: ${{ inputs.make-target }} if: ${{ inputs.run }} runs-on: ${{ inputs.runs-on }} timeout-minutes: ${{ inputs.timeout-minutes }}