refactor: set up monorepo #1535
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: Build, Test | |
on: | |
pull_request: | |
workflow_dispatch: | |
env: | |
MAINNET_RPC: ${{ secrets.MAINNET_RPC }} | |
jobs: | |
install: | |
name: Install on Node.js v${{ matrix.node-version }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [18, 20] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install node_modules | |
uses: OffchainLabs/actions/node-modules/install@main | |
with: | |
cache-key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}-monorepo | |
lint: | |
name: Lint on Node.js v${{ matrix.node-version }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [18, 20] | |
needs: install | |
permissions: | |
checks: write # https://github.com/mikepenz/action-junit-report/issues/23#issuecomment-1412597753 | |
env: | |
TEST_PATH: /tmp/test-results | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install node_modules | |
uses: OffchainLabs/actions/node-modules/install@main | |
- name: Lint sdk | |
run: | | |
yarn gen:abi | |
yarn build --reporter-options output=$TEST_PATH/sdk.xml | |
yarn lint --format junit -o $TEST_PATH/sdk-lint.xml | |
- name: Upload build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: lint-results | |
path: ${{ env.TEST_PATH }} | |
- name: Publish Test Report | |
uses: mikepenz/action-junit-report@v3 | |
if: always() # always run even if the previous step fails | |
with: | |
report_paths: '${{ env.TEST_PATH }}/sdk-lint.xml' | |
fail_on_failure: false | |
# TODO: need to fix codecov, hasn't been working for a while according to #172 comment | |
- name: Upload Coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
fail_ci_if_error: false | |
verbose: false | |
audit: | |
name: Audit on Node.js v${{ matrix.node-version }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [18, 20] | |
needs: install | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install node_modules | |
uses: OffchainLabs/actions/node-modules/install@main | |
- run: yarn audit:ci | |
test-unit: | |
name: Test (Unit) on Node.js v${{ matrix.node-version }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [18, 20] | |
needs: install | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install node_modules | |
uses: OffchainLabs/actions/node-modules/install@main | |
- name: Build | |
run: | | |
yarn gen:abi | |
yarn build | |
- name: Run unit tests | |
run: CI=true yarn test:unit | |
test-integration: | |
name: Test (Integration) on Node.js v${{ matrix.node-version }}${{ matrix.orbit-test == '1' && ' with L3' || '' }}${{ matrix.decimals == '16' && ' with custom gas token (16 decimals)' || matrix.decimals == '20' && ' with custom gas token (20 decimals)' || matrix.decimals == '18' && ' with custom gas token (18 decimals)' || '' }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false # runs all tests to completion even if one fails | |
matrix: | |
include: | |
- orbit-test: '0' | |
node-version: 18 | |
- orbit-test: '0' | |
node-version: 20 | |
- orbit-test: '1' | |
node-version: 18 | |
- orbit-test: '1' | |
node-version: 20 | |
- orbit-test: '1' | |
decimals: 16 | |
node-version: 18 | |
- orbit-test: '1' | |
decimals: 16 | |
node-version: 20 | |
- orbit-test: '1' | |
decimals: 18 | |
node-version: 18 | |
- orbit-test: '1' | |
decimals: 18 | |
node-version: 20 | |
- orbit-test: '1' | |
decimals: 20 | |
node-version: 18 | |
- orbit-test: '1' | |
decimals: 20 | |
node-version: 20 | |
needs: install | |
env: | |
ORBIT_TEST: ${{ matrix.orbit-test }} | |
DECIMALS: ${{ matrix.decimals || '18' }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install node_modules | |
uses: OffchainLabs/actions/node-modules/install@main | |
- name: Set up the local node | |
uses: OffchainLabs/actions/run-nitro-test-node@main | |
with: | |
nitro-testnode-ref: adapt-bridge-amount | |
l3-node: ${{ matrix.orbit-test == '1' }} | |
args: ${{ matrix.decimals == 16 && '--l3-fee-token --l3-fee-token-decimals 16' || matrix.decimals == 20 && '--l3-fee-token --l3-fee-token-decimals 20' || matrix.decimals == 18 && '--l3-fee-token' || '' }} | |
- name: Copy .env | |
run: cp ./.env-sample ./.env | |
- name: Build | |
run: | | |
yarn gen:abi | |
yarn build | |
- name: Generate network file | |
run: yarn gen:network | |
- name: Run integration tests | |
run: CI=true yarn test:integration |