Bug
`.github/workflows/ci.yml` builds and tests the Soroban contracts but does not perform an actual deployment smoke test to Stellar testnet. It's possible for contracts to pass all local unit tests but fail to deploy due to:
- WASM binary exceeding size limits
- Missing or incorrect contract metadata
- Incompatible Soroban SDK version with the current testnet
- Missing `#![no_std]` attribute causing deployment rejection
Fix
Add a deployment smoke test job that runs on PRs targeting `main`:
```yaml
deploy-smoke-test:
runs-on: ubuntu-latest
needs: [build, test]
steps:
- name: Deploy invoice contract to testnet
run: |
soroban contract deploy
--wasm target/wasm32-unknown-unknown/release/invoice.wasm
--source ${{ secrets.TESTNET_DEPLOYER_SECRET }}
--network testnet
--fee 1000000
id: deploy-invoice
- name: Smoke test — call get_invoice on deployed contract
run: |
soroban contract invoke \
--id ${{ steps.deploy-invoice.outputs.contract-id }} \
--fn get_invoice \
--arg 999 \ # non-existent invoice
--network testnet
# Should return InvoiceError::NotFound — verify it doesn't crash
```
Acceptance Criteria
References
- `.github/workflows/ci.yml`
- `contracts/`
Bug
`.github/workflows/ci.yml` builds and tests the Soroban contracts but does not perform an actual deployment smoke test to Stellar testnet. It's possible for contracts to pass all local unit tests but fail to deploy due to:
Fix
Add a deployment smoke test job that runs on PRs targeting `main`:
```yaml
deploy-smoke-test:
runs-on: ubuntu-latest
needs: [build, test]
steps:
- name: Deploy invoice contract to testnet
run: |
soroban contract deploy
--wasm target/wasm32-unknown-unknown/release/invoice.wasm
--source ${{ secrets.TESTNET_DEPLOYER_SECRET }}
--network testnet
--fee 1000000
id: deploy-invoice
```
Acceptance Criteria
References