name: CI on: push: branches: [main] pull_request: branches: [main] env: CARGO_TERM_COLOR: always jobs: self-care: name: Flake self-check runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Check Nix flake inputs uses: DeterminateSystems/flake-checker-action@v7 with: fail-mode: true pre-commit-checks: name: "Cargo fmt, typos" runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v4 - name: Install Nix uses: DeterminateSystems/nix-installer-action@v11 - name: Nix Cache uses: DeterminateSystems/magic-nix-cache-action@v6 - name: Rust Cache uses: Swatinem/rust-cache@v2 - name: Cargo fmt run: | nix develop -i -L .#nightly --command bash -c ' # Force use of Nix-provided rustfmt export RUSTFMT=$(command -v rustfmt) cargo fmt --check ' - name: typos run: nix develop -i -L .#nightly --command typos clippy: name: "Stable build, clippy and test" runs-on: ubuntu-latest strategy: matrix: build-args: [ -p cdk, -p cdk --no-default-features, -p cdk --no-default-features --features wallet, -p cdk --no-default-features --features mint, -p cdk --no-default-features --features "mint swagger", -p cdk-redb, -p cdk-sqlite, -p cdk-axum --no-default-features, -p cdk-axum --no-default-features --features swagger, -p cdk-axum --no-default-features --features redis, -p cdk-axum --no-default-features --features "redis swagger", -p cdk-axum, -p cdk-cln, -p cdk-lnd, -p cdk-phoenixd, -p cdk-strike, -p cdk-lnbits, -p cdk-fake-wallet, --bin cdk-cli, --bin cdk-mintd, --bin cdk-mintd --no-default-features --features swagger, --bin cdk-mintd --no-default-features --features redis, --bin cdk-mintd --no-default-features --features "redis swagger", ] steps: - name: checkout uses: actions/checkout@v4 - name: Install Nix uses: DeterminateSystems/nix-installer-action@v11 - name: Nix Cache uses: DeterminateSystems/magic-nix-cache-action@v6 - name: Rust Cache uses: Swatinem/rust-cache@v2 - name: Build run: nix develop -i -L .#stable --command cargo build ${{ matrix.build-args }} - name: Clippy run: nix develop -i -L .#stable --command cargo clippy ${{ matrix.build-args }} -- -D warnings - name: Test run: nix develop -i -L .#stable --command cargo test ${{ matrix.build-args }} itest: name: "Integration regtest tests" runs-on: ubuntu-latest strategy: matrix: build-args: [ -p cdk-integration-tests, ] database: [ REDB, SQLITE, MEMORY, ] steps: - name: checkout uses: actions/checkout@v4 - name: Install Nix uses: DeterminateSystems/nix-installer-action@v11 - name: Nix Cache uses: DeterminateSystems/magic-nix-cache-action@v6 - name: Rust Cache uses: Swatinem/rust-cache@v2 - name: Clippy run: nix develop -i -L .#stable --command cargo clippy ${{ matrix.build-args }} -- -D warnings - name: Test run: nix develop -i -L .#stable --command just itest ${{ matrix.database }} fake-wallet-itest: name: "Integration fake wallet tests" runs-on: ubuntu-latest strategy: matrix: build-args: [ -p cdk-integration-tests, ] database: [ REDB, SQLITE, MEMORY, ] steps: - name: checkout uses: actions/checkout@v4 - name: Install Nix uses: DeterminateSystems/nix-installer-action@v11 - name: Nix Cache uses: DeterminateSystems/magic-nix-cache-action@v6 - name: Rust Cache uses: Swatinem/rust-cache@v2 - name: Clippy run: nix develop -i -L .#stable --command cargo clippy ${{ matrix.build-args }} -- -D warnings - name: Test fake mint run: nix develop -i -L .#stable --command just fake-mint-itest ${{ matrix.database }} msrv-build: name: "MSRV build" runs-on: ubuntu-latest strategy: matrix: build-args: [ -p cdk, -p cdk --no-default-features, -p cdk --no-default-features --features wallet, -p cdk --no-default-features --features mint, -p cdk-axum, -p cdk-axum --no-default-features --features redis, -p cdk-strike, -p cdk-lnbits, -p cdk-phoenixd, -p cdk-fake-wallet, -p cdk-cln, ] steps: - name: checkout uses: actions/checkout@v4 - name: Install Nix uses: DeterminateSystems/nix-installer-action@v11 - name: Nix Cache uses: DeterminateSystems/magic-nix-cache-action@v6 - name: Rust Cache uses: Swatinem/rust-cache@v2 - name: Build run: nix develop -i -L .#msrv --command cargo build ${{ matrix.build-args }} db-msrv-build: name: "DB MSRV build" runs-on: ubuntu-latest strategy: matrix: build-args: [ -p cdk-sqlite, -p cdk-redb, ] steps: - name: checkout uses: actions/checkout@v4 - name: Install Nix uses: DeterminateSystems/nix-installer-action@v11 - name: Nix Cache uses: DeterminateSystems/magic-nix-cache-action@v6 - name: Rust Cache uses: Swatinem/rust-cache@v2 - name: Build run: nix develop -i -L .#db_shell --command cargo build ${{ matrix.build-args }} check-wasm: name: Check WASM runs-on: ubuntu-latest strategy: matrix: rust: - stable target: - wasm32-unknown-unknown build-args: [ -p cdk, -p cdk --no-default-features, -p cdk --no-default-features --features wallet, ] steps: - name: checkout uses: actions/checkout@v4 - name: Install Nix uses: DeterminateSystems/nix-installer-action@v11 - name: Nix Cache uses: DeterminateSystems/magic-nix-cache-action@v6 - name: Rust Cache uses: Swatinem/rust-cache@v2 - name: Build cdk and binding run: nix develop -i -L ".#${{ matrix.rust }}" --command cargo build ${{ matrix.build-args }} --target ${{ matrix.target }} check-wasm-msrv: name: Check WASM runs-on: ubuntu-latest strategy: matrix: rust: - msrv target: - wasm32-unknown-unknown build-args: [ -p cdk, -p cdk --no-default-features, -p cdk --no-default-features --features wallet, ] steps: - name: checkout uses: actions/checkout@v4 - name: Install Nix uses: DeterminateSystems/nix-installer-action@v11 - name: Nix Cache uses: DeterminateSystems/magic-nix-cache-action@v6 - name: Rust Cache uses: Swatinem/rust-cache@v2 - name: Build cdk wasm run: nix develop -i -L ".#${{ matrix.rust }}" --command cargo build ${{ matrix.build-args }} --target ${{ matrix.target }}