name: 'Ionic Framework Build' on: pull_request: branches: [ '**' ] merge_group: workflow_dispatch: inputs: ionicons_npm_release_tag: required: false type: string description: What version of ionicons should be pulled from NPM? Use this if you want to test a custom version of Ionicons with Ionic. # 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: ./.github/workflows/actions/build-core with: ionicons-version: ${{ inputs.ionicons_npm_release_tag }} test-core-clean-build: needs: [build-core] runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: ./.github/workflows/actions/test-core-clean-build test-core-lint: needs: [build-core] runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: ./.github/workflows/actions/test-core-lint test-core-spec: needs: [build-core] runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: ./.github/workflows/actions/build-vue build-vue-router: needs: [build-vue] runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: ./.github/workflows/actions/build-angular build-angular-server: needs: [build-core] runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: ./.github/workflows/actions/build-angular-server test-angular-e2e: strategy: fail-fast: false matrix: apps: [ng16, ng17, ng18, ng19, ng20] needs: [build-angular, build-angular-server] runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: ./.github/workflows/actions/build-react build-react-router: needs: [build-react] runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: ./.github/workflows/actions/build-react-router test-react-router-e2e: strategy: fail-fast: false matrix: apps: [reactrouter5] needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: ./.github/workflows/actions/test-react-router-e2e with: app: ${{ matrix.apps }} verify-test-react-router-e2e: if: ${{ always() }} needs: test-react-router-e2e runs-on: ubuntu-latest steps: - name: Check build matrix status if: ${{ needs.test-react-router-e2e.result != 'success' }} run: exit 1 test-react-e2e: strategy: fail-fast: false matrix: apps: [react17, react18, react19] needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: ./.github/workflows/actions/test-react-e2e with: app: ${{ matrix.apps }} verify-test-react-e2e: if: ${{ always() }} needs: test-react-e2e runs-on: ubuntu-latest steps: - name: Check build matrix status if: ${{ needs.test-react-e2e.result != 'success' }} run: exit 1