name: Continuous Integration on: workflow_call: inputs: runs_on: required: false type: string default: ubuntu-latest timeout_minutes: required: false type: number default: 15 secrets: eth_rpc_url: required: true app_id: required: true app_private_key: required: true permissions: id-token: write contents: read env: CARGO_TERM_COLOR: always RPC_URL: ${{ secrets.eth_rpc_url }} jobs: compile_and_test: name: Compile & Test runs-on: ${{ inputs.runs_on }} timeout-minutes: ${{ inputs.timeout_minutes }} strategy: matrix: toolchain: - stable steps: - name: Generate a token id: generate-token uses: getsentry/action-github-app-token@d4b5da6c5e37703f8c3b3e43abb5705b46e159cc with: app_id: ${{ secrets.app_id }} private_key: ${{ secrets.app_private_key }} - name: Install git run: sudo apt update && sudo apt install -y git - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: ref: ${{ github.event.pull_request.head.sha }} - name: Setup git to use https run: | git config --global credential.helper store echo "https://${{ steps.generate-token.outputs.token }}@github.com" > ~/.git-credentials git config --global url."https://x-access-token:${{ steps.generate-token.outputs.token }}@github.com".insteadOf ssh://github.com - name: Setup toolchain uses: dtolnay/rust-toolchain@888c2e1ea69ab0d4330cbf0af1ecc7b68f368cc1 with: toolchain: ${{ matrix.toolchain }} - name: Setup Rust Cache uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 with: cache-on-failure: true - name: Install latest nextest release uses: taiki-e/install-action@b239071b2aedda3db20530301c2d88cd538e90d3 - name: Test run: cargo nextest run --workspace --lib --all-targets && cargo test --doc lint: name: Code Lint runs-on: ${{ inputs.runs_on }} timeout-minutes: ${{ inputs.timeout_minutes }} steps: - name: Generate a token id: generate-token uses: getsentry/action-github-app-token@d4b5da6c5e37703f8c3b3e43abb5705b46e159cc with: app_id: ${{ secrets.app_id }} private_key: ${{ secrets.app_private_key }} - name: Install git run: sudo apt update && sudo apt install -y git - name: Checkout PR (from fork or branch) if: github.event_name == 'pull_request' uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: ref: refs/pull/${{ github.event.pull_request.number }}/head - name: Checkout push branch (main or other) if: github.event_name != 'pull_request' uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: ref: ${{ github.ref }} - name: Setup git to use https run: | git config --global credential.helper store echo "https://${{ steps.generate-token.outputs.token }}@github.com" > ~/.git-credentials git config --global url."https://x-access-token:${{ steps.generate-token.outputs.token }}@github.com".insteadOf ssh://github.com - name: Setup clippy toolchain - stable uses: dtolnay/rust-toolchain@888c2e1ea69ab0d4330cbf0af1ecc7b68f368cc1 with: toolchain: stable components: clippy - name: Setup Rust Cache uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 with: cache-on-failure: true - run: cargo clippy --workspace --lib --all-targets --all-features -- -D clippy::dbg-macro env: RUSTFLAGS: -Dwarnings - run: cargo check --no-default-features env: RUSTFLAGS: -Dwarnings - name: Setup rustfmt toolchain - nightly uses: dtolnay/rust-toolchain@a02741459ec5e501b9843ed30b535ca0a0376ae4 with: components: rustfmt - run: cargo +nightly fmt --all --check