Skip to content

Commit 695ad2a

Browse files
committed
ci: fix race condition for gnome keyring and run all rpc tests for release PRs
1 parent 8749af2 commit 695ad2a

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

.github/workflows/rpc-tests.yml

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,33 +24,43 @@ jobs:
2424
# Apple Intel (this runner has better support to nested virtualization)
2525
- macos-15-large
2626
exclude:
27-
# Only run Linux x64 tests on pull request to save some time
28-
- sys:
29-
${{ github.event_name != 'push' && 'ubuntu-jammy-8-cores-arm64' }}
30-
- sys: ${{ github.event_name != 'push' && 'macos-15-large' }}
27+
# Only run Linux x64 on non-release PRs to save CI minutes
28+
- sys: ${{ github.event_name != 'push' && !startsWith(github.ref_name, 'release/') && 'ubuntu-jammy-8-cores-arm64' }}
29+
- sys: ${{ github.event_name != 'push' && !startsWith(github.ref_name, 'release/') && 'macos-15-large' }}
3130
runs-on: ${{ matrix.sys }}
3231
env:
33-
TEST_THREADS: ${{ contains(matrix.sys, 'macos') && '--test-threads=1' || '' }} # macOS has limited resources, so we run tests (that rely on `testcontainers`) with 1 thread
32+
TEST_THREADS: ${{ contains(matrix.sys, 'macos') && '2' || '4' }} # macOS has limited resources
3433
steps:
3534
- uses: stellar/quickstart@main
3635
with:
3736
tag: future
37+
enable: core,rpc
3838
- uses: actions/checkout@v5
3939
- uses: stellar/actions/rust-cache@main
4040
- run: rustup update
4141
- run:
4242
sudo apt update && sudo apt install -y libudev-dev libdbus-1-dev
4343
gnome-keyring
4444
if: runner.os == 'Linux'
45-
- name: Start gnome-keyring
45+
- name: Start gnome-keyring and wait for it to be ready
4646
if: runner.os == 'Linux'
4747
# run gnome-keyring with 'foobar' as password for the login keyring
4848
# this will create a new login keyring and unlock it
4949
# the login password doesn't matter, but the keyring must be unlocked for the tests to work
50-
# this is based on the ci workflow in the keyring crate repo
51-
run:
52-
gnome-keyring-daemon --components=secrets --daemonize --unlock <<<
53-
'foobar'
50+
run: |
51+
gnome-keyring-daemon --components=secrets --daemonize --unlock <<< 'foobar'
52+
53+
echo "Waiting for Keyring to become ready..."
54+
for i in {1..20}; do
55+
if secret-tool store --label='gh-action-secret' gh-action-domain gh-action.org <<< 'gh-action-val' 2>/dev/null; then
56+
echo "Keyring ready and operational."
57+
exit 0
58+
fi
59+
sleep 1
60+
done
61+
62+
echo "Error: GNOME Keyring failed to start or become ready within the timeout."
63+
exit 1
5464
- name: Check GNOME Keyring
5565
if: runner.os == 'Linux'
5666
run: |
@@ -60,4 +70,4 @@ jobs:
6070
- run: make build-test-wasms
6171
- run:
6272
RUST_BACKTRACE=1 cargo test --features it --package soroban-test --test it --
63-
integration $TEST_THREADS
73+
integration --test-threads=$TEST_THREADS

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ test: build-test
5454

5555
# expects a quickstart container running with the rpc exposed at localhost:SOROBAN_PORT
5656
rpc-test:
57-
cargo test --features it --test it -- integration
57+
cargo test --features it --test it -- integration --test-threads=4
5858

5959
check:
6060
cargo clippy --all-targets

0 commit comments

Comments
 (0)