chore: release #64
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: RPC Tests | |
| permissions: | |
| contents: read | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: [main, release/**] | |
| pull_request: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| name: build | |
| runs-on: ubuntu-latest | |
| env: | |
| SCCACHE_GHA_ENABLED: "true" | |
| RUSTC_WRAPPER: "sccache" | |
| PKG_CONFIG_PATH: /usr/lib/pkgconfig | |
| CI_CACHE: "/tmp/.cache" | |
| CI_BUILD: "--locked" | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libdbus-1-dev pkg-config libudev-dev | |
| - run: rustup update | |
| - run: rustup target add wasm32v1-none | |
| - uses: taiki-e/install-action@just | |
| - uses: taiki-e/install-action@nextest | |
| - uses: cargo-bins/cargo-binstall@main | |
| - uses: stellar/stellar-cli@v26.0.0 | |
| - uses: mozilla-actions/sccache-action@v0.0.10 | |
| # Integration tests load registry.wasm + hello_v1/v2.wasm from | |
| # target/stellar/local. The registry contract lives in a sibling repo; | |
| # the hello_v1/v2 fixtures are local (crates/stellar-registry-test/ | |
| # fixtures/contracts) and build with the CLI. Assemble both into the dir. | |
| - name: Checkout stellar-registry/contracts | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: stellar-registry/contracts | |
| path: _contracts | |
| # The contracts repo builds with the default release profile (its | |
| # size-optimized settings moved to [profile.release] in contracts#13); | |
| # it has no `contracts` cargo profile. | |
| - name: Build registry.wasm | |
| run: stellar contract build --package registry --manifest-path _contracts/Cargo.toml | |
| - name: Build hello fixtures | |
| run: | | |
| stellar contract build --profile contracts --package hello_v1 | |
| stellar contract build --profile contracts --package hello_v2 | |
| - name: Assemble test wasms | |
| run: | | |
| mkdir -p target/stellar/local | |
| cp _contracts/target/wasm32v1-none/release/registry.wasm target/stellar/local/ | |
| cp target/wasm32v1-none/contracts/hello_v1.wasm target/stellar/local/ | |
| cp target/wasm32v1-none/contracts/hello_v2.wasm target/stellar/local/ | |
| - run: just build | |
| - name: Create nextest archive | |
| run: cargo nextest archive --archive-file nextest-archive.tar.zst --package stellar-registry-cli --features integration-tests | |
| - name: Package runtime artifacts | |
| run: | | |
| tar -cf - \ | |
| target/debug/stellar-registry \ | |
| target/stellar/local/ \ | |
| | zstd -1 -o runtime-artifacts.tar.zst | |
| - name: Upload nextest archive | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: nextest-archive | |
| path: nextest-archive.tar.zst | |
| retention-days: 1 | |
| - name: Upload runtime artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: runtime-artifacts | |
| path: runtime-artifacts.tar.zst | |
| retention-days: 1 | |
| test: | |
| name: test ${{ matrix.name }} | |
| needs: build | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: registry-cli | |
| filter: "test-integration-registry" | |
| env: | |
| STELLAR_RPC_URL: http://localhost:8000/soroban/rpc | |
| STELLAR_NETWORK_PASSPHRASE: "Standalone Network ; February 2017" | |
| STELLAR_ACCOUNT: default | |
| STELLAR_CONTRACT_ID: core | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: taiki-e/install-action@just | |
| - uses: taiki-e/install-action@nextest | |
| - uses: stellar/stellar-cli@v27.0.0 | |
| # Start the local network through the CLI at the protocol the stellar-cli | |
| # pin targets. Without an explicit protocol, quickstart's local network | |
| # arms its baked-in default (p25) and p27 contracts fail transaction | |
| # simulation on deploy — surfacing as Account NotFound during upload. | |
| - name: Start local Stellar network | |
| run: | | |
| PROTOCOL_VERSION=$(sed -n 's/.*stellar-cli = .*version = "\([0-9]*\).*/\1/p' Cargo.toml | head -1) | |
| if [ -z "$PROTOCOL_VERSION" ]; then | |
| echo "Could not derive protocol version from stellar-cli pin in Cargo.toml" >&2 | |
| exit 1 | |
| fi | |
| echo "Starting local network at protocol $PROTOCOL_VERSION" | |
| stellar container start local --protocol-version "$PROTOCOL_VERSION" | |
| echo "Waiting for RPC + friendbot to become healthy..." | |
| for _ in $(seq 1 50); do | |
| if curl --no-progress-meter --fail-with-body -X POST "http://localhost:8000/soroban/rpc" \ | |
| -H 'Content-Type: application/json' \ | |
| -d '{"jsonrpc":"2.0","id":8675309,"method":"getNetwork"}' >/dev/null 2>&1 \ | |
| && curl --no-progress-meter "http://localhost:8000/friendbot" 2>/dev/null \ | |
| | grep -q '"invalid_field": "addr"'; then | |
| echo "Local network healthy." | |
| exit 0 | |
| fi | |
| sleep 2 | |
| done | |
| echo "Local network failed to become healthy in time." >&2 | |
| docker logs stellar --tail 100 || true | |
| exit 1 | |
| - name: Download nextest archive | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: nextest-archive | |
| - name: Download runtime artifacts | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: runtime-artifacts | |
| - name: Extract runtime artifacts | |
| run: zstd -d runtime-artifacts.tar.zst --stdout | tar xf - | |
| - run: stellar keys generate default --fund | |
| - name: Extract nextest archive | |
| run: | | |
| mkdir -p /tmp/nextest-run | |
| cargo nextest run --archive-file nextest-archive.tar.zst --extract-to /tmp/nextest-run --workspace-remap . --no-run | |
| cp -a /tmp/nextest-run/target/* target/ | |
| - name: Run tests | |
| run: just ${{ matrix.filter }} true |