name: CI on: push: branches: - main pull_request: workflow_dispatch: env: cache_nonce: 0 # Allows for easily busting actions/cache caches nim_version: v1.6.10 jobs: build: strategy: matrix: os: [linux, macos, windows] include: - os: linux builder: ubuntu-latest shell: bash --noprofile --norc -e -o pipefail - os: macos builder: macos-latest shell: bash --noprofile --norc -e -o pipefail - os: windows builder: windows-latest shell: msys2 defaults: run: shell: ${{ matrix.shell }} {0} name: '${{ matrix.os }}' runs-on: ${{ matrix.builder }} timeout-minutes: 80 steps: - name: Checkout sources uses: actions/checkout@v3 with: submodules: recursive - name: Setup Nimbus Build System uses: ./.github/actions/nimbus-build-system with: os: ${{ matrix.os }} shell: ${{ matrix.shell }} nim_version: ${{ env.nim_version }} - name: Unit tests run: make -j${ncpu} test - name: Start Ethereum node with Codex contracts working-directory: vendor/codex-contracts-eth run: | if [[ '${{ matrix.os }}' == 'windows' ]]; then export PATH="${PATH}:/c/program files/nodejs" fi npm install npm start & - name: Contract tests run: make -j${ncpu} testContracts - name: Integration tests run: make -j${ncpu} testIntegration coverage: continue-on-error: true runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v3 with: submodules: recursive - name: Setup Nimbus Build System uses: ./.github/actions/nimbus-build-system with: os: linux nim_version: ${{ env.nim_version }} - name: Generate coverage data run: make -j${ncpu} coverage shell: bash - name: Upload coverage data to Codecov uses: codecov/codecov-action@v3 with: directory: ./coverage/ fail_ci_if_error: true files: ./coverage/coverage.f.info flags: unittests name: codecov-umbrella verbose: true