Add CI for soroban-examples and OZ contracts#2424
Conversation
There was a problem hiding this comment.
Pull request overview
Adds new GitHub Actions coverage to exercise stellar contract build (and partially contract info interface) against real-world Soroban contracts from external repos, improving regression detection for CLI contract workflows.
Changes:
- Introduces a workflow to build + validate interfaces for contracts in
stellar/soroban-examples. - Introduces a workflow to build + validate interfaces for cdylib contracts in
OpenZeppelin/stellar-contracts. - Builds the CLI from source in CI and shares it between jobs via artifacts.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 8 comments.
| File | Description |
|---|---|
| .github/workflows/test-with-soroban-examples.yml | New CI workflow to build selected soroban-examples contracts with stellar contract build and validate non-empty interface output. |
| .github/workflows/test-with-openzeppelin-contracts.yml | New CI workflow to build selected OpenZeppelin contracts with stellar contract build and validate non-empty interface output. |
|
It would also be good to test if the generated clients compile. |
|
After #2426 merges, we should update this PR to run the spec-verify command on the built wasms. It will error rather than simply warn. |
If the client generator was staying in then cli long term yeah. The client generator will be deleted from the cli as part of its migration into the js sdk. Maybe this test could still use the js sdk to generate, but that'd be testing a circular dependency and would fail for reasons outside this repos control each time something new was added to the spec. The test at least uses the contract info interface command that confirms the spec is decodable. |
|
I meant import contract generator. Which I see now would tested by info |
That's the same output as the Please let me know if I'm misunderstanding. |
Fyi that some of the OpenZeppelin builds ☝🏻 are expected to fail, as this is capturing the status quo today that specs don't get shaken well. And is what stellar/rs-soroban-sdk#1672 #2353 are setting out to improve. |
|
Fyi the soroban-examples privacy-pools/contract failure is going to be fixed by: |

What
Add two GitHub Actions workflows that build real-world contracts from
stellar/soroban-examplesandOpenZeppelin/stellar-contractsusing the CLI built from source. Each workflow builds all cdylib contracts withstellar contract build, verifies each Wasm exposes at least one contract function viastellar contract info interface.Why
The CLI has little coverage for
stellar contract buildorstellar contract uploadagainst real-world contracts, leaving regressions in those paths undetected until after release.This test is limited in that it doesn't check much about the contract, but does check that the build process works, doesn't error, and that the resulting contracts still have expected custom sections which are components that the stellar-cli does touch.
This testing approach of testing against soroban-examples and openzeppelin/stellar-contracts is used today in the stellar/rs-soroban-sdk.
Close #2423