Skip to content

Cherry-pick CI improvements to release branch #25934

Cherry-pick CI improvements to release branch

Cherry-pick CI improvements to release branch #25934

name: Test all Packages
# run on all PRs (even the ones that target other branches)
on:
pull_request:
merge_group:
push:
branches: [master]
schedule:
# We start a little earlier to give our build cache time to populate.
- cron: '47 5 * * *'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
AGORIC_AVA_USE_TAP: true
TEST_COLLECT: 'tee -a _testoutput.txt'
NODE_V8_COVERAGE: coverage
# this is required, since explicitly setting bash as shell enables pipefail, which is not
# on by default. This is required to fail correctly when teeing output to a file to collect
# test instrumentation
defaults:
run:
shell: bash
# set ESM_DISABLE_CACHE=true (will be JSON parsed)
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: ['16.x', '18.x']
steps:
- uses: actions/checkout@v3
with:
submodules: 'true'
- uses: ./.github/actions/restore-node
with:
node-version: ${{ matrix.node-version }}
##################
# Lint tests
# We run per package bc of https://github.com/typescript-eslint/typescript-eslint/issues/1192
# We split the package tests into two jobs because type linting
# is inefficient and slow https://github.com/typescript-eslint/typescript-eslint/issues/2094
lint-primary:
timeout-minutes: 15
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: '18.x'
# first job also does repo-level linting
- name: lint repo format
run: yarn lint:format
# eslint
- name: yarn lint primary
run: ./scripts/lint-with-types.sh primary
lint-rest:
timeout-minutes: 15
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: '18.x'
- name: yarn lint rest
run: ./scripts/lint-with-types.sh rest
##################
# Fast-running tests run as a group:
test-quick:
# BEGIN-TEST-BOILERPLATE
timeout-minutes: 30
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
engine: ['16.x', '18.x', 'xs']
steps:
- name: set vars
id: vars
run: |
echo "node-version=${{ matrix.engine == 'xs' && '18.x' || matrix.engine }}" >> $GITHUB_OUTPUT
echo "test=${{ matrix.engine == 'xs' && 'test:xs' || 'test' }}" >> $GITHUB_OUTPUT
echo "GH_ENGINE=${{ matrix.engine }}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: ${{ steps.vars.outputs.node-version }}
# END-TEST-BOILERPLATE
# We run separate steps for each package, to make it easier to drill down
# into errors. If we wanted to just run everything, run 'yarn test' from
# the top level.
#
# This list should include all packages, except ones that are in another
# category here, or that don't have a package.json.
#- name: yarn test (everything)
# run: yarn ${{ steps.vars.outputs.test }}
- name: yarn test (access-token)
if: (success() || failure())
run: cd packages/access-token && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (assert)
if: (success() || failure())
run: cd packages/assert && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (deployment)
if: (success() || failure())
run: cd packages/deployment && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (ERTP)
if: (success() || failure())
run: cd packages/ERTP && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (governance)
if: (success() || failure())
run: cd packages/governance && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (import-manager)
if: (success() || failure())
run: cd packages/import-manager && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (notifier)
if: (success() || failure())
run: cd packages/notifier && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (same-structure)
if: (success() || failure())
run: cd packages/same-structure && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (sharing-service)
if: (success() || failure())
run: cd packages/sharing-service && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (sparse-ints)
if: (success() || failure())
run: cd packages/sparse-ints && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (spawner)
if: (success() || failure())
run: cd packages/spawner && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (stat-logger)
if: (success() || failure())
run: cd packages/stat-logger && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (store)
if: (success() || failure())
run: cd packages/store && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (swing-store)
if: (success() || failure())
run: cd packages/swing-store && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (web-components)
run: cd packages/web-components && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (wallet-connection)
run: cd packages/wallet-connection && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (cosmic-proto)
if: (success() || failure())
run: cd packages/cosmic-proto && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: notify on failure
if: failure() && github.event_name != 'pull_request'
uses: ./.github/actions/notify-status
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
from: ${{ secrets.NOTIFY_EMAIL_FROM }}
to: ${{ secrets.NOTIFY_EMAIL_TO }}
password: ${{ secrets.NOTIFY_EMAIL_PASSWORD }}
- uses: ./.github/actions/post-test
if: (success() || failure())
continue-on-error: true
timeout-minutes: 4
with:
datadog-token: ${{ secrets.DATADOG_API_KEY }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
test-quick2:
# BEGIN-TEST-BOILERPLATE
timeout-minutes: 30
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
engine: ['16.x', '18.x', 'xs']
steps:
- name: set vars
id: vars
run: |
echo "node-version=${{ matrix.engine == 'xs' && '18.x' || matrix.engine }}" >> $GITHUB_OUTPUT
echo "test=${{ matrix.engine == 'xs' && 'test:xs' || 'test' }}" >> $GITHUB_OUTPUT
echo "GH_ENGINE=${{ matrix.engine }}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: ${{ steps.vars.outputs.node-version }}
# END-TEST-BOILERPLATE
- name: yarn test (agoric-cli)
if: (success() || failure())
run: cd packages/agoric-cli && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (cosmos)
if: (success() || failure())
run: cd golang/cosmos && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (cache)
if: (success() || failure())
run: cd packages/cache && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (casting)
if: (success() || failure())
run: cd packages/casting && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (internal)
if: (success() || failure())
run: cd packages/internal && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (pegasus)
if: (success() || failure())
run: cd packages/pegasus && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (smart-wallet)
if: (success() || failure())
run: cd packages/smart-wallet && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (swingset-runner)
if: (success() || failure())
run: cd packages/swingset-runner && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (telemetry)
if: (success() || failure())
run: cd packages/telemetry && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (deploy-script-support)
if: (success() || failure())
run: cd packages/deploy-script-support && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (ui-components)
run: cd packages/ui-components && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (wallet)
if: (success() || failure())
run: cd packages/wallet && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (wallet/api)
if: (success() || failure())
run: cd packages/wallet/api && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (eslint-config)
if: (success() || failure())
run: cd packages/eslint-config && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (vat-data)
if: (success() || failure())
run: cd packages/vat-data && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (time)
if: (success() || failure())
run: cd packages/time && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (swingset-liveslots)
if: (success() || failure())
run: cd packages/swingset-liveslots && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (swingset-xsnap-supervisor)
if: (success() || failure())
run: cd packages/swingset-xsnap-supervisor && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (zone)
if: (success() || failure())
run: cd packages/zone && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
# The meta-test!
- name: Check for untested packages
if: (success() || failure())
run: node ./scripts/check-untested-packages.mjs
- name: notify on failure
if: failure() && github.event_name != 'pull_request'
uses: ./.github/actions/notify-status
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
from: ${{ secrets.NOTIFY_EMAIL_FROM }}
to: ${{ secrets.NOTIFY_EMAIL_TO }}
password: ${{ secrets.NOTIFY_EMAIL_PASSWORD }}
- uses: ./.github/actions/post-test
if: (success() || failure())
continue-on-error: true
timeout-minutes: 4
with:
datadog-token: ${{ secrets.DATADOG_API_KEY }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
##############
# Long-running tests are executed individually.
test-solo:
# BEGIN-TEST-BOILERPLATE
timeout-minutes: 30
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
# test:xs is noop in solo/package.json
engine: ['16.x', '18.x']
steps:
- name: set vars
id: vars
run: |
echo "node-version=${{ matrix.engine == 'xs' && '18.x' || matrix.engine }}" >> $GITHUB_OUTPUT
echo "test=${{ matrix.engine == 'xs' && 'test:xs' || 'test' }}" >> $GITHUB_OUTPUT
echo "GH_ENGINE=${{ matrix.engine }}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: ${{ steps.vars.outputs.node-version }}
# END-TEST-BOILERPLATE
- name: yarn test (solo)
if: (success() || failure())
run: cd packages/solo && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: notify on failure
if: failure() && github.event_name != 'pull_request'
uses: ./.github/actions/notify-status
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
from: ${{ secrets.NOTIFY_EMAIL_FROM }}
to: ${{ secrets.NOTIFY_EMAIL_TO }}
password: ${{ secrets.NOTIFY_EMAIL_PASSWORD }}
- uses: ./.github/actions/post-test
if: (success() || failure())
continue-on-error: true
timeout-minutes: 4
with:
datadog-token: ${{ secrets.DATADOG_API_KEY }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
test-cosmic-swingset:
# BEGIN-TEST-BOILERPLATE
timeout-minutes: 30
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
# test:xs is noop in cosmic-swingset/package.json
engine: ['16.x', '18.x', 'xs']
steps:
- name: set vars
id: vars
run: |
echo "node-version=${{ matrix.engine == 'xs' && '18.x' || matrix.engine }}" >> $GITHUB_OUTPUT
echo "test=${{ matrix.engine == 'xs' && 'test:xs' || 'test' }}" >> $GITHUB_OUTPUT
echo "GH_ENGINE=${{ matrix.engine }}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: ${{ steps.vars.outputs.node-version }}
# END-TEST-BOILERPLATE
- uses: ./.github/actions/restore-golang
with:
go-version: '1.20'
- name: yarn test (cosmic-swingset)
if: (success() || failure())
run: cd packages/cosmic-swingset && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: notify on failure
if: failure() && github.event_name != 'pull_request'
uses: ./.github/actions/notify-status
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
from: ${{ secrets.NOTIFY_EMAIL_FROM }}
to: ${{ secrets.NOTIFY_EMAIL_TO }}
password: ${{ secrets.NOTIFY_EMAIL_PASSWORD }}
- uses: ./.github/actions/post-test
if: (success() || failure())
continue-on-error: true
timeout-minutes: 4
with:
datadog-token: ${{ secrets.DATADOG_API_KEY }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
test-inter-protocol:
# BEGIN-TEST-BOILERPLATE
timeout-minutes: 30
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
# test:xs is noop in inter-protocol/package.json
engine: ['16.x', '18.x']
steps:
- name: set vars
id: vars
run: |
echo "node-version=${{ matrix.engine == 'xs' && '18.x' || matrix.engine }}" >> $GITHUB_OUTPUT
echo "test=${{ matrix.engine == 'xs' && 'test:xs' || 'test' }}" >> $GITHUB_OUTPUT
echo "GH_ENGINE=${{ matrix.engine }}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: ${{ steps.vars.outputs.node-version }}
# END-TEST-BOILERPLATE
- name: yarn test (inter-protocol)
if: (success() || failure())
run: cd packages/inter-protocol && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: notify on failure
if: failure() && github.event_name != 'pull_request'
uses: ./.github/actions/notify-status
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
from: ${{ secrets.NOTIFY_EMAIL_FROM }}
to: ${{ secrets.NOTIFY_EMAIL_TO }}
password: ${{ secrets.NOTIFY_EMAIL_PASSWORD }}
- uses: ./.github/actions/post-test
if: (success() || failure())
continue-on-error: true
timeout-minutes: 4
with:
datadog-token: ${{ secrets.DATADOG_API_KEY }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
test-vats:
# BEGIN-TEST-BOILERPLATE
timeout-minutes: 30
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
engine: ['16.x', '18.x', 'xs']
steps:
- name: set vars
id: vars
run: |
echo "node-version=${{ matrix.engine == 'xs' && '18.x' || matrix.engine }}" >> $GITHUB_OUTPUT
echo "test=${{ matrix.engine == 'xs' && 'test:xs' || 'test' }}" >> $GITHUB_OUTPUT
echo "GH_ENGINE=${{ matrix.engine }}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: ${{ steps.vars.outputs.node-version }}
# END-TEST-BOILERPLATE
- name: yarn test (vats)
if: (success() || failure())
run: cd packages/vats && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: notify on failure
if: failure() && github.event_name != 'pull_request'
uses: ./.github/actions/notify-status
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
from: ${{ secrets.NOTIFY_EMAIL_FROM }}
to: ${{ secrets.NOTIFY_EMAIL_TO }}
password: ${{ secrets.NOTIFY_EMAIL_PASSWORD }}
- uses: ./.github/actions/post-test
if: (success() || failure())
continue-on-error: true
timeout-minutes: 4
with:
datadog-token: ${{ secrets.DATADOG_API_KEY }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
# The test-swingset* tests are split by alphabetical test name.
test-swingset:
# BEGIN-TEST-BOILERPLATE
timeout-minutes: 30
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
engine: ['16.x', '18.x', 'xs']
steps:
- name: set vars
id: vars
run: |
echo "node-version=${{ matrix.engine == 'xs' && '18.x' || matrix.engine }}" >> $GITHUB_OUTPUT
echo "test=${{ matrix.engine == 'xs' && 'test:xs' || 'test' }}" >> $GITHUB_OUTPUT
echo "GH_ENGINE=${{ matrix.engine }}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: ${{ steps.vars.outputs.node-version }}
id: restore-node
- run: echo "ENDO_BRANCH=${{ steps.restore-node.outputs.endo-branch }}" >> $GITHUB_ENV
# END-TEST-BOILERPLATE
- name: yarn test (SwingSet)
if: (success() || failure())
run: cd packages/SwingSet && yarn ${{ steps.vars.outputs.test }} 'test/**/test-[A-Da-d]*.js' | $TEST_COLLECT
- name: notify on failure
if: failure() && github.event_name != 'pull_request'
uses: ./.github/actions/notify-status
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
from: ${{ secrets.NOTIFY_EMAIL_FROM }}
to: ${{ secrets.NOTIFY_EMAIL_TO }}
password: ${{ secrets.NOTIFY_EMAIL_PASSWORD }}
- uses: ./.github/actions/post-test
if: (success() || failure())
continue-on-error: true
timeout-minutes: 4
with:
datadog-token: ${{ secrets.DATADOG_API_KEY }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
test-swingset2:
# BEGIN-TEST-BOILERPLATE
timeout-minutes: 30
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
engine: ['16.x', '18.x', 'xs']
steps:
- name: set vars
id: vars
run: |
echo "node-version=${{ matrix.engine == 'xs' && '18.x' || matrix.engine }}" >> $GITHUB_OUTPUT
echo "test=${{ matrix.engine == 'xs' && 'test:xs' || 'test' }}" >> $GITHUB_OUTPUT
echo "GH_ENGINE=${{ matrix.engine }}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: ${{ steps.vars.outputs.node-version }}
id: restore-node
- run: echo "ENDO_BRANCH=${{ steps.restore-node.outputs.endo-branch }}" >> $GITHUB_ENV
# END-TEST-BOILERPLATE
- name: yarn test (SwingSet)
if: (success() || failure())
run: cd packages/SwingSet && yarn ${{ steps.vars.outputs.test }} 'test/**/test-[E-Ie-i]*.js' | $TEST_COLLECT
- name: yarn test (xsnap-lockdown)
if: (success() || failure())
run: cd packages/xsnap-lockdown && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: yarn test (xsnap)
if: (success() || failure())
run: cd packages/xsnap && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
# explicitly test the XS worker, for visibility
- name: yarn test (SwingSet XS Worker)
if: (success() || failure()) && matrix.engine != 'xs'
run: cd packages/SwingSet && yarn test:xs-worker | $TEST_COLLECT
- name: notify on failure
if: failure() && github.event_name != 'pull_request'
uses: ./.github/actions/notify-status
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
from: ${{ secrets.NOTIFY_EMAIL_FROM }}
to: ${{ secrets.NOTIFY_EMAIL_TO }}
password: ${{ secrets.NOTIFY_EMAIL_PASSWORD }}
- uses: ./.github/actions/post-test
if: (success() || failure())
continue-on-error: true
timeout-minutes: 4
with:
datadog-token: ${{ secrets.DATADOG_API_KEY }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
test-swingset3:
# BEGIN-TEST-BOILERPLATE
timeout-minutes: 30
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
engine: ['16.x', '18.x', 'xs']
steps:
- name: set vars
id: vars
run: |
echo "node-version=${{ matrix.engine == 'xs' && '18.x' || matrix.engine }}" >> $GITHUB_OUTPUT
echo "test=${{ matrix.engine == 'xs' && 'test:xs' || 'test' }}" >> $GITHUB_OUTPUT
echo "GH_ENGINE=${{ matrix.engine }}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: ${{ steps.vars.outputs.node-version }}
id: restore-node
- run: echo "ENDO_BRANCH=${{ steps.restore-node.outputs.endo-branch }}" >> $GITHUB_ENV
# END-TEST-BOILERPLATE
- name: yarn test (SwingSet)
if: (success() || failure())
run: cd packages/SwingSet && yarn ${{ steps.vars.outputs.test }} 'test/**/test-[J-Rj-r]*.js' | $TEST_COLLECT
- name: notify on failure
if: failure() && github.event_name != 'pull_request'
uses: ./.github/actions/notify-status
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
from: ${{ secrets.NOTIFY_EMAIL_FROM }}
to: ${{ secrets.NOTIFY_EMAIL_TO }}
password: ${{ secrets.NOTIFY_EMAIL_PASSWORD }}
- uses: ./.github/actions/post-test
if: (success() || failure())
continue-on-error: true
timeout-minutes: 4
with:
datadog-token: ${{ secrets.DATADOG_API_KEY }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
test-swingset4:
# BEGIN-TEST-BOILERPLATE
timeout-minutes: 30
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
engine: ['16.x', '18.x', 'xs']
steps:
- name: set vars
id: vars
run: |
echo "node-version=${{ matrix.engine == 'xs' && '18.x' || matrix.engine }}" >> $GITHUB_OUTPUT
echo "test=${{ matrix.engine == 'xs' && 'test:xs' || 'test' }}" >> $GITHUB_OUTPUT
echo "GH_ENGINE=${{ matrix.engine }}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: ${{ steps.vars.outputs.node-version }}
id: restore-node
- run: echo "ENDO_BRANCH=${{ steps.restore-node.outputs.endo-branch }}" >> $GITHUB_ENV
# END-TEST-BOILERPLATE
- name: yarn test (SwingSet)
if: (success() || failure())
run: cd packages/SwingSet && yarn ${{ steps.vars.outputs.test }} 'test/**/test-[S-Zs-z0-9]*.js' | $TEST_COLLECT
- name: notify on failure
if: failure() && github.event_name != 'pull_request'
uses: ./.github/actions/notify-status
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
from: ${{ secrets.NOTIFY_EMAIL_FROM }}
to: ${{ secrets.NOTIFY_EMAIL_TO }}
password: ${{ secrets.NOTIFY_EMAIL_PASSWORD }}
- uses: ./.github/actions/post-test
if: (success() || failure())
continue-on-error: true
timeout-minutes: 4
with:
datadog-token: ${{ secrets.DATADOG_API_KEY }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
test-zoe-unit:
# BEGIN-TEST-BOILERPLATE
timeout-minutes: 30
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
engine: ['16.x', '18.x', 'xs']
steps:
- name: set vars
id: vars
# END-TEST-BOILERPLATE
run: |
echo "node-version=${{ matrix.engine == 'xs' && '18.x' || matrix.engine }}" >> $GITHUB_OUTPUT
echo "test=${{ matrix.engine == 'xs' && 'test:xs-unit' || 'test:unit' }}" >> $GITHUB_OUTPUT
echo "GH_ENGINE=${{ matrix.engine }}" >> $GITHUB_ENV
# BEGIN-TEST-BOILERPLATE
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: ${{ steps.vars.outputs.node-version }}
# END-TEST-BOILERPLATE
- name: yarn test (zoe)
if: (success() || failure())
timeout-minutes: 30
run: cd packages/zoe && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: notify on failure
if: failure() && github.event_name != 'pull_request'
uses: ./.github/actions/notify-status
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
from: ${{ secrets.NOTIFY_EMAIL_FROM }}
to: ${{ secrets.NOTIFY_EMAIL_TO }}
password: ${{ secrets.NOTIFY_EMAIL_PASSWORD }}
- uses: ./.github/actions/post-test
if: (success() || failure())
continue-on-error: true
timeout-minutes: 4
with:
datadog-token: ${{ secrets.DATADOG_API_KEY }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
test-zoe-swingset:
# BEGIN-TEST-BOILERPLATE
timeout-minutes: 30
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
engine: ['16.x', '18.x', 'xs']
steps:
- name: set vars
id: vars
# END-TEST-BOILERPLATE
run: |
echo "node-version=${{ matrix.engine == 'xs' && '18.x' || matrix.engine }}" >> $GITHUB_OUTPUT
echo "test=${{ matrix.engine == 'xs' && 'test:xs-worker' || 'test:swingset' }}" >> $GITHUB_OUTPUT
echo "GH_ENGINE=${{ matrix.engine }}" >> $GITHUB_ENV
# BEGIN-TEST-BOILERPLATE
- uses: actions/checkout@v3
- uses: ./.github/actions/restore-node
with:
node-version: ${{ steps.vars.outputs.node-version }}
# END-TEST-BOILERPLATE
- name: yarn test (zoe)
if: (success() || failure())
timeout-minutes: 30
run: cd packages/zoe && yarn ${{ steps.vars.outputs.test }} | $TEST_COLLECT
- name: notify on failure
if: failure() && github.event_name != 'pull_request'
uses: ./.github/actions/notify-status
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
from: ${{ secrets.NOTIFY_EMAIL_FROM }}
to: ${{ secrets.NOTIFY_EMAIL_TO }}
password: ${{ secrets.NOTIFY_EMAIL_PASSWORD }}
- uses: ./.github/actions/post-test
if: (success() || failure())
continue-on-error: true
timeout-minutes: 4
with:
datadog-token: ${{ secrets.DATADOG_API_KEY }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}