From 8d1f52a4d25b245942c10bbbd62dcf278e9282f1 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Sun, 12 Oct 2025 21:33:37 -0700 Subject: [PATCH 01/28] use quickstart build pipeline and refined system test build --- .github/workflows/e2e.yml | 158 +++++++++++++++++++------------------- 1 file changed, 77 insertions(+), 81 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 27e50ff67..51e8afcbb 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -10,30 +10,47 @@ concurrency: cancel-in-progress: true jobs: - integration: - name: System tests - strategy: - matrix: - scenario-filter: [ "^TestDappDevelop$/^.*$" ] + build-quickstart: + uses: stellar/quickstart/.github/workflows/build.yml@main + with: + images: | + [ + { + "tag": "rpc-custom", + "config": { + "protocol_version_default": 23 + }, + "deps": [ + { "name": "xdr", "repo": "stellar/rs-stellar-xdr", "ref": "v23.0.0" }, + { "name": "core", "repo": "stellar/stellar-core", "ref": "v23.0.1", "options": { "configure_flags": "--disable-tests" } }, + { "name": "rpc", "repo": "stellar/stellar-rpc", "ref": "${{ github.ref }}" }, + { "name": "horizon", "repo": "stellar/go", "ref": "horizon-v23.0.0" }, + { "name": "friendbot", "repo": "stellar/go", "ref": "horizon-v23.0.0" }, + { "name": "lab", "repo": "stellar/laboratory", "ref": "main" } + ], + "additional-tests": [] + } + ] + archs: '["amd64"]' + run-quickstart: + # this will host rpc at http://localhost:8000/rpc + needs: build-quickstart + runs-on: ubuntu-latest + steps: + - uses: stellar/quickstart@main + with: + artifact: image-quickstart-rpc-custom-amd64.tar + tag: rpc-custom-amd64 + enable: core,rpc + + build-system-test: runs-on: ubuntu-latest-4-cores - env: + env: # the gh tag of system-test repo version to run - SYSTEM_TEST_GIT_REF: master + SYSTEM_TEST_GIT_REF: refs/pull/146/head - # the soroban CLI & RPC source code to compile and run from system test - # refers to checked out source of current git hub ref context + # the soroban CLI source code to compile and run from system test SYSTEM_TEST_STELLAR_CLI_REF: https://github.com/stellar/stellar-cli.git\#main - SYSTEM_TEST_STELLAR_RPC_REF: ${{ github.workspace }}/stellar-rpc - SYSTEM_TEST_GO_GIT_REF: https://github.com/stellar/go.git - - # core git ref should be latest commit for stable soroban functionality - # the core bin can either be compiled in-line here as part of ci, - SYSTEM_TEST_CORE_GIT_REF: - SYSTEM_TEST_CORE_COMPILE_CONFIGURE_FLAGS: "--disable-tests" - # or set SYSTEM_TEST_CORE_GIT_REF to empty, and set SYSTEM_TEST_CORE_IMAGE - # to pull a pre-compiled image from dockerhub instead - SYSTEM_TEST_CORE_IMAGE: stellar/stellar-core:23.0.1-2670.050eacf11.focal - SYSTEM_TEST_CORE_IMAGE_BIN_PATH: /usr/bin/stellar-core # sets the version of rust toolchain that will be pre-installed in the # test runtime environment, tests invoke rustc/cargo @@ -49,79 +66,58 @@ jobs: # precedence over any SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO: SYSTEM_TEST_JS_STELLAR_SDK_GH_REF: + steps: + - uses: actions/checkout@v4 + name: checkout system-test + with: + repository: stellar/system-test + ref: ${{ env.SYSTEM_TEST_GIT_REF }} + path: system-test + - if: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != ''}} + name: prepare local js-stellar-sdk + run: | + rm -rf $GITHUB_WORKSPACE/system-test/js-stellar-sdk; + - if: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != ''}} + uses: actions/checkout@v4 + with: + repository: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }} + ref: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} + path: system-test/js-stellar-sdk + - uses: stellar/actions/rust-cache@main + - name: Build system test with component versions + run: | + cd $GITHUB_WORKSPACE/system-test + if [ -z "$SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO" ]; then \ + JS_STELLAR_SDK_REF="$SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION"; \ + else \ + JS_STELLAR_SDK_REF="file:/home/tester/js-stellar-sdk"; \ + fi + make \ + STELLAR_CLI_GIT_REF=$SYSTEM_TEST_STELLAR_CLI_REF \ + RUST_TOOLCHAIN_VERSION=$SYSTEM_TEST_RUST_TOOLCHAIN_VERSION \ + JS_STELLAR_SDK_NPM_VERSION=$JS_STELLAR_SDK_REF \ + build - # the version of rs-stellar-xdr to use for quickstart - SYSTEM_TEST_RS_XDR_GIT_REF: v23.0.0 - - # system test will build quickstart image internally to use for running - # the service stack configured in standalone network mode(core, rpc) - SYSTEM_TEST_QUICKSTART_GIT_REF: https://github.com/stellar/quickstart.git#main - - # triggers system test to log out details from quickstart's logs and test - # steps + integration: + name: System tests + needs: [build-system-test,run-quickstart] + strategy: + matrix: + scenario-filter: [ "^TestDappDevelop$/^.*$" ] + runs-on: ubuntu-latest + env: SYSTEM_TEST_VERBOSE_OUTPUT: "true" # the soroban test cases will compile various contracts from the examples repo SYSTEM_TEST_SOROBAN_EXAMPLES_GIT_HASH: "v22.0.1" SYSTEM_TEST_SOROBAN_EXAMPLES_GIT_REPO: "https://github.com/stellar/soroban-examples.git" - - PROTOCOL_VERSION_DEFAULT: 23 steps: - - uses: actions/checkout@v4 - name: checkout system-test - with: - repository: stellar/system-test - ref: ${{ env.SYSTEM_TEST_GIT_REF }} - path: system-test - - uses: actions/checkout@v4 - name: checkout stellar cli - with: - repository: stellar/stellar-cli - path: stellar-cli - - uses: actions/checkout@v4 - name: checkout stellar-rpc - with: - repository: stellar/stellar-rpc - path: stellar-rpc - - - if: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != ''}} - name: prepare local js-stellar-sdk - run: | - rm -rf $GITHUB_WORKSPACE/system-test/js-stellar-sdk; - - if: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != ''}} - uses: actions/checkout@v4 - with: - repository: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }} - ref: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} - path: system-test/js-stellar-sdk - - uses: stellar/actions/rust-cache@main - - name: Build system test with component versions - run: | - cd $GITHUB_WORKSPACE/system-test - if [ -z "$SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO" ]; then \ - JS_STELLAR_SDK_REF="$SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION"; \ - else \ - JS_STELLAR_SDK_REF="file:/home/tester/js-stellar-sdk"; \ - fi - make \ - PROTOCOL_VERSION_DEFAULT=$PROTOCOL_VERSION_DEFAULT \ - CORE_GIT_REF=$SYSTEM_TEST_CORE_GIT_REF \ - CORE_COMPILE_CONFIGURE_FLAGS="$SYSTEM_TEST_CORE_COMPILE_CONFIGURE_FLAGS" \ - CORE_IMAGE=$SYSTEM_TEST_CORE_IMAGE \ - CORE_IMAGE_BIN_PATH=$SYSTEM_TEST_CORE_IMAGE_BIN_PATH \ - STELLAR_RPC_GIT_REF=$SYSTEM_TEST_STELLAR_RPC_REF \ - STELLAR_CLI_GIT_REF=$SYSTEM_TEST_STELLAR_CLI_REF \ - RUST_TOOLCHAIN_VERSION=$SYSTEM_TEST_RUST_TOOLCHAIN_VERSION \ - RS_XDR_GIT_REF=$SYSTEM_TEST_RS_XDR_GIT_REF \ - QUICKSTART_GIT_REF=$SYSTEM_TEST_QUICKSTART_GIT_REF \ - JS_STELLAR_SDK_NPM_VERSION=$JS_STELLAR_SDK_REF \ - GO_GIT_REF=$SYSTEM_TEST_GO_GIT_REF \ - build - name: Run system test scenarios run: | docker run \ --rm -t --name e2e_test stellar/system-test:dev \ --VerboseOutput $SYSTEM_TEST_VERBOSE_OUTPUT \ + --TargetNetworkRPCURL http://host.docker.internal:8000/rpc \ --TestFilter "${{ matrix.scenario-filter }}" \ --SorobanExamplesGitHash $SYSTEM_TEST_SOROBAN_EXAMPLES_GIT_HASH \ --SorobanExamplesRepoURL $SYSTEM_TEST_SOROBAN_EXAMPLES_GIT_REPO From 252f48b0e5ccdadf2a7705e0bd4e6b31e4c97611 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Mon, 13 Oct 2025 14:12:28 -0700 Subject: [PATCH 02/28] use multiple jobs for system-test cache detection --- .github/workflows/e2e.yml | 195 ++++++++++++++++++++++++++++---------- 1 file changed, 143 insertions(+), 52 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 51e8afcbb..748e63da2 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -9,63 +9,130 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref_protected == 'true' && github.sha || github.ref }} cancel-in-progress: true +env: + # the gh tag of system-test repo version to run + SYSTEM_TEST_GIT_REF: refs/pull/146/head + + # the soroban CLI source code to compile and run from system test + SYSTEM_TEST_STELLAR_CLI_REF: v23.1.4 + + # sets the version of rust toolchain that will be pre-installed in the + # test runtime environment, tests invoke rustc/cargo + SYSTEM_TEST_RUST_TOOLCHAIN_VERSION: stable + + # set the version of js-stellar-sdk to use, need to choose one of either + # resolution options, using npm release or a gh ref: + # + # option #1, set the version of stellar-sdk based on a npm release version + SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION: 14.0.0 + # option #2, set the version of stellar-sdk used as a ref to a gh repo if + # a value is set on SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO, it takes + # precedence over any SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION + SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO: + SYSTEM_TEST_JS_STELLAR_SDK_GH_REF: + + # define the versions of components within quickstart that comprise the rest of target stack to test upon + SYSTEM_TEST_STELLAR_XDR_VERSION: v23.0.0 + SYSTEM_TEST_STELLAR_CORE_VERSION: v23.0.1 + SYSTEM_TEST_HORIZON_VERSION: horizon-v23.0.0 + SYSTEM_TEST_LAB_VERSION: main + SYSTEM_TEST_PROTOCOL_VERSION: 23 + + SYSTEM_TEST_IMAGE: ghcr.io/${{ github.repository_owner }}/${{ github.repository_id }}/system-test" + jobs: + prepare-config: + runs-on: ubuntu-latest + outputs: + images-config: ${{ steps.set-config.outputs.images }} + system-test-image-cached: "${{env.SYSTEM_TEST_IMAGE}}:${{ steps.set-cache-key.outputs.cache-key }}" + steps: + - id: set-cache-key + run: | + # Fetch commit SHAs for each dependency repo + SYSTEM_TEST_SHA=$(git ls-remote https://github.com/stellar/system-test.git ${{ env.SYSTEM_TEST_GIT_REF }} | awk '{print $1}') + if [ -z "$SYSTEM_TEST_SHA" ]; then + echo "Error: Could not find ref ${{ env.SYSTEM_TEST_GIT_REF }} in stellar/system-test" + exit 1 + fi + + STELLAR_CLI_SHA=$(git ls-remote https://github.com/stellar/stellar-cli.git ${{ env.SYSTEM_TEST_STELLAR_CLI_REF }} | awk '{print $1}') + if [ -z "$STELLAR_CLI_SHA" ]; then + echo "Error: Could not find ref ${{ env.SYSTEM_TEST_STELLAR_CLI_REF }} in stellar/stellar-cli" + exit 1 + fi + + # Handle JS Stellar SDK + if [ -n "${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }}" ]; then + JS_SDK_PART=$(git ls-remote https://github.com/${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }}.git ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} | awk '{print $1}') + if [ -z "$JS_SDK_PART" ]; then + echo "Error: Could not find ref ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} in ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }}" + exit 1 + fi + else + JS_SDK_PART="${{ env.SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION }}" + fi + + # Create cache key by hashing all components + CACHE_INPUT="${SYSTEM_TEST_SHA}${STELLAR_CLI_SHA}${JS_SDK_PART}" + CACHE_KEY=$(echo -n "$CACHE_INPUT" | sha256sum | cut -c1-16) + echo "cache-key=${CACHE_KEY}" >> $GITHUB_OUTPUT + echo "Generated cache key: ${CACHE_KEY}" + + - id: set-config + run: | + cat <> $GITHUB_OUTPUT + images< /dev/null 2>&1; then + echo "Image exists in registry" + echo "exists=true" >> $GITHUB_OUTPUT + else + echo "Image not found in registry" + echo "exists=false" >> $GITHUB_OUTPUT + fi build-system-test: runs-on: ubuntu-latest-4-cores - env: - # the gh tag of system-test repo version to run - SYSTEM_TEST_GIT_REF: refs/pull/146/head - - # the soroban CLI source code to compile and run from system test - SYSTEM_TEST_STELLAR_CLI_REF: https://github.com/stellar/stellar-cli.git\#main - - # sets the version of rust toolchain that will be pre-installed in the - # test runtime environment, tests invoke rustc/cargo - SYSTEM_TEST_RUST_TOOLCHAIN_VERSION: stable - - # set the version of js-stellar-sdk to use, need to choose one of either - # resolution options, using npm release or a gh ref: - # - # option #1, set the version of stellar-sdk based on a npm release version - SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION: 14.0.0 - # option #2, set the version of stellar-sdk used as a ref to a gh repo if - # a value is set on SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO, it takes - # precedence over any SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION - SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO: - SYSTEM_TEST_JS_STELLAR_SDK_GH_REF: + needs: [prepare-config, check-system-test-cache] + if: needs.check-system-test-cache.outputs.cache-hit != 'true' + env: + SYSTEM_TEST_IMAGE: ${{ needs.prepare-config.outputs.system-test-image-cached }} steps: - uses: actions/checkout@v4 name: checkout system-test @@ -73,17 +140,21 @@ jobs: repository: stellar/system-test ref: ${{ env.SYSTEM_TEST_GIT_REF }} path: system-test - - if: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != ''}} + + - if: env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != '' name: prepare local js-stellar-sdk run: | rm -rf $GITHUB_WORKSPACE/system-test/js-stellar-sdk; - - if: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != ''}} + + - if: env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != '' uses: actions/checkout@v4 with: repository: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }} ref: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} path: system-test/js-stellar-sdk + - uses: stellar/actions/rust-cache@main + - name: Build system test with component versions run: | cd $GITHUB_WORKSPACE/system-test @@ -96,11 +167,19 @@ jobs: STELLAR_CLI_GIT_REF=$SYSTEM_TEST_STELLAR_CLI_REF \ RUST_TOOLCHAIN_VERSION=$SYSTEM_TEST_RUST_TOOLCHAIN_VERSION \ JS_STELLAR_SDK_NPM_VERSION=$JS_STELLAR_SDK_REF \ + SYSTEM_TEST_IMAGE=$SYSTEM_TEST_IMAGE \ build - + + - name: Publish system-test image + run: | + docker push $SYSTEM_TEST_IMAGE + integration: name: System tests - needs: [build-system-test,run-quickstart] + needs: [build-system-test, build-quickstart, prepare-config] + # Run if build-system-test succeeded OR was skipped because image is already in built(cache hit) + if: needs.build-system-test.result == 'success' || needs.build-system-test.result == 'skipped' + strategy: matrix: scenario-filter: [ "^TestDappDevelop$/^.*$" ] @@ -111,11 +190,23 @@ jobs: # the soroban test cases will compile various contracts from the examples repo SYSTEM_TEST_SOROBAN_EXAMPLES_GIT_HASH: "v22.0.1" SYSTEM_TEST_SOROBAN_EXAMPLES_GIT_REPO: "https://github.com/stellar/soroban-examples.git" + + SYSTEM_TEST_IMAGE: ${{ needs.prepare-config.outputs.system-test-image-cached }} steps: + - name: download system-test image + run: | + docker pull $SYSTEM_TEST_IMAGE + - name: Start quickstart with rpc + uses: stellar/quickstart@main + with: + artifact: image-quickstart-rpc-custom-amd64.tar + tag: rpc-custom-amd64 + enable: core,rpc + - name: Run system test scenarios run: | docker run \ - --rm -t --name e2e_test stellar/system-test:dev \ + --rm -t --name e2e_test $SYSTEM_TEST_IMAGE \ --VerboseOutput $SYSTEM_TEST_VERBOSE_OUTPUT \ --TargetNetworkRPCURL http://host.docker.internal:8000/rpc \ --TestFilter "${{ matrix.scenario-filter }}" \ From 20a8b1f09fe3f7d757f4e2447532233aa637d5c6 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Mon, 13 Oct 2025 14:16:01 -0700 Subject: [PATCH 03/28] get dynamic repo name for rpc to handle forks --- .github/workflows/e2e.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 748e63da2..dd4d17f91 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -92,7 +92,7 @@ jobs: "deps": [ { "name": "xdr", "repo": "stellar/rs-stellar-xdr", "ref": "${{ env.SYSTEM_TEST_STELLAR_XDR_VERSION }}" }, { "name": "core", "repo": "stellar/stellar-core", "ref": "${{ env.SYSTEM_TEST_STELLAR_CORE_VERSION }}", "options": { "configure_flags": "--disable-tests" } }, - { "name": "rpc", "repo": "stellar/stellar-rpc", "ref": "${{ github.ref }}" }, + { "name": "rpc", "repo": ${{ github.repository }}, "ref": "${{ github.ref }}" }, { "name": "horizon", "repo": "stellar/go", "ref": "${{ env.SYSTEM_TEST_HORIZON_VERSION }}" }, { "name": "friendbot", "repo": "stellar/go", "ref": "${{ env.SYSTEM_TEST_HORIZON_VERSION }}" }, { "name": "lab", "repo": "stellar/laboratory", "ref": "${{ env.SYSTEM_TEST_LAB_VERSION }}" } From 8dcc72a8110a81bc91f4b12a8df64d827cf46bb3 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Mon, 13 Oct 2025 14:22:06 -0700 Subject: [PATCH 04/28] fix gha script error --- .github/workflows/e2e.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index dd4d17f91..ffbb641df 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -38,7 +38,7 @@ env: SYSTEM_TEST_LAB_VERSION: main SYSTEM_TEST_PROTOCOL_VERSION: 23 - SYSTEM_TEST_IMAGE: ghcr.io/${{ github.repository_owner }}/${{ github.repository_id }}/system-test" + SYSTEM_TEST_IMAGE: ghcr.io/${{ github.repository_owner }}/${{ github.repository_id }}/system-test jobs: prepare-config: From 79e442b8c08f22a7a708dd7df45f4c9c631cca47 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Mon, 13 Oct 2025 14:33:06 -0700 Subject: [PATCH 05/28] fix images json typo --- .github/workflows/e2e.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index ffbb641df..8bf0689d0 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -92,7 +92,7 @@ jobs: "deps": [ { "name": "xdr", "repo": "stellar/rs-stellar-xdr", "ref": "${{ env.SYSTEM_TEST_STELLAR_XDR_VERSION }}" }, { "name": "core", "repo": "stellar/stellar-core", "ref": "${{ env.SYSTEM_TEST_STELLAR_CORE_VERSION }}", "options": { "configure_flags": "--disable-tests" } }, - { "name": "rpc", "repo": ${{ github.repository }}, "ref": "${{ github.ref }}" }, + { "name": "rpc", "repo": "${{ github.repository }}", "ref": "${{ github.ref }}" }, { "name": "horizon", "repo": "stellar/go", "ref": "${{ env.SYSTEM_TEST_HORIZON_VERSION }}" }, { "name": "friendbot", "repo": "stellar/go", "ref": "${{ env.SYSTEM_TEST_HORIZON_VERSION }}" }, { "name": "lab", "repo": "stellar/laboratory", "ref": "${{ env.SYSTEM_TEST_LAB_VERSION }}" } From c032c123ac5da8f78188a2493d561ed59402e97e Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Mon, 13 Oct 2025 14:48:40 -0700 Subject: [PATCH 06/28] fix cli ref to be full url --- .github/workflows/e2e.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 8bf0689d0..eb14207a3 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -14,7 +14,7 @@ env: SYSTEM_TEST_GIT_REF: refs/pull/146/head # the soroban CLI source code to compile and run from system test - SYSTEM_TEST_STELLAR_CLI_REF: v23.1.4 + SYSTEM_TEST_STELLAR_CLI_REF: https://github.com/stellar/stellar-cli.git\#v23.1.4 # sets the version of rust toolchain that will be pre-installed in the # test runtime environment, tests invoke rustc/cargo @@ -26,7 +26,7 @@ env: # option #1, set the version of stellar-sdk based on a npm release version SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION: 14.0.0 # option #2, set the version of stellar-sdk used as a ref to a gh repo if - # a value is set on SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO, it takes + # a value is set on SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO, e.g. stellar/js-stellar-sdk, it takes # precedence over any SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO: SYSTEM_TEST_JS_STELLAR_SDK_GH_REF: @@ -50,13 +50,13 @@ jobs: - id: set-cache-key run: | # Fetch commit SHAs for each dependency repo - SYSTEM_TEST_SHA=$(git ls-remote https://github.com/stellar/system-test.git ${{ env.SYSTEM_TEST_GIT_REF }} | awk '{print $1}') + SYSTEM_TEST_SHA=$(git ls-remote https://github.com/stellar/system-test ${{ env.SYSTEM_TEST_GIT_REF }} | awk '{print $1}') if [ -z "$SYSTEM_TEST_SHA" ]; then echo "Error: Could not find ref ${{ env.SYSTEM_TEST_GIT_REF }} in stellar/system-test" exit 1 fi - STELLAR_CLI_SHA=$(git ls-remote https://github.com/stellar/stellar-cli.git ${{ env.SYSTEM_TEST_STELLAR_CLI_REF }} | awk '{print $1}') + STELLAR_CLI_SHA=$(git ls-remote ${{ env.SYSTEM_TEST_STELLAR_CLI_REF }} | awk '{print $1}') if [ -z "$STELLAR_CLI_SHA" ]; then echo "Error: Could not find ref ${{ env.SYSTEM_TEST_STELLAR_CLI_REF }} in stellar/stellar-cli" exit 1 @@ -64,7 +64,7 @@ jobs: # Handle JS Stellar SDK if [ -n "${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }}" ]; then - JS_SDK_PART=$(git ls-remote https://github.com/${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }}.git ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} | awk '{print $1}') + JS_SDK_PART=$(git ls-remote https://github.com/${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }} ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} | awk '{print $1}') if [ -z "$JS_SDK_PART" ]; then echo "Error: Could not find ref ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} in ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }}" exit 1 From 62e24fd257ee04ca93c1131c2bca8274fb15e26b Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Mon, 13 Oct 2025 14:57:28 -0700 Subject: [PATCH 07/28] fix cli ref url delimiter for remote hash check --- .github/workflows/e2e.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index eb14207a3..c14e7b8e3 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -56,9 +56,13 @@ jobs: exit 1 fi - STELLAR_CLI_SHA=$(git ls-remote ${{ env.SYSTEM_TEST_STELLAR_CLI_REF }} | awk '{print $1}') + # Parse STELLAR_CLI_REF which is in format: URL#ref + CLI_URL_REF="${{ env.SYSTEM_TEST_STELLAR_CLI_REF }}" + CLI_URL="${CLI_URL_REF%#*}" + CLI_REF="${CLI_URL_REF##*#}" + STELLAR_CLI_SHA=$(git ls-remote "$CLI_URL" "$CLI_REF" | awk '{print $1}') if [ -z "$STELLAR_CLI_SHA" ]; then - echo "Error: Could not find ref ${{ env.SYSTEM_TEST_STELLAR_CLI_REF }} in stellar/stellar-cli" + echo "Error: Could not find ref $CLI_REF in $CLI_URL" exit 1 fi From 9327951fae8ed90b105f9bcf01b52cfc8492ab1e Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Mon, 13 Oct 2025 15:07:50 -0700 Subject: [PATCH 08/28] split the cli ref url on backslash as delimiter --- .github/workflows/e2e.yml | 106 +++++++++++++++++++------------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index c14e7b8e3..c2dea9ba4 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -2,14 +2,14 @@ name: Soroban Tools e2e on: push: - branches: [ main, release/** ] + branches: [main, release/**] pull_request: concurrency: group: ${{ github.workflow }}-${{ github.ref_protected == 'true' && github.sha || github.ref }} cancel-in-progress: true -env: +env: # the gh tag of system-test repo version to run SYSTEM_TEST_GIT_REF: refs/pull/146/head @@ -31,7 +31,7 @@ env: SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO: SYSTEM_TEST_JS_STELLAR_SDK_GH_REF: - # define the versions of components within quickstart that comprise the rest of target stack to test upon + # define the versions of components within quickstart that comprise the rest of target stack to test upon SYSTEM_TEST_STELLAR_XDR_VERSION: v23.0.0 SYSTEM_TEST_STELLAR_CORE_VERSION: v23.0.1 SYSTEM_TEST_HORIZON_VERSION: horizon-v23.0.0 @@ -55,17 +55,17 @@ jobs: echo "Error: Could not find ref ${{ env.SYSTEM_TEST_GIT_REF }} in stellar/system-test" exit 1 fi - - # Parse STELLAR_CLI_REF which is in format: URL#ref + + # Parse STELLAR_CLI_REF which is in format: URL\#ref CLI_URL_REF="${{ env.SYSTEM_TEST_STELLAR_CLI_REF }}" - CLI_URL="${CLI_URL_REF%#*}" - CLI_REF="${CLI_URL_REF##*#}" + CLI_URL="${CLI_URL_REF%\\#*}" + CLI_REF="${CLI_URL_REF##*\\#}" STELLAR_CLI_SHA=$(git ls-remote "$CLI_URL" "$CLI_REF" | awk '{print $1}') if [ -z "$STELLAR_CLI_SHA" ]; then echo "Error: Could not find ref $CLI_REF in $CLI_URL" exit 1 fi - + # Handle JS Stellar SDK if [ -n "${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }}" ]; then JS_SDK_PART=$(git ls-remote https://github.com/${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }} ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} | awk '{print $1}') @@ -76,13 +76,13 @@ jobs: else JS_SDK_PART="${{ env.SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION }}" fi - + # Create cache key by hashing all components CACHE_INPUT="${SYSTEM_TEST_SHA}${STELLAR_CLI_SHA}${JS_SDK_PART}" CACHE_KEY=$(echo -n "$CACHE_INPUT" | sha256sum | cut -c1-16) echo "cache-key=${CACHE_KEY}" >> $GITHUB_OUTPUT echo "Generated cache key: ${CACHE_KEY}" - + - id: set-config run: | cat <> $GITHUB_OUTPUT @@ -138,55 +138,55 @@ jobs: env: SYSTEM_TEST_IMAGE: ${{ needs.prepare-config.outputs.system-test-image-cached }} steps: - - uses: actions/checkout@v4 - name: checkout system-test - with: - repository: stellar/system-test - ref: ${{ env.SYSTEM_TEST_GIT_REF }} - path: system-test - - - if: env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != '' - name: prepare local js-stellar-sdk - run: | - rm -rf $GITHUB_WORKSPACE/system-test/js-stellar-sdk; - - - if: env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != '' - uses: actions/checkout@v4 - with: - repository: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }} - ref: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} - path: system-test/js-stellar-sdk - - - uses: stellar/actions/rust-cache@main - - - name: Build system test with component versions - run: | - cd $GITHUB_WORKSPACE/system-test - if [ -z "$SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO" ]; then \ - JS_STELLAR_SDK_REF="$SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION"; \ - else \ - JS_STELLAR_SDK_REF="file:/home/tester/js-stellar-sdk"; \ - fi - make \ - STELLAR_CLI_GIT_REF=$SYSTEM_TEST_STELLAR_CLI_REF \ - RUST_TOOLCHAIN_VERSION=$SYSTEM_TEST_RUST_TOOLCHAIN_VERSION \ - JS_STELLAR_SDK_NPM_VERSION=$JS_STELLAR_SDK_REF \ - SYSTEM_TEST_IMAGE=$SYSTEM_TEST_IMAGE \ - build - - - name: Publish system-test image - run: | - docker push $SYSTEM_TEST_IMAGE - + - uses: actions/checkout@v4 + name: checkout system-test + with: + repository: stellar/system-test + ref: ${{ env.SYSTEM_TEST_GIT_REF }} + path: system-test + + - if: env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != '' + name: prepare local js-stellar-sdk + run: | + rm -rf $GITHUB_WORKSPACE/system-test/js-stellar-sdk; + + - if: env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != '' + uses: actions/checkout@v4 + with: + repository: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }} + ref: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} + path: system-test/js-stellar-sdk + + - uses: stellar/actions/rust-cache@main + + - name: Build system test with component versions + run: | + cd $GITHUB_WORKSPACE/system-test + if [ -z "$SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO" ]; then \ + JS_STELLAR_SDK_REF="$SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION"; \ + else \ + JS_STELLAR_SDK_REF="file:/home/tester/js-stellar-sdk"; \ + fi + make \ + STELLAR_CLI_GIT_REF=$SYSTEM_TEST_STELLAR_CLI_REF \ + RUST_TOOLCHAIN_VERSION=$SYSTEM_TEST_RUST_TOOLCHAIN_VERSION \ + JS_STELLAR_SDK_NPM_VERSION=$JS_STELLAR_SDK_REF \ + SYSTEM_TEST_IMAGE=$SYSTEM_TEST_IMAGE \ + build + + - name: Publish system-test image + run: | + docker push $SYSTEM_TEST_IMAGE + integration: name: System tests needs: [build-system-test, build-quickstart, prepare-config] - # Run if build-system-test succeeded OR was skipped because image is already in built(cache hit) + # Run if build-system-test succeeded OR was skipped because image is already in built(cache hit) if: needs.build-system-test.result == 'success' || needs.build-system-test.result == 'skipped' - + strategy: matrix: - scenario-filter: [ "^TestDappDevelop$/^.*$" ] + scenario-filter: ["^TestDappDevelop$/^.*$"] runs-on: ubuntu-latest env: SYSTEM_TEST_VERBOSE_OUTPUT: "true" From a26a3b122103d12bad465f5208238e6380c77eec Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Mon, 13 Oct 2025 15:47:18 -0700 Subject: [PATCH 09/28] use ghcr.io for system test image cache --- .github/workflows/e2e.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index c2dea9ba4..1b1903152 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -38,7 +38,7 @@ env: SYSTEM_TEST_LAB_VERSION: main SYSTEM_TEST_PROTOCOL_VERSION: 23 - SYSTEM_TEST_IMAGE: ghcr.io/${{ github.repository_owner }}/${{ github.repository_id }}/system-test + SYSTEM_TEST_IMAGE: ghcr.io/${{ github.repository }}/system-test jobs: prepare-config: @@ -173,7 +173,12 @@ jobs: JS_STELLAR_SDK_NPM_VERSION=$JS_STELLAR_SDK_REF \ SYSTEM_TEST_IMAGE=$SYSTEM_TEST_IMAGE \ build - + - name: login to ghcr + uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ github.token }} - name: Publish system-test image run: | docker push $SYSTEM_TEST_IMAGE From 65f1d1c8e0ab5ec11fbe9347bea433176ff948cc Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Mon, 13 Oct 2025 16:08:45 -0700 Subject: [PATCH 10/28] use ghcr.io with tag denoting the system-test cached image --- .github/workflows/e2e.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 1b1903152..0d8ca72cf 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -38,14 +38,14 @@ env: SYSTEM_TEST_LAB_VERSION: main SYSTEM_TEST_PROTOCOL_VERSION: 23 - SYSTEM_TEST_IMAGE: ghcr.io/${{ github.repository }}/system-test + SYSTEM_TEST_IMAGE: ghcr.io/${{ github.repository }}:system-test jobs: prepare-config: runs-on: ubuntu-latest outputs: images-config: ${{ steps.set-config.outputs.images }} - system-test-image-cached: "${{env.SYSTEM_TEST_IMAGE}}:${{ steps.set-cache-key.outputs.cache-key }}" + system-test-image-cached: "${{env.SYSTEM_TEST_IMAGE}}_${{ steps.set-cache-key.outputs.cache-key }}" steps: - id: set-cache-key run: | From e3530f297bd713b64f66cb76c8c4db83540c73cd Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Mon, 13 Oct 2025 22:37:18 -0700 Subject: [PATCH 11/28] revert back to ghcr.io for cache, use read only when forked pr --- .github/workflows/e2e.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 0d8ca72cf..9a2b55c64 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -174,12 +174,14 @@ jobs: SYSTEM_TEST_IMAGE=$SYSTEM_TEST_IMAGE \ build - name: login to ghcr + if: github.event.pull_request.head.repo.full_name == github.repository uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ github.token }} - name: Publish system-test image + if: github.event.pull_request.head.repo.full_name == github.repository run: | docker push $SYSTEM_TEST_IMAGE @@ -202,6 +204,13 @@ jobs: SYSTEM_TEST_IMAGE: ${{ needs.prepare-config.outputs.system-test-image-cached }} steps: + - name: login to ghcr + uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ github.token }} + - name: download system-test image run: | docker pull $SYSTEM_TEST_IMAGE From 7d70ad56408dad67828b60823fd881f699d6a289 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Mon, 13 Oct 2025 22:46:47 -0700 Subject: [PATCH 12/28] only allow cache image push to ghcr when non-pr or non-fork pr --- .github/workflows/e2e.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 9a2b55c64..30e2fe1d7 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -174,14 +174,14 @@ jobs: SYSTEM_TEST_IMAGE=$SYSTEM_TEST_IMAGE \ build - name: login to ghcr - if: github.event.pull_request.head.repo.full_name == github.repository + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ github.token }} - name: Publish system-test image - if: github.event.pull_request.head.repo.full_name == github.repository + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false run: | docker push $SYSTEM_TEST_IMAGE From 62544471389f483abc7ec406d09842176e51a249 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Tue, 14 Oct 2025 12:32:00 -0700 Subject: [PATCH 13/28] only access the ghcr.io for cache image if not a fork or pr --- .github/workflows/e2e.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 30e2fe1d7..0913bd2be 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -46,7 +46,17 @@ jobs: outputs: images-config: ${{ steps.set-config.outputs.images }} system-test-image-cached: "${{env.SYSTEM_TEST_IMAGE}}_${{ steps.set-cache-key.outputs.cache-key }}" + should-push-to-registry: ${{ steps.check-fork.outputs.should-push }} steps: + - id: check-fork + name: Check if should push to registry + run: | + if [ "${{ github.event_name }}" != "pull_request" ] || [ "${{ github.event.pull_request.head.repo.fork }}" == "false" ]; then + echo "should-push=true" >> $GITHUB_OUTPUT + else + echo "should-push=false" >> $GITHUB_OUTPUT + fi + - id: set-cache-key run: | # Fetch commit SHAs for each dependency repo @@ -174,14 +184,14 @@ jobs: SYSTEM_TEST_IMAGE=$SYSTEM_TEST_IMAGE \ build - name: login to ghcr - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false + if: needs.prepare-config.outputs.should-push-to-registry == 'true' uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ github.token }} - name: Publish system-test image - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false + if: needs.prepare-config.outputs.should-push-to-registry == 'true' run: | docker push $SYSTEM_TEST_IMAGE @@ -205,6 +215,7 @@ jobs: SYSTEM_TEST_IMAGE: ${{ needs.prepare-config.outputs.system-test-image-cached }} steps: - name: login to ghcr + if: needs.prepare-config.outputs.should-push-to-registry == 'true' uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 with: registry: ghcr.io @@ -212,6 +223,7 @@ jobs: password: ${{ github.token }} - name: download system-test image + if: needs.prepare-config.outputs.should-push-to-registry == 'true' run: | docker pull $SYSTEM_TEST_IMAGE - name: Start quickstart with rpc From c8a12fd94e2d925ef08ab51cbc1719c4797c1726 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Tue, 14 Oct 2025 13:36:23 -0700 Subject: [PATCH 14/28] don't include registry name in image name for forked pr's, docker run will just reference local docker repo for image when forked pr --- .github/workflows/e2e.yml | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 0913bd2be..328b02c19 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -38,14 +38,16 @@ env: SYSTEM_TEST_LAB_VERSION: main SYSTEM_TEST_PROTOCOL_VERSION: 23 - SYSTEM_TEST_IMAGE: ghcr.io/${{ github.repository }}:system-test + SYSTEM_TEST_IMAGE: ${{ github.repository }}:system-test + SYSTEM_TEST_IMAGE_CACHE_REGISTRY: ghcr.io jobs: prepare-config: runs-on: ubuntu-latest outputs: images-config: ${{ steps.set-config.outputs.images }} - system-test-image-cached: "${{env.SYSTEM_TEST_IMAGE}}_${{ steps.set-cache-key.outputs.cache-key }}" + system-test-image-cache-registry: ${{ env.SYSTEM_TEST_IMAGE_CACHE_REGISTRY }} + system-test-image-cached: "${{ steps.set-image-name.outputs.base-image }}_${{ steps.set-cache-key.outputs.cache-key }}" should-push-to-registry: ${{ steps.check-fork.outputs.should-push }} steps: - id: check-fork @@ -57,6 +59,17 @@ jobs: echo "should-push=false" >> $GITHUB_OUTPUT fi + - id: set-image-name + name: Set system test image name with optional registry prefix + run: | + if [ "${{ steps.check-fork.outputs.should-push }}" == "true" ]; then + IMAGE_NAME="${{ env.SYSTEM_TEST_IMAGE_CACHE_REGISTRY }}/${{ env.SYSTEM_TEST_IMAGE }}" + else + IMAGE_NAME="${{ env.SYSTEM_TEST_IMAGE }}" + fi + echo "base-image=${IMAGE_NAME}" >> $GITHUB_OUTPUT + echo "Using image name: ${IMAGE_NAME}" + - id: set-cache-key run: | # Fetch commit SHAs for each dependency repo @@ -187,8 +200,8 @@ jobs: if: needs.prepare-config.outputs.should-push-to-registry == 'true' uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 with: - registry: ghcr.io - username: ${{ github.actor }} + registry: ${{ needs.prepare-config.outputs.system-test-image-cache-registry }} + username: ${{ github.actor }} password: ${{ github.token }} - name: Publish system-test image if: needs.prepare-config.outputs.should-push-to-registry == 'true' @@ -218,7 +231,7 @@ jobs: if: needs.prepare-config.outputs.should-push-to-registry == 'true' uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 with: - registry: ghcr.io + registry: ${{ needs.prepare-config.outputs.system-test-image-cache-registry }} username: ${{ github.actor }} password: ${{ github.token }} From a3144e8615a6191674b610bd2196995a2af198da Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Tue, 14 Oct 2025 15:32:50 -0700 Subject: [PATCH 15/28] refactored e2e to use system-test callable workflow --- .github/workflows/e2e.yml | 259 +++----------------------------------- 1 file changed, 15 insertions(+), 244 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 328b02c19..e9cfd14a4 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -9,249 +9,20 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref_protected == 'true' && github.sha || github.ref }} cancel-in-progress: true -env: - # the gh tag of system-test repo version to run - SYSTEM_TEST_GIT_REF: refs/pull/146/head - - # the soroban CLI source code to compile and run from system test - SYSTEM_TEST_STELLAR_CLI_REF: https://github.com/stellar/stellar-cli.git\#v23.1.4 - - # sets the version of rust toolchain that will be pre-installed in the - # test runtime environment, tests invoke rustc/cargo - SYSTEM_TEST_RUST_TOOLCHAIN_VERSION: stable - - # set the version of js-stellar-sdk to use, need to choose one of either - # resolution options, using npm release or a gh ref: - # - # option #1, set the version of stellar-sdk based on a npm release version - SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION: 14.0.0 - # option #2, set the version of stellar-sdk used as a ref to a gh repo if - # a value is set on SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO, e.g. stellar/js-stellar-sdk, it takes - # precedence over any SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION - SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO: - SYSTEM_TEST_JS_STELLAR_SDK_GH_REF: - - # define the versions of components within quickstart that comprise the rest of target stack to test upon - SYSTEM_TEST_STELLAR_XDR_VERSION: v23.0.0 - SYSTEM_TEST_STELLAR_CORE_VERSION: v23.0.1 - SYSTEM_TEST_HORIZON_VERSION: horizon-v23.0.0 - SYSTEM_TEST_LAB_VERSION: main - SYSTEM_TEST_PROTOCOL_VERSION: 23 - - SYSTEM_TEST_IMAGE: ${{ github.repository }}:system-test - SYSTEM_TEST_IMAGE_CACHE_REGISTRY: ghcr.io - jobs: - prepare-config: - runs-on: ubuntu-latest - outputs: - images-config: ${{ steps.set-config.outputs.images }} - system-test-image-cache-registry: ${{ env.SYSTEM_TEST_IMAGE_CACHE_REGISTRY }} - system-test-image-cached: "${{ steps.set-image-name.outputs.base-image }}_${{ steps.set-cache-key.outputs.cache-key }}" - should-push-to-registry: ${{ steps.check-fork.outputs.should-push }} - steps: - - id: check-fork - name: Check if should push to registry - run: | - if [ "${{ github.event_name }}" != "pull_request" ] || [ "${{ github.event.pull_request.head.repo.fork }}" == "false" ]; then - echo "should-push=true" >> $GITHUB_OUTPUT - else - echo "should-push=false" >> $GITHUB_OUTPUT - fi - - - id: set-image-name - name: Set system test image name with optional registry prefix - run: | - if [ "${{ steps.check-fork.outputs.should-push }}" == "true" ]; then - IMAGE_NAME="${{ env.SYSTEM_TEST_IMAGE_CACHE_REGISTRY }}/${{ env.SYSTEM_TEST_IMAGE }}" - else - IMAGE_NAME="${{ env.SYSTEM_TEST_IMAGE }}" - fi - echo "base-image=${IMAGE_NAME}" >> $GITHUB_OUTPUT - echo "Using image name: ${IMAGE_NAME}" - - - id: set-cache-key - run: | - # Fetch commit SHAs for each dependency repo - SYSTEM_TEST_SHA=$(git ls-remote https://github.com/stellar/system-test ${{ env.SYSTEM_TEST_GIT_REF }} | awk '{print $1}') - if [ -z "$SYSTEM_TEST_SHA" ]; then - echo "Error: Could not find ref ${{ env.SYSTEM_TEST_GIT_REF }} in stellar/system-test" - exit 1 - fi - - # Parse STELLAR_CLI_REF which is in format: URL\#ref - CLI_URL_REF="${{ env.SYSTEM_TEST_STELLAR_CLI_REF }}" - CLI_URL="${CLI_URL_REF%\\#*}" - CLI_REF="${CLI_URL_REF##*\\#}" - STELLAR_CLI_SHA=$(git ls-remote "$CLI_URL" "$CLI_REF" | awk '{print $1}') - if [ -z "$STELLAR_CLI_SHA" ]; then - echo "Error: Could not find ref $CLI_REF in $CLI_URL" - exit 1 - fi - - # Handle JS Stellar SDK - if [ -n "${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }}" ]; then - JS_SDK_PART=$(git ls-remote https://github.com/${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }} ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} | awk '{print $1}') - if [ -z "$JS_SDK_PART" ]; then - echo "Error: Could not find ref ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} in ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }}" - exit 1 - fi - else - JS_SDK_PART="${{ env.SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION }}" - fi - - # Create cache key by hashing all components - CACHE_INPUT="${SYSTEM_TEST_SHA}${STELLAR_CLI_SHA}${JS_SDK_PART}" - CACHE_KEY=$(echo -n "$CACHE_INPUT" | sha256sum | cut -c1-16) - echo "cache-key=${CACHE_KEY}" >> $GITHUB_OUTPUT - echo "Generated cache key: ${CACHE_KEY}" - - - id: set-config - run: | - cat <> $GITHUB_OUTPUT - images< /dev/null 2>&1; then - echo "Image exists in registry" - echo "exists=true" >> $GITHUB_OUTPUT - else - echo "Image not found in registry" - echo "exists=false" >> $GITHUB_OUTPUT - fi - - build-system-test: - runs-on: ubuntu-latest-4-cores - needs: [prepare-config, check-system-test-cache] - if: needs.check-system-test-cache.outputs.cache-hit != 'true' - env: - SYSTEM_TEST_IMAGE: ${{ needs.prepare-config.outputs.system-test-image-cached }} - steps: - - uses: actions/checkout@v4 - name: checkout system-test - with: - repository: stellar/system-test - ref: ${{ env.SYSTEM_TEST_GIT_REF }} - path: system-test - - - if: env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != '' - name: prepare local js-stellar-sdk - run: | - rm -rf $GITHUB_WORKSPACE/system-test/js-stellar-sdk; - - - if: env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO != '' - uses: actions/checkout@v4 - with: - repository: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO }} - ref: ${{ env.SYSTEM_TEST_JS_STELLAR_SDK_GH_REF }} - path: system-test/js-stellar-sdk - - - uses: stellar/actions/rust-cache@main - - - name: Build system test with component versions - run: | - cd $GITHUB_WORKSPACE/system-test - if [ -z "$SYSTEM_TEST_JS_STELLAR_SDK_GH_REPO" ]; then \ - JS_STELLAR_SDK_REF="$SYSTEM_TEST_JS_STELLAR_SDK_NPM_VERSION"; \ - else \ - JS_STELLAR_SDK_REF="file:/home/tester/js-stellar-sdk"; \ - fi - make \ - STELLAR_CLI_GIT_REF=$SYSTEM_TEST_STELLAR_CLI_REF \ - RUST_TOOLCHAIN_VERSION=$SYSTEM_TEST_RUST_TOOLCHAIN_VERSION \ - JS_STELLAR_SDK_NPM_VERSION=$JS_STELLAR_SDK_REF \ - SYSTEM_TEST_IMAGE=$SYSTEM_TEST_IMAGE \ - build - - name: login to ghcr - if: needs.prepare-config.outputs.should-push-to-registry == 'true' - uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 - with: - registry: ${{ needs.prepare-config.outputs.system-test-image-cache-registry }} - username: ${{ github.actor }} - password: ${{ github.token }} - - name: Publish system-test image - if: needs.prepare-config.outputs.should-push-to-registry == 'true' - run: | - docker push $SYSTEM_TEST_IMAGE - - integration: - name: System tests - needs: [build-system-test, build-quickstart, prepare-config] - # Run if build-system-test succeeded OR was skipped because image is already in built(cache hit) - if: needs.build-system-test.result == 'success' || needs.build-system-test.result == 'skipped' - - strategy: - matrix: - scenario-filter: ["^TestDappDevelop$/^.*$"] - runs-on: ubuntu-latest - env: - SYSTEM_TEST_VERBOSE_OUTPUT: "true" - - # the soroban test cases will compile various contracts from the examples repo - SYSTEM_TEST_SOROBAN_EXAMPLES_GIT_HASH: "v22.0.1" - SYSTEM_TEST_SOROBAN_EXAMPLES_GIT_REPO: "https://github.com/stellar/soroban-examples.git" - - SYSTEM_TEST_IMAGE: ${{ needs.prepare-config.outputs.system-test-image-cached }} - steps: - - name: login to ghcr - if: needs.prepare-config.outputs.should-push-to-registry == 'true' - uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 - with: - registry: ${{ needs.prepare-config.outputs.system-test-image-cache-registry }} - username: ${{ github.actor }} - password: ${{ github.token }} - - - name: download system-test image - if: needs.prepare-config.outputs.should-push-to-registry == 'true' - run: | - docker pull $SYSTEM_TEST_IMAGE - - name: Start quickstart with rpc - uses: stellar/quickstart@main - with: - artifact: image-quickstart-rpc-custom-amd64.tar - tag: rpc-custom-amd64 - enable: core,rpc - - - name: Run system test scenarios - run: | - docker run \ - --rm -t --name e2e_test $SYSTEM_TEST_IMAGE \ - --VerboseOutput $SYSTEM_TEST_VERBOSE_OUTPUT \ - --TargetNetworkRPCURL http://host.docker.internal:8000/rpc \ - --TestFilter "${{ matrix.scenario-filter }}" \ - --SorobanExamplesGitHash $SYSTEM_TEST_SOROBAN_EXAMPLES_GIT_HASH \ - --SorobanExamplesRepoURL $SYSTEM_TEST_SOROBAN_EXAMPLES_GIT_REPO + system-test-git-ref: refs/pull/146/head + stellar-cli-ref: https://github.com/stellar/stellar-cli.git#v23.1.4 + stellar-cli-version: v23.1.4 + rust-toolchain-version: stable + js-stellar-sdk-npm-version: 14.0.0 + stellar-xdr-version: v23.0.0 + stellar-core-version: v23.0.1 + horizon-version: horizon-v23.0.0 + lab-version: main + protocol-version: 23 + test-filter: "^TestDappDevelop$/^.*$" + soroban-examples-git-hash: v22.0.1 + soroban-examples-git-repo: https://github.com/stellar/soroban-examples.git From e5d6bac59a6ffde806c2855ec3e6fa0399401def Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Tue, 14 Oct 2025 15:46:11 -0700 Subject: [PATCH 16/28] use system-test branch ref for callable workflow version --- .github/workflows/e2e.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index e9cfd14a4..2a2c507b1 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -11,9 +11,9 @@ concurrency: jobs: run-system-test: - uses: stellar/system-test/.github/workflows/test-ng.yml@refs/pull/146/head + uses: stellar/system-test/.github/workflows/test-ng.yml@no_quickstart with: - system-test-git-ref: refs/pull/146/head + system-test-git-ref: no_quickstart stellar-cli-ref: https://github.com/stellar/stellar-cli.git#v23.1.4 stellar-cli-version: v23.1.4 rust-toolchain-version: stable From b7e025505f58e3b008c5ac1e68f91ee5d03ef187 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Tue, 14 Oct 2025 15:50:55 -0700 Subject: [PATCH 17/28] fixed typo on path to workflow job file --- .github/workflows/e2e.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 2a2c507b1..2f3b0c89e 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -11,7 +11,7 @@ concurrency: jobs: run-system-test: - uses: stellar/system-test/.github/workflows/test-ng.yml@no_quickstart + uses: stellar/system-test/.github/workflows/test_ng.yml@no_quickstart with: system-test-git-ref: no_quickstart stellar-cli-ref: https://github.com/stellar/stellar-cli.git#v23.1.4 From 394f325edff42460b496bd4614249b4bc80087c1 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Tue, 14 Oct 2025 15:54:37 -0700 Subject: [PATCH 18/28] fixed typo on parameter name to workflow for examples repo --- .github/workflows/e2e.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 2f3b0c89e..10f69596a 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -25,4 +25,4 @@ jobs: protocol-version: 23 test-filter: "^TestDappDevelop$/^.*$" soroban-examples-git-hash: v22.0.1 - soroban-examples-git-repo: https://github.com/stellar/soroban-examples.git + soroban-examples-repo-url: https://github.com/stellar/soroban-examples.git From fa13be6176714bd4a52c165179dbc00ec5457cd3 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Wed, 15 Oct 2025 11:05:18 -0700 Subject: [PATCH 19/28] use callable system-test/test-workflow --- .github/workflows/e2e.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 10f69596a..3a0cefa98 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -11,7 +11,7 @@ concurrency: jobs: run-system-test: - uses: stellar/system-test/.github/workflows/test_ng.yml@no_quickstart + uses: stellar/system-test/.github/workflows/test-workflow.yml@no_quickstart with: system-test-git-ref: no_quickstart stellar-cli-ref: https://github.com/stellar/stellar-cli.git#v23.1.4 From 0498dc44cdea0e0951b3c4e22757aec748f32b8d Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Wed, 15 Oct 2025 13:37:27 -0700 Subject: [PATCH 20/28] use dockerhub creds if present to system-test workflow --- .github/workflows/e2e.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 3a0cefa98..07c8d83eb 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -12,6 +12,9 @@ concurrency: jobs: run-system-test: uses: stellar/system-test/.github/workflows/test-workflow.yml@no_quickstart + secrets: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} with: system-test-git-ref: no_quickstart stellar-cli-ref: https://github.com/stellar/stellar-cli.git#v23.1.4 From 0ceeddaeea0270dbea0840360f8a884e2fbd1035 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Thu, 16 Oct 2025 14:07:04 -0700 Subject: [PATCH 21/28] include all possible system-test workflow input variables on e2e config --- .github/workflows/e2e.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 07c8d83eb..08d68150b 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -16,11 +16,16 @@ jobs: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} with: + stellar-rpc-repo: "${{ github.repository }}" + stellar-rpc-ref: "${{ github.ref }}" system-test-git-ref: no_quickstart - stellar-cli-ref: https://github.com/stellar/stellar-cli.git#v23.1.4 - stellar-cli-version: v23.1.4 + stellar-cli-repo: stellar/stellar-cli + stellar-cli-ref: v23.1.4 + stellar-cli-crate-version: "" rust-toolchain-version: stable js-stellar-sdk-npm-version: 14.0.0 + js-stellar-sdk-repo: "" + js-stellar-sdk-ref: "" stellar-xdr-version: v23.0.0 stellar-core-version: v23.0.1 horizon-version: horizon-v23.0.0 From 4b65fbc23271978cb6245ebe29bca4fcb85866f3 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Thu, 16 Oct 2025 14:22:07 -0700 Subject: [PATCH 22/28] use udpated input names for soroban examples on workflow --- .github/workflows/e2e.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 08d68150b..813238413 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -26,11 +26,11 @@ jobs: js-stellar-sdk-npm-version: 14.0.0 js-stellar-sdk-repo: "" js-stellar-sdk-ref: "" - stellar-xdr-version: v23.0.0 - stellar-core-version: v23.0.1 - horizon-version: horizon-v23.0.0 - lab-version: main + stellar-xdr-ref: v23.0.0 + stellar-core-ref: v23.0.1 + horizon-ref: horizon-v23.0.0 + lab-ref: main protocol-version: 23 + soroban-examples-ref: v22.0.1 + soroban-examples-repo: https://github.com/stellar/soroban-examples.git test-filter: "^TestDappDevelop$/^.*$" - soroban-examples-git-hash: v22.0.1 - soroban-examples-repo-url: https://github.com/stellar/soroban-examples.git From c98518af47f7dc540068de8fa6d37e1e4ae981a9 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Thu, 16 Oct 2025 15:36:54 -0700 Subject: [PATCH 23/28] fixed typo on soroban examples repo input to workflow --- .github/workflows/e2e.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 813238413..ab7cb2401 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -32,5 +32,5 @@ jobs: lab-ref: main protocol-version: 23 soroban-examples-ref: v22.0.1 - soroban-examples-repo: https://github.com/stellar/soroban-examples.git + soroban-examples-repo: stellar/soroban-examples test-filter: "^TestDappDevelop$/^.*$" From d6b6cce9c4ec44f452a2875fcc19b2a734f16778 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Fri, 24 Oct 2025 17:11:03 -0700 Subject: [PATCH 24/28] removed dockerhub secrets --- .github/workflows/e2e.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index ab7cb2401..766f74d1c 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -12,9 +12,6 @@ concurrency: jobs: run-system-test: uses: stellar/system-test/.github/workflows/test-workflow.yml@no_quickstart - secrets: - DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} - DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} with: stellar-rpc-repo: "${{ github.repository }}" stellar-rpc-ref: "${{ github.ref }}" From bf6bf0b95feba59efdafdf79d0026cf2dda3f659 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Tue, 4 Nov 2025 14:02:10 -0800 Subject: [PATCH 25/28] enable cache write permission on ci workflow for system-test --- .github/workflows/e2e.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 766f74d1c..5e0f64047 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -11,6 +11,8 @@ concurrency: jobs: run-system-test: + permissions: + actions: write # Required for GHA cache write uses: stellar/system-test/.github/workflows/test-workflow.yml@no_quickstart with: stellar-rpc-repo: "${{ github.repository }}" From b1bc71c51d86fe8b9ff0004b36ec3a77290b8e06 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Tue, 4 Nov 2025 16:12:09 -0800 Subject: [PATCH 26/28] revert explicit cache write permission, not effective --- .github/workflows/e2e.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 5e0f64047..766f74d1c 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -11,8 +11,6 @@ concurrency: jobs: run-system-test: - permissions: - actions: write # Required for GHA cache write uses: stellar/system-test/.github/workflows/test-workflow.yml@no_quickstart with: stellar-rpc-repo: "${{ github.repository }}" From 828fe551095d36c771a263f65eaa22f92e08b6ed Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Fri, 14 Nov 2025 16:29:24 -0800 Subject: [PATCH 27/28] update the horizon/friendbot refs for quickstart flow --- .github/workflows/e2e.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 766f74d1c..0b5609004 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -25,7 +25,8 @@ jobs: js-stellar-sdk-ref: "" stellar-xdr-ref: v23.0.0 stellar-core-ref: v23.0.1 - horizon-ref: horizon-v23.0.0 + horizon-ref: main + friendbot-ref: main lab-ref: main protocol-version: 23 soroban-examples-ref: v22.0.1 From c3655be350c0670ede17ea1d52544ea6a5ff8608 Mon Sep 17 00:00:00 2001 From: Shawn Reuland Date: Mon, 17 Nov 2025 09:53:36 -0800 Subject: [PATCH 28/28] update to p24 component versions for e2e --- .github/workflows/e2e.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 0b5609004..5ee95aeb0 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -17,18 +17,20 @@ jobs: stellar-rpc-ref: "${{ github.ref }}" system-test-git-ref: no_quickstart stellar-cli-repo: stellar/stellar-cli - stellar-cli-ref: v23.1.4 + stellar-cli-ref: v23.2.0 stellar-cli-crate-version: "" rust-toolchain-version: stable - js-stellar-sdk-npm-version: 14.0.0 + js-stellar-sdk-npm-version: 14.3.2 js-stellar-sdk-repo: "" js-stellar-sdk-ref: "" - stellar-xdr-ref: v23.0.0 - stellar-core-ref: v23.0.1 - horizon-ref: main - friendbot-ref: main + stellar-xdr-ref: v24.0.0 + stellar-core-ref: v24.0.0 + # pinned version to stellar-horizon main on Nov 13, 2025 until a rel tag is needed. + horizon-ref: f699b44b41ba8caf15152c99d6cc657123f000ba + # pinned version to friendbot main on Nov 10, 2025 until a rel tag is needed. + friendbot-ref: 46dda42ae8ab0d98dfaeee11e1e026f91ca1f7a4 lab-ref: main - protocol-version: 23 - soroban-examples-ref: v22.0.1 + protocol-version: 24 + soroban-examples-ref: v23.0.0 soroban-examples-repo: stellar/soroban-examples test-filter: "^TestDappDevelop$/^.*$"