From 0de18996fa9c124c8b3a4a6d2b43b34e9a1f2467 Mon Sep 17 00:00:00 2001 From: kartsan03 Date: Sat, 5 Sep 2026 23:10:08 +0200 Subject: [PATCH 1/8] ci: add bankrun workflow on PR and main --- .github/workflows/bankrun.yml | 36 +++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 .github/workflows/bankrun.yml diff --git a/.github/workflows/bankrun.yml b/.github/workflows/bankrun.yml new file mode 100755 index 0000000..3fa25e7 --- /dev/null +++ b/.github/workflows/bankrun.yml @@ -0,0 +1,36 @@ +name: bankrun + +on: + push: + branches: [main] + pull_request: + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: "20" + cache: npm + + - name: Install Solana CLI + run: | + sh -c "$(curl -sSfL https://release.anza.xyz/v2.1.21/install)" + echo "$HOME/.local/share/solana/install/active_release/bin" >> "$GITHUB_PATH" + + - name: Install Anchor CLI + run: | + cargo install --git https://github.com/coral-xyz/anchor --tag v0.32.1 anchor-cli --locked --force + echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + + - name: npm ci + run: npm ci + + - name: Build program + run: anchor build + + - name: Bankrun tests + run: npx ts-mocha -p ./tests/tsconfig.json tests/stable-invoice.ts --timeout 100000 From 261fcc9ffecfd244a25830770768ab4a8c94c4d8 Mon Sep 17 00:00:00 2001 From: kartsan03 Date: Sat, 5 Sep 2026 23:10:23 +0200 Subject: [PATCH 2/8] chore: normalize bankrun workflow mode to 644 --- .github/workflows/bankrun.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 .github/workflows/bankrun.yml diff --git a/.github/workflows/bankrun.yml b/.github/workflows/bankrun.yml old mode 100755 new mode 100644 From e835ff016a83246c70077aeda61ac734feb9cf5c Mon Sep 17 00:00:00 2001 From: kartsan03 Date: Sat, 5 Sep 2026 23:19:15 +0200 Subject: [PATCH 3/8] ci - pin Anchor 1.1.2 and Solana 4.2.1 to match Cargo.toml --- .github/workflows/bankrun.yml | 48 +++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/.github/workflows/bankrun.yml b/.github/workflows/bankrun.yml index 3fa25e7..3266500 100644 --- a/.github/workflows/bankrun.yml +++ b/.github/workflows/bankrun.yml @@ -6,31 +6,63 @@ on: pull_request: jobs: - test: + bankrun: runs-on: ubuntu-latest + timeout-minutes: 45 + env: + SOLANA_VERSION: "4.2.1" + ANCHOR_VERSION: "1.1.2" steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - name: Setup Node.js + uses: actions/setup-node@v4 with: node-version: "20" cache: npm - - name: Install Solana CLI + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + + - name: Cache Solana + uses: actions/cache@v4 + with: + path: | + ~/.cache/solana/ + ~/.local/share/solana/ + key: ${{ runner.os }}-solana-${{ env.SOLANA_VERSION }} + + - name: Install Solana CLI (Agave / Anza) run: | - sh -c "$(curl -sSfL https://release.anza.xyz/v2.1.21/install)" + sh -c "$(curl -sSfL https://release.anza.xyz/v${SOLANA_VERSION}/install)" echo "$HOME/.local/share/solana/install/active_release/bin" >> "$GITHUB_PATH" + export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH" + solana --version + solana-keygen new --no-bip39-passphrase --silent --outfile "$HOME/.config/solana/id.json" || true + + - name: Cache Anchor / AVM + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/avm + ~/.cargo/bin/anchor + ~/.avm + key: ${{ runner.os }}-anchor-${{ env.ANCHOR_VERSION }} - name: Install Anchor CLI run: | - cargo install --git https://github.com/coral-xyz/anchor --tag v0.32.1 anchor-cli --locked --force + cargo install --git https://github.com/coral-xyz/anchor avm --locked --force + avm install "${ANCHOR_VERSION}" + avm use "${ANCHOR_VERSION}" + echo "$HOME/.avm/bin" >> "$GITHUB_PATH" echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + anchor --version - - name: npm ci + - name: Install npm dependencies run: npm ci - - name: Build program + - name: Build Anchor program run: anchor build - - name: Bankrun tests + - name: Run bankrun tests run: npx ts-mocha -p ./tests/tsconfig.json tests/stable-invoice.ts --timeout 100000 From dd637e6e486924a2bf382fdb9e038128ac0120ef Mon Sep 17 00:00:00 2001 From: kartsan03 Date: Sat, 5 Sep 2026 23:21:07 +0200 Subject: [PATCH 4/8] ci: rust, libudev, and solana keypair for bankrun --- .github/workflows/bankrun.yml | 56 +++++++++++------------------------ 1 file changed, 18 insertions(+), 38 deletions(-) diff --git a/.github/workflows/bankrun.yml b/.github/workflows/bankrun.yml index 3266500..063e362 100644 --- a/.github/workflows/bankrun.yml +++ b/.github/workflows/bankrun.yml @@ -6,63 +6,43 @@ on: pull_request: jobs: - bankrun: + test: runs-on: ubuntu-latest - timeout-minutes: 45 - env: - SOLANA_VERSION: "4.2.1" - ANCHOR_VERSION: "1.1.2" steps: - uses: actions/checkout@v4 - - name: Setup Node.js - uses: actions/setup-node@v4 + - uses: actions/setup-node@v4 with: node-version: "20" cache: npm - - name: Install Rust - uses: dtolnay/rust-toolchain@stable + - uses: dtolnay/rust-toolchain@stable - - name: Cache Solana - uses: actions/cache@v4 - with: - path: | - ~/.cache/solana/ - ~/.local/share/solana/ - key: ${{ runner.os }}-solana-${{ env.SOLANA_VERSION }} + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt-get install -y libudev-dev pkg-config build-essential - - name: Install Solana CLI (Agave / Anza) + - name: Install Solana CLI run: | - sh -c "$(curl -sSfL https://release.anza.xyz/v${SOLANA_VERSION}/install)" + sh -c "$(curl -sSfL https://release.anza.xyz/v2.1.21/install)" echo "$HOME/.local/share/solana/install/active_release/bin" >> "$GITHUB_PATH" - export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH" - solana --version - solana-keygen new --no-bip39-passphrase --silent --outfile "$HOME/.config/solana/id.json" || true - - - name: Cache Anchor / AVM - uses: actions/cache@v4 - with: - path: | - ~/.cargo/bin/avm - ~/.cargo/bin/anchor - ~/.avm - key: ${{ runner.os }}-anchor-${{ env.ANCHOR_VERSION }} - name: Install Anchor CLI run: | - cargo install --git https://github.com/coral-xyz/anchor avm --locked --force - avm install "${ANCHOR_VERSION}" - avm use "${ANCHOR_VERSION}" - echo "$HOME/.avm/bin" >> "$GITHUB_PATH" + cargo install --git https://github.com/coral-xyz/anchor --tag v0.32.1 anchor-cli --locked --force echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - anchor --version - - name: Install npm dependencies + - name: Create Solana keypair + run: | + mkdir -p ~/.config/solana + solana-keygen new --no-bip39-passphrase -o ~/.config/solana/id.json --force + + - name: npm ci run: npm ci - - name: Build Anchor program + - name: Build program run: anchor build - - name: Run bankrun tests + - name: Bankrun tests run: npx ts-mocha -p ./tests/tsconfig.json tests/stable-invoice.ts --timeout 100000 From e30c55a7dd864f7bb5f549ff00a88ef07c298f3c Mon Sep 17 00:00:00 2001 From: kartsan03 Date: Sat, 5 Sep 2026 23:32:58 +0200 Subject: [PATCH 5/8] fix: npmrc legacy-peer-deps for bankrun peer mismatch --- .npmrc | 1 + 1 file changed, 1 insertion(+) create mode 100644 .npmrc diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..521a9f7 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +legacy-peer-deps=true From 71f5b58f8bec3d8e67154f4dfca5d7213e31606f Mon Sep 17 00:00:00 2001 From: kartsan03 Date: Sat, 5 Sep 2026 23:34:14 +0200 Subject: [PATCH 6/8] ci: rust toolchain and solana keypair for bankrun --- .github/workflows/bankrun.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/bankrun.yml b/.github/workflows/bankrun.yml index 063e362..76c5d8c 100644 --- a/.github/workflows/bankrun.yml +++ b/.github/workflows/bankrun.yml @@ -18,11 +18,6 @@ jobs: - uses: dtolnay/rust-toolchain@stable - - name: Install system dependencies - run: | - sudo apt-get update - sudo apt-get install -y libudev-dev pkg-config build-essential - - name: Install Solana CLI run: | sh -c "$(curl -sSfL https://release.anza.xyz/v2.1.21/install)" @@ -35,8 +30,7 @@ jobs: - name: Create Solana keypair run: | - mkdir -p ~/.config/solana - solana-keygen new --no-bip39-passphrase -o ~/.config/solana/id.json --force + mkdir -p $HOME/.config/solana && solana-keygen new --no-bip39-passphrase -o $HOME/.config/solana/id.json --force - name: npm ci run: npm ci From 82b6ad00aae8c8553965840a347b46df42de3d25 Mon Sep 17 00:00:00 2001 From: kartsan03 Date: Sat, 5 Sep 2026 23:35:59 +0200 Subject: [PATCH 7/8] ci: --- .github/workflows/bankrun.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/bankrun.yml b/.github/workflows/bankrun.yml index 76c5d8c..063e362 100644 --- a/.github/workflows/bankrun.yml +++ b/.github/workflows/bankrun.yml @@ -18,6 +18,11 @@ jobs: - uses: dtolnay/rust-toolchain@stable + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt-get install -y libudev-dev pkg-config build-essential + - name: Install Solana CLI run: | sh -c "$(curl -sSfL https://release.anza.xyz/v2.1.21/install)" @@ -30,7 +35,8 @@ jobs: - name: Create Solana keypair run: | - mkdir -p $HOME/.config/solana && solana-keygen new --no-bip39-passphrase -o $HOME/.config/solana/id.json --force + mkdir -p ~/.config/solana + solana-keygen new --no-bip39-passphrase -o ~/.config/solana/id.json --force - name: npm ci run: npm ci From b66722b7ac8c21fac570d3f12e33ade5b55fbd6f Mon Sep 17 00:00:00 2001 From: kartsan03 Date: Sat, 5 Sep 2026 23:48:43 +0200 Subject: [PATCH 8/8] ci: --- .github/workflows/bankrun.yml | 57 +++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 13 deletions(-) diff --git a/.github/workflows/bankrun.yml b/.github/workflows/bankrun.yml index 063e362..8dba19a 100644 --- a/.github/workflows/bankrun.yml +++ b/.github/workflows/bankrun.yml @@ -6,43 +6,74 @@ on: pull_request: jobs: - test: + bankrun: runs-on: ubuntu-latest + timeout-minutes: 45 + env: + SOLANA_VERSION: "4.2.1" + ANCHOR_VERSION: "1.1.2" steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - name: Setup Node.js + uses: actions/setup-node@v4 with: node-version: "20" cache: npm - - uses: dtolnay/rust-toolchain@stable + - name: Install Rust + uses: dtolnay/rust-toolchain@stable - name: Install system dependencies run: | sudo apt-get update sudo apt-get install -y libudev-dev pkg-config build-essential - - name: Install Solana CLI + - name: Cache Solana + uses: actions/cache@v4 + with: + path: | + ~/.cache/solana/ + ~/.local/share/solana/ + key: ${{ runner.os }}-solana-${{ env.SOLANA_VERSION }} + + - name: Install Solana CLI (Agave / Anza) run: | - sh -c "$(curl -sSfL https://release.anza.xyz/v2.1.21/install)" + sh -c "$(curl -sSfL https://release.anza.xyz/v${SOLANA_VERSION}/install)" echo "$HOME/.local/share/solana/install/active_release/bin" >> "$GITHUB_PATH" + export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH" + solana --version + solana-keygen new --no-bip39-passphrase --silent --outfile "$HOME/.config/solana/id.json" || true - - name: Install Anchor CLI + - name: Prefer rustup cargo on PATH run: | - cargo install --git https://github.com/coral-xyz/anchor --tag v0.32.1 anchor-cli --locked --force echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + rustc --version + cargo --version - - name: Create Solana keypair + - name: Cache Anchor / AVM + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/avm + ~/.cargo/bin/anchor + ~/.avm + key: ${{ runner.os }}-anchor-${{ env.ANCHOR_VERSION }} + + - name: Install Anchor CLI run: | - mkdir -p ~/.config/solana - solana-keygen new --no-bip39-passphrase -o ~/.config/solana/id.json --force + cargo install --git https://github.com/coral-xyz/anchor avm --locked --force + avm install "${ANCHOR_VERSION}" + avm use "${ANCHOR_VERSION}" + echo "$HOME/.avm/bin" >> "$GITHUB_PATH" + echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + anchor --version - - name: npm ci + - name: Install npm dependencies run: npm ci - - name: Build program + - name: Build Anchor program run: anchor build - - name: Bankrun tests + - name: Run bankrun tests run: npx ts-mocha -p ./tests/tsconfig.json tests/stable-invoice.ts --timeout 100000