Merge pull request #4430 from iron-fish/staging #5
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: Node.js CI | |
on: | |
pull_request: | |
branches: | |
- '**' | |
push: | |
branches: | |
- master | |
jobs: | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out Git repository | |
uses: actions/checkout@v3 | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: 'yarn' | |
- name: Install packages | |
run: yarn --non-interactive --ignore-scripts | |
# Necessary since `--frozen-lockfile` does not work properly in yarn 1.x. | |
# https://github.com/yarnpkg/yarn/issues/5840 | |
- name: Check for lockfile changes | |
run: | | |
if [[ $(git status | grep yarn.lock) ]]; then | |
echo "yarn.lock has outstanding updates, please check them in." | |
exit 1 | |
fi | |
- name: Lint | |
run: yarn lint | |
test-matrix: | |
name: Test Matrix | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [18, 20] | |
test-type: ["test", "test:slow"] | |
steps: | |
- name: Check out Git repository | |
uses: actions/checkout@v3 | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.version }} | |
cache: 'yarn' | |
- name: Cache Rust | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: nodejs | |
- name: Install packages | |
run: yarn --non-interactive --frozen-lockfile | |
- name: Run tests | |
run: yarn ${{ matrix.test-type}}:coverage --maxWorkers=2 --workerIdleMemoryLimit=2000MB | |
- name: Check for missing fixtures | |
run: | | |
if [[ $(git status | grep fixture) ]]; then | |
echo "New test fixtures have not been checked in, please check them in." | |
exit 1 | |
fi | |
- name: Upload coverage | |
if: github.repository == 'iron-fish/ironfish' | |
run: CODECOV_TOKEN=${{ secrets.CODECOV_TOKEN }} ROOT_PATH=$GITHUB_WORKSPACE/ yarn coverage:upload | |
# This is a workaround to have status checks on jobs that use a matrix. | |
# See: https://github.com/orgs/community/discussions/26822 | |
test: | |
if: ${{ always() }} | |
runs-on: ubuntu-latest | |
name: Test | |
needs: [test-matrix] | |
steps: | |
- run: exit 1 | |
if: ${{ !contains(needs.*.result, 'success')}} |