Skip to content

Release v17.0.0 rc.2 (#1662) #176

Release v17.0.0 rc.2 (#1662)

Release v17.0.0 rc.2 (#1662) #176

Workflow file for this run

name: Guide snippets (local network)
# Executes the docs guide snippets (examples/guides/*.ts) on every PR
# against a local stellar/quickstart network, so a change that breaks the
# documented flows at runtime cannot merge. The snippets keep their real
# testnet URLs and passphrase; config/guides-local-setup.ts redirects them
# to the service container at the transport layer. Depends on nothing
# outside the runner, so it is reliable enough to be a required check.
# Real-testnet drift (Horizon deployments, friendbot changes, protocol
# upgrades) is only checked at release time: `preversion` runs
# `pnpm test:guides` against real testnet. Bump this workflow's image pin
# periodically so the local network tracks what testnet actually runs.
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
# Rapid pushes to a PR would otherwise stack redundant quickstart runs.
concurrency:
group: guides-pr-${{ github.ref }}
cancel-in-progress: true
jobs:
run_guides_local:
# Stable, short status-check context: this name is (to be) listed in the
# protect-main ruleset as a required check. Renaming it strands every PR
# on an "Expected" check (see the build_and_test (20) placeholder in
# tests.yml for how that ends). Never add a paths: filter to this
# workflow either — a required check skipped by a path filter blocks
# merge forever.
name: guides-local
runs-on: ubuntu-latest
timeout-minutes: 30
services:
quickstart:
# Protocol 27 to match what the SDK and the guides document (the
# protocol-27 Soroban auth guide depends on it). This digest is
# deliberately NEWER than e2e.yml's pin, whose core only supports
# protocol 25 — when bumping either workflow's image, check the
# other and confirm PROTOCOL_VERSION is still <= the image's
# core_supported_protocol_version.
image: stellar/quickstart:testing@sha256:3b98cc624a235215bbb2dedd18bd3ec3a498053b6b6533533b6a0d94354a7885
ports:
- 8000:8000
env:
ENABLE_LOGS: true
NETWORK: local
ENABLE_SOROBAN_RPC: true
PROTOCOL_VERSION: 27
options: >-
--health-cmd "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\"}' &&
curl --no-progress-meter \"http://localhost:8000/friendbot\" | grep
'\"invalid_field\": \"addr\"'" --health-interval 10s --health-timeout
5s --health-retries 50
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Setup pnpm
uses: pnpm/action-setup@v6
- name: Install Node (22.x)
uses: actions/setup-node@v7
with:
node-version: "22.x"
cache: pnpm
cache-dependency-path: pnpm-lock.yaml
- name: Enable Corepack
run: corepack enable
- name: Install Dependencies
run: pnpm install --frozen-lockfile --network-concurrency 1
- name: Run guide snippets against local network
run: pnpm run test:guides:local