Use a different continue-on-error pattern #40
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: Pull request validation | |
on: | |
pull_request: | |
branches: | |
- main | |
paths-ignore: | |
- .github | |
- .vscode | |
push: | |
branches: | |
- feat-github-workflow | |
workflow_dispatch: {} | |
defaults: | |
run: | |
shell: bash | |
env: | |
CI_PULL_REQUEST: 1 # Skip nightly tests | |
node-version: 20.x | |
skip-secure-feed: true # TODO: Turn this off. | |
jobs: | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js ${{ env.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.node-version }} | |
cache: npm | |
- if: "env.skip-secure-feed != 'true'" | |
name: Enable secure feed | |
run: npx https://aka.ms/EnableSecureFeed | |
- run: npm clean-install | |
- run: npm run bootstrap | |
- run: npm run build --if-present | |
- name: Pack ./__tests__ | |
run: | | |
zip docker.zip -r@ <<EOF | |
./__tests__/ | |
./babel-jest-config.js | |
./babel-passthru-transformer.js | |
./babel.config.json | |
./chrome.dockerfile | |
./docker-compose-wsl2.yml | |
./jest.config.js | |
./package.json | |
./package-lock.json | |
./packages/bundle/dist/ | |
./packages/test/harness/ | |
./packages/test/page-object/dist/ | |
./serve-test.json | |
./testharness.dockerfile | |
./testharness2.dockerfile | |
EOF | |
- run: ls -l docker.zip | |
- name: Upload Docker artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: docker | |
path: docker.zip | |
retention-days: 1 | |
unit-test: | |
name: Unit test | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js ${{ env.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.node-version }} | |
cache: npm | |
- if: "env.skip-secure-feed != 'true'" | |
name: Enable secure feed | |
run: npx https://aka.ms/EnableSecureFeed | |
- run: npm clean-install | |
- run: npm clean-install | |
working-directory: ./packages/test/harness/ | |
- run: npm run bootstrap | |
- run: npm run build --if-present | |
- name: Run jest --testPathPattern packages/ | |
run: ./node_modules/.bin/jest --testPathPattern packages/ | |
- if: always() | |
name: Append ID to test result | |
run: | | |
ls -laR . | |
mv jest.json jest-unit.json | |
mv nunit3.xml nunit3-unit.xml | |
mv result.trx result-unit.trx | |
working-directory: ./coverage | |
- if: always() | |
name: Upload test results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-result | |
path: | | |
./coverage/jest-*.json | |
./coverage/nunit3-*.xml | |
./coverage/result-*.trx | |
html-test: | |
name: HTML test (${{ format('{0}/{1}', matrix.shard-index, matrix.shard-count) }}) | |
needs: | |
- build | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
shard-index: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] | |
shard-count: [20] | |
steps: | |
- name: Use Node.js ${{ env.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.node-version }} | |
- if: "env.skip-secure-feed != 'true'" | |
name: Enable secure feed | |
run: npx https://aka.ms/EnableSecureFeed | |
- name: Download Docker artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: docker | |
- run: unzip docker.zip | |
- run: rm docker.zip | |
- run: npm clean-install | |
- name: Run docker-compose build | |
run: docker-compose -f docker-compose-wsl2.yml build --build-arg REGISTRY=mcr.microsoft.com/mirror/docker/library | |
- name: Run docker-compose up | |
run: docker-compose -f docker-compose-wsl2.yml up --detach --scale chrome=2 | |
- name: Run jest --shard=${{ format('{0}/{1}', matrix.shard-index, matrix.shard-count) }} | |
run: | | |
./node_modules/.bin/jest \ | |
--bail=20 \ | |
--ci \ | |
--coverage true \ | |
--forceExit \ | |
--logHeapUsage \ | |
--runInBand \ | |
--shard=${{ format('{0}/{1}', matrix.shard-index, matrix.shard-count) }} | |
- if: always() | |
name: Append ID to test result | |
run: | | |
ls -laR . | |
mv jest.json jest-${{ matrix.shard-index }}.json | |
mv nunit3.xml nunit3-${{ matrix.shard-index }}.xml | |
mv result.trx result-${{ matrix.shard-index }}.trx | |
working-directory: ./coverage | |
- if: always() | |
name: Upload test results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-result | |
path: | | |
./coverage/jest-*.json | |
./coverage/nunit3-*.xml | |
./coverage/result-*.trx | |
- if: always() | |
name: Run docker-compose down | |
run: docker-compose -f docker-compose-wsl2.yml down --rmi all | |
merge-test-result: | |
if: always() | |
name: Merge test result | |
needs: | |
- html-test | |
- unit-test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download test results | |
uses: actions/download-artifact@v3 | |
with: | |
name: test-result | |
- run: ls -laR |