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 ETH_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@v2 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@v3 - 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@v1 with: toolchain: ${{ matrix.toolchain }} - name: Setup Rust Cache uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install latest nextest release uses: taiki-e/install-action@nextest - 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@v2 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@v3 - 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@v1 with: toolchain: stable components: clippy - name: Setup Rust Cache uses: Swatinem/rust-cache@v2 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@nightly with: components: rustfmt - run: cargo +nightly fmt --all --check