name: ci-contracts on: push: paths: - 'contracts/**' - 'common/**' pull_request: paths: - 'contracts/**' - 'common/**' jobs: matrix_prep: runs-on: ubuntu-20.04 outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: # creates the matrix strategy from ci-contracts-matrix-includes.json - uses: actions/checkout@v4 - id: set-matrix uses: JoshuaTheMiller/conditional-build-matrix@main with: inputFile: '.github/workflows/ci-contracts-matrix-includes.json' filter: '[?runOnEvent==`${{ github.event_name }}` || runOnEvent==`always`]' build: # since it's going to be compiled into wasm, there's absolutely # no point in running CI on different OS-es runs-on: ubuntu-20.04 env: CARGO_TERM_COLOR: always needs: matrix_prep strategy: fail-fast: false matrix: ${{fromJson(needs.matrix_prep.outputs.matrix)}} steps: - uses: actions/checkout@v4 - name: Setup rust uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.rust }} target: wasm32-unknown-unknown override: true components: rustfmt, clippy - name: Build contracts uses: actions-rs/cargo@v1 env: RUSTFLAGS: '-C link-arg=-s' with: command: build args: --manifest-path contracts/Cargo.toml --workspace --lib --target wasm32-unknown-unknown - name: Run unit tests uses: actions-rs/cargo@v1 with: command: test args: --lib --manifest-path contracts/Cargo.toml - name: Check formatting uses: actions-rs/cargo@v1 with: command: fmt args: --manifest-path contracts/Cargo.toml --all -- --check - name: Run clippy uses: actions-rs/cargo@v1 with: command: clippy args: --lib --manifest-path contracts/Cargo.toml --workspace --all-targets -- -D warnings