refactor(ci): finish matrix migration and update release workflow #171
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: e2e | |
on: | |
push: | |
branches: | |
- develop | |
- release/* | |
pull_request: | |
branches: | |
- "*" | |
merge_group: | |
schedule: | |
# run at 6AM UTC Daily | |
# 6AM UTC -> 11PM PT | |
- cron: "0 6 * * *" | |
workflow_dispatch: | |
inputs: | |
default-test: | |
type: boolean | |
required: false | |
default: false | |
upgrade-light-test: | |
type: boolean | |
required: false | |
default: false | |
upgrade-test: | |
type: boolean | |
required: false | |
default: false | |
admin-test: | |
type: boolean | |
required: false | |
default: false | |
stateful-upgrade-test: | |
type: boolean | |
required: false | |
default: false | |
performance-test: | |
type: boolean | |
required: false | |
default: false | |
stateful-data-test: | |
type: boolean | |
required: false | |
default: false | |
concurrency: | |
group: e2e-${{ github.head_ref || github.sha }} | |
cancel-in-progress: true | |
jobs: | |
matrix-conditionals: | |
runs-on: ubuntu-22.04 | |
env: | |
GH_TOKEN: ${{ github.token }} | |
outputs: | |
DEFAULT_TESTS: ${{ steps.matrix-conditionals.outputs.DEFAULT_TESTS }} | |
UPGRADE_TESTS: ${{ steps.matrix-conditionals.outputs.UPGRADE_TESTS }} | |
UPGRADE_LIGHT_TESTS: ${{ steps.matrix-conditionals.outputs.UPGRADE_LIGHT_TESTS }} | |
UPGRADE_STATEFUL_TESTS: ${{ steps.matrix-conditionals.outputs.UPGRADE_STATEFUL_TESTS }} | |
ADMIN_TESTS: ${{ steps.matrix-conditionals.outputs.ADMIN_TESTS }} | |
PERFORMANCE_TESTS: ${{ steps.matrix-conditionals.outputs.PERFORMANCE_TESTS }} | |
STATEFUL_DATA_TESTS: ${{ steps.matrix-conditionals.outputs.STATEFUL_DATA_TESTS }} | |
steps: | |
# use cli rather than event context to avoid race conditions (label added after push) | |
- id: matrix-conditionals | |
run: | | |
if [[ ${{ github.event_name }} == 'pull_request' ]]; then | |
echo "DEFAULT_TESTS=true" >> $GITHUB_OUTPUT | |
labels=$(gh pr view -R ${{github.repository}} ${{github.event.pull_request.number}} --json labels -q '.labels[].name') | |
if [[ "$labels" == *"UPGRADE_TESTS"* ]]; then | |
echo "UPGRADE_TESTS=true" >> $GITHUB_OUTPUT | |
fi | |
if [[ "$labels" == *"UPGRADE_LIGHT_TESTS"* ]]; then | |
echo "UPGRADE_LIGHT_TESTS=true" >> $GITHUB_OUTPUT | |
fi | |
if [[ "$labels" == *"UPGRADE_STATEFUL_TESTS"* ]]; then | |
echo "UPGRADE_STATEFUL_TESTS=true" >> $GITHUB_OUTPUT | |
fi | |
if [[ "$labels" == *"ADMIN_TESTS"* ]]; then | |
echo "ADMIN_TESTS=true" >> $GITHUB_OUTPUT | |
fi | |
if [[ "$labels" == *"PERFORMANCE_TESTS"* ]]; then | |
echo "PERFORMANCE_TESTS=true" >> $GITHUB_OUTPUT | |
fi | |
if [[ "$labels" == *"STATEFUL_DATA_TESTS"* ]]; then | |
echo "STATEFUL_DATA_TESTS=true" >> $GITHUB_OUTPUT | |
fi | |
elif [[ ${{ github.event_name }} == 'merge_group' ]]; then | |
echo "DEFAULT_TESTS=true" >> $GITHUB_OUTPUT | |
elif [[ ${{ github.event_name }} == 'push' && ${{ github.ref }} == 'refs/heads/develop' ]]; then | |
echo "DEFAULT_TESTS=true" >> $GITHUB_OUTPUT | |
elif [[ ${{ github.event_name }} == 'push' && ${{ github.ref }} == 'refs/heads/release/'* ]]; then | |
echo "DEFAULT_TESTS=true" >> $GITHUB_OUTPUT | |
echo "UPGRADE_TESTS=true" >> $GITHUB_OUTPUT | |
echo "UPGRADE_LIGHT_TESTS=true" >> $GITHUB_OUTPUT | |
echo "UPGRADE_STATEFUL_TESTS=true" >> $GITHUB_OUTPUT | |
echo "ADMIN_TESTS=true" >> $GITHUB_OUTPUT | |
echo "PERFORMANCE_TESTS=true" >> $GITHUB_OUTPUT | |
echo "STATEFUL_DATA_TESTS=true" >> $GITHUB_OUTPUT | |
elif [[ ${{ github.event_name }} == 'schedule' ]]; then | |
echo "DEFAULT_TESTS=true" >> $GITHUB_OUTPUT | |
echo "UPGRADE_TESTS=true" >> $GITHUB_OUTPUT | |
echo "UPGRADE_LIGHT_TESTS=true" >> $GITHUB_OUTPUT | |
echo "UPGRADE_STATEFUL_TESTS=true" >> $GITHUB_OUTPUT | |
echo "ADMIN_TESTS=true" >> $GITHUB_OUTPUT | |
echo "PERFORMANCE_TESTS=true" >> $GITHUB_OUTPUT | |
echo "STATEFUL_DATA_TESTS=true" >> $GITHUB_OUTPUT | |
elif [[ ${{ github.event_name }} == 'workflow_dispatch' ]]; then | |
echo "DEFAULT_TESTS=${{ github.event.inputs.default-test }}" >> $GITHUB_OUTPUT | |
echo "UPGRADE_TESTS=${{ github.event.inputs.upgrade-test }}" >> $GITHUB_OUTPUT | |
echo "UPGRADE_LIGHT_TESTS=${{ github.event.inputs.upgrade-light-test }}" >> $GITHUB_OUTPUT | |
echo "UPGRADE_STATEFUL_TESTS=${{ github.event.inputs.stateful-upgrade-test }}" >> $GITHUB_OUTPUT | |
echo "ADMIN_TESTS=${{ github.event.inputs.admin-test }}" >> $GITHUB_OUTPUT | |
echo "PERFORMANCE_TESTS=${{ github.event.inputs.performance-test }}" >> $GITHUB_OUTPUT | |
echo "STATEFUL_DATA_TESTS=${{ github.event.inputs.stateful-data-test }}" >> $GITHUB_OUTPUT | |
fi | |
e2e: | |
needs: matrix-conditionals | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- make-target: "start-e2e-test" | |
runs-on: ubuntu-20.04 | |
run: ${{ needs.matrix-conditionals.outputs.DEFAULT_TESTS == 'true' }} | |
- make-target: "start-upgrade-test" | |
runs-on: ubuntu-20.04 | |
run: ${{ needs.matrix-conditionals.outputs.UPGRADE_TESTS == 'true' }} | |
- make-target: "start-upgrade-test-light" | |
runs-on: ubuntu-20.04 | |
run: ${{ needs.matrix-conditionals.outputs.UPGRADE_LIGHT_TESTS == 'true' }} | |
- make-target: "start-e2e-stateful-upgrade-test" | |
runs-on: buildjet-16vcpu-ubuntu-2204 | |
run: ${{ needs.matrix-conditionals.outputs.UPGRADE_STATEFUL_TESTS == 'true' }} | |
- make-target: "start-e2e-admin-test" | |
runs-on: ubuntu-20.04 | |
run: ${{ needs.matrix-conditionals.outputs.ADMIN_TESTS == 'true' }} | |
- make-target: "start-e2e-performance-test" | |
runs-on: buildjet-4vcpu-ubuntu-2204 | |
run: ${{ needs.matrix-conditionals.outputs.PERFORMANCE_TESTS == 'true' }} | |
- make-target: "start-stateful-data-test" | |
runs-on: buildjet-16vcpu-ubuntu-2204 | |
run: ${{ needs.matrix-conditionals.outputs.STATEFUL_DATA_TESTS == 'true' }} | |
name: ${{ matrix.make-target }} | |
uses: ./.github/workflows/reusable-e2e.yml | |
with: | |
make-target: ${{ matrix.make-target }} | |
runs-on: ${{ matrix.runs-on}} | |
run: ${{ matrix.run }} | |
secrets: inherit | |
# this allows you to set a required status check | |
e2e-ok: | |
runs-on: ubuntu-22.04 | |
needs: e2e | |
if: always() | |
steps: | |
- run: | | |
result="${{ needs.e2e.result }}" | |
if [[ $result == "success" || $result == "skipped" ]]; then | |
exit 0 | |
else | |
exit 1 | |
fi |