Skip to content

Update dependencies. #343

Update dependencies.

Update dependencies. #343

name: Test with soroban-examples
on:
push:
branches: [main, release/**]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref_protected == 'true' && github.sha || github.ref }}-{{ github.event_name }}
cancel-in-progress: true
# No permissions. This workflow downloads code from outside this repository and
# compiles it. No permissions ensures that any exploit in an external
# repository does not gain access to anything in this repo.
permissions: {}
jobs:
collect-examples:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
repository: stellar/soroban-examples
ref: main
- id: dirs
run: |
dirs=$(
for dir in $(find . -type f -name 'Makefile' -mindepth 2 | xargs dirname | sed 's|^\./||'); do
if (cargo metadata --manifest-path "$dir/Cargo.toml" --no-deps --format-version 1 | jq -r --arg pwd "$(pwd)" '.packages[0] | (any(.dependencies[]; .name == "soroban-sdk") and any(.targets[]; any(.crate_types[]; . == "cdylib")))' | grep -q '^true$'); then
echo "$dir"
fi
done | jq -Rnc '[inputs | "\(.)"]'
)
echo "dirs=$dirs" >> $GITHUB_OUTPUT
outputs:
dirs: ${{ steps.dirs.outputs.dirs }}
test-example:
needs: collect-examples
strategy:
fail-fast: false
matrix:
working-directory: ${{ fromJSON(needs.collect-examples.outputs.dirs) }}
defaults:
run:
working-directory: soroban-examples/${{ matrix.working-directory }}
runs-on: ubuntu-latest
steps:
- name: Checkout rs-soroban-sdk
uses: actions/checkout@v5
with:
path: rs-soroban-sdk
- name: Checkout soroban-examples
uses: actions/checkout@v5
with:
repository: stellar/soroban-examples
ref: main
path: soroban-examples
- name: Install Rust
run: |
rustup update
rustup target add wasm32v1-none
- uses: denoland/setup-deno@909cc5acb0fdd60627fb858598759246509fa755 # v2.0.2
with:
deno-version: v2.x
- uses: stellar/stellar-cli@v23.1.4
- uses: stellar/actions/rust-cache@main
- name: Patch SDK versions
run: |
# TODO: Update this patch logic to use `cargo add` once this issue is resolved: https://github.com/rust-lang/cargo/issues/16101
crates=$(cd ${{ github.workspace }}/rs-soroban-sdk && cargo metadata --format-version 1 --no-deps | jq -r '.packages[] | select(.publish != []) | .name')
find . -name Cargo.toml | while read file; do
echo Patching "$file" ...
dir=$(dirname "$file")
for crate in $crates; do
rel_path=$(realpath --relative-to="$dir" ${{ github.workspace }}/rs-soroban-sdk/$crate)
sed -i 's|'"$crate"' = "\([^"]*\)"|'"$crate"' = { path = "'"$rel_path"'" }|g' "$file"
sed -i 's|'"$crate"' = {.*version = "[^"]*"\(.*\)|'"$crate"' = { path = "'"$rel_path"'" \1|g' "$file"
done
done
- name: Diff
run: (! git diff --exit-code) || (echo 'A diff is expected'; exit 1)
- name: Build soroban-examples
env:
CARGO_BUILD_RUSTFLAGS: "-A deprecated"
run: make build
- name: Set artifact name
id: artifact-name
run: echo "name=wasm-$(echo ${{ matrix.working-directory }} | sed 's/\//-/g')" | tee -a $GITHUB_OUTPUT
- name: Upload WASM artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ steps.artifact-name.outputs.name }}
path: 'soroban-examples/${{ matrix.working-directory }}/**/*.wasm'
retention-days: 3
- name: Test soroban-examples
env:
CARGO_BUILD_RUSTFLAGS: "-A deprecated"
run: make test
- name: Diff
run: git add -N . && git diff HEAD