feat: add continuous integration #1
Workflow file for this run
This file contains hidden or 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: CI | |
| on: [push, pull_request] | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| jobs: | |
| changes: | |
| name: Detect changes | |
| runs-on: ubuntu-latest | |
| outputs: | |
| wallet: ${{ steps.filter.outputs.wallet }} | |
| protocol: ${{ steps.filter.outputs.protocol }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Check changed paths | |
| id: filter | |
| uses: dorny/paths-filter@v3 | |
| with: | |
| filters: | | |
| wallet: | |
| - 'wallet/**' | |
| protocol: | |
| - 'protocol/**' | |
| wallet: | |
| name: Build and test wallet | |
| needs: changes | |
| if: needs.changes.outputs.wallet == 'true' | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| rust: | |
| - stable | |
| features: | |
| - --features default | |
| - --no-default-features | |
| - --all-features | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Generate cache key | |
| run: echo "${{ matrix.rust }} ${{ matrix.features }}" | tee .cache_key | |
| - name: Cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('.cache_key') }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }} | |
| - name: Setup Rust Toolchain | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: ${{ matrix.rust }} | |
| profile: minimal | |
| override: true | |
| components: rustfmt, clippy | |
| - name: Build | |
| run: cargo build ${{ matrix.features }} | |
| - name: Clippy | |
| run: cargo clippy -- -D warnings | |
| - name: Unit and Integration tests | |
| run: cargo test | |
| protocol: | |
| name: Build and test protocol | |
| needs: changes | |
| if: needs.changes.outputs.protocol == 'true' | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| rust: | |
| - stable | |
| features: | |
| - --features default | |
| - --no-default-features | |
| - --all-features | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Generate cache key | |
| run: echo "${{ matrix.rust }} ${{ matrix.features }}" | tee .cache_key | |
| - name: Cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('.cache_key') }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }} | |
| - name: Setup Rust Toolchain | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: ${{ matrix.rust }} | |
| profile: minimal | |
| override: true | |
| components: rustfmt, clippy | |
| - name: Build | |
| run: cargo build ${{ matrix.features }} | |
| - name: Clippy | |
| run: cargo clippy -- -D warnings | |
| - name: Unit and Integration tests | |
| run: cargo test | |
| fmt: | |
| name: Rust fmt | |
| needs: changes | |
| if: needs.changes.outputs.wallet == 'true' || needs.changes.outputs.protocol == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Rust Toolchain | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: stable | |
| profile: minimal | |
| override: true | |
| components: rustfmt | |
| - name: Check fmt | |
| run: cargo fmt --all -- --check |