mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
Screenshot matrix jobs had "fail-fast: false". This enabled each test runner to provide its `playwright-report` directory so team members can view test failures. At the time, all tests ran even if previous tests failed. In https://github.com/ionic-team/ionic-framework/pull/26447, we updated the Playwright config to have tests fail fast within a single test runner. However, other test runners continue to run. This is not helpful in the case of failing tests because the artifacts for each test runner will not be reported until all test runners are done. This PR changes the matrix strategy to enable fail-fast (which is the default) so in-progress/queued test runners fail if a previous test runner fails.
182 lines
4.8 KiB
YAML
182 lines
4.8 KiB
YAML
name: 'Ionic Framework Build'
|
|
|
|
on:
|
|
pull_request:
|
|
branches: [ '**' ]
|
|
|
|
# When pushing a new commit we should
|
|
# cancel the previous test run to not
|
|
# consume more runners than we need to.
|
|
concurrency:
|
|
group: ${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build-core:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
# Checkout the latest commit in this branch
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
- uses: ./.github/workflows/actions/build-core
|
|
|
|
test-core-clean-build:
|
|
needs: [build-core]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/test-core-clean-build
|
|
|
|
test-core-lint:
|
|
needs: [build-core]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/test-core-lint
|
|
|
|
test-core-spec:
|
|
needs: [build-core]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/test-core-spec
|
|
|
|
test-core-screenshot:
|
|
strategy:
|
|
matrix:
|
|
# Divide the tests into n buckets
|
|
# and run those buckets in parallel.
|
|
# To increase the number of shards,
|
|
# add new items to the shard array
|
|
# and change the value of totalShards
|
|
# to be the length of the shard array.
|
|
shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
|
|
totalShards: [20]
|
|
needs: [build-core]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/test-core-screenshot
|
|
with:
|
|
shard: ${{ matrix.shard }}
|
|
totalShards: ${{ matrix.totalShards }}
|
|
|
|
# Screenshots are required to pass
|
|
# in order for the branch to be merge
|
|
# eligible. However, the screenshot tests
|
|
# are run on n runners where n can change
|
|
# over time. The verify-screenshots step allows
|
|
# us to have a required status check for screenshot
|
|
# results without having to manually add each
|
|
# matrix run in the branch protection rules
|
|
# Source: https://github.community/t/status-check-for-a-matrix-jobs/127354
|
|
verify-screenshots:
|
|
if: ${{ always() }}
|
|
needs: test-core-screenshot
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check build matrix status
|
|
if: ${{ needs.test-core-screenshot.result != 'success' }}
|
|
run: exit 1
|
|
|
|
build-vue:
|
|
needs: [build-core]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/build-vue
|
|
|
|
build-vue-router:
|
|
needs: [build-vue]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/build-vue-router
|
|
|
|
test-vue-e2e:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
apps: [vue3]
|
|
needs: [build-vue, build-vue-router]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/test-vue-e2e
|
|
with:
|
|
app: ${{ matrix.apps }}
|
|
|
|
verify-test-vue-e2e:
|
|
if: ${{ always() }}
|
|
needs: test-vue-e2e
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check build matrix status
|
|
if: ${{ needs.test-vue-e2e.result != 'success' }}
|
|
run: exit 1
|
|
|
|
build-angular:
|
|
needs: [build-core]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/build-angular
|
|
|
|
build-angular-server:
|
|
needs: [build-angular]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/build-angular-server
|
|
|
|
test-angular-e2e:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
apps: [ng12, ng13, ng14, ng15]
|
|
needs: [build-angular, build-angular-server]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/test-angular-e2e
|
|
with:
|
|
app: ${{ matrix.apps }}
|
|
|
|
verify-test-angular-e2e:
|
|
if: ${{ always() }}
|
|
needs: test-angular-e2e
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check build matrix status
|
|
if: ${{ needs.test-angular-e2e.result != 'success' }}
|
|
run: exit 1
|
|
|
|
build-react:
|
|
needs: [build-core]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/build-react
|
|
|
|
build-react-router:
|
|
needs: [build-react]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/build-react-router
|
|
|
|
test-react-router-e2e:
|
|
needs: [build-react, build-react-router]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/test-react-router-e2e
|
|
|
|
test-react-e2e:
|
|
needs: [build-react, build-react-router]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/test-react-e2e
|