-
Notifications
You must be signed in to change notification settings - Fork 37
154 lines (149 loc) · 6.01 KB
/
Copy pathtests.yml
File metadata and controls
154 lines (149 loc) · 6.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
name: RPC Tests
permissions:
contents: read
on:
workflow_dispatch:
push:
branches: [main, release/**]
pull_request:
paths-ignore:
- "docs/site/**"
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@v27.0.0
- uses: mozilla-actions/sccache-action@v0.0.10
- run: just build
- run: just build-cli-test-contracts
- name: Create nextest archive
run: cargo nextest archive --archive-file nextest-archive.tar.zst --package stellar-scaffold-cli --package stellar-scaffold-reporter --features integration-tests
- name: Package runtime artifacts
run: |
tar -cf - \
target/debug/stellar-scaffold \
target/debug/stellar-scaffold-reporter \
crates/stellar-scaffold-test/fixtures/soroban-init-boilerplate/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: scaffold-cli (build_clients)
filter: "test-integration-scaffold-build-clients"
- name: scaffold-cli (features)
filter: "test-integration-scaffold-features"
- name: scaffold-cli (examples 1-14)
filter: "test-integration-scaffold-examples-1"
- name: scaffold-cli (examples 15-27)
filter: "test-integration-scaffold-examples-2"
- name: reporter
filter: "test-integration-reporter"
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 itself — the same path
# `stellar scaffold build` drives for users — so the suite validates the
# real plumbing. Without an explicit protocol, quickstart's local network
# arms its baked-in default (p25) and p27 contracts fail transaction
# simulation on deploy.
- name: Start local Stellar network
run: |
# Single source of truth: derive the protocol from the stellar-cli pin
# in Cargo.toml — the same value build.rs bakes into the CLI binary.
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/
# If this PR's branch name also exists on the UI monorepo, point the
# degit-based tests at that branch so coordinated cross-repo changes can
# go green before merging.
- name: Resolve UI repo ref
run: |
REF="${{ github.head_ref }}"
if [ -n "$REF" ] && git ls-remote --exit-code --heads \
https://github.com/stellar-scaffold/ui "$REF" >/dev/null 2>&1; then
echo "STELLAR_SCAFFOLD_UI_REPO=stellar-scaffold/ui#$REF" >> "$GITHUB_ENV"
echo "Pinned UI monorepo -> $REF"
else
echo "Using default UI monorepo (main)"
fi
- name: Run tests
run: just ${{ matrix.filter }} true