Skip to content

Latest commit

Β 

History

History
303 lines (233 loc) Β· 4.9 KB

File metadata and controls

303 lines (233 loc) Β· 4.9 KB

Soroban CI Quick Reference

πŸš€ Quick Start

Install Just

cargo install just

Run All CI Checks Locally

just ci

πŸ“‹ Common Commands

Formatting

just fmt          # Format all code
just fmt-check    # Check formatting without changes

Linting

just clippy       # Run Clippy lints
just lint         # Run all lints (format + clippy)

Building

just build         # Build debug WASM
just build-release # Build release WASM
just check-size    # Build and check WASM size

Testing

just test          # Run unit tests
just test-coverage # Run tests with coverage

Fixing Issues

just fix           # Auto-fix formatting and clippy issues

Other

just clean         # Clean build artifacts
just audit         # Run security audit
just docs          # Generate documentation

πŸ”§ Rust Toolchain

Version: 1.79.0
Components: rustfmt, clippy
Target: wasm32-unknown-unknown

Check Version

rustc --version
# Should output: rustc 1.79.0

Update Toolchain

rustup update

βœ… Pre-PR Checklist

Before submitting a PR, run:

# 1. Format code
just fmt

# 2. Run all checks
just ci

# 3. Commit if all pass
git add .
git commit -m "your message"
git push

πŸ” CI Jobs

Job Purpose Duration
rust-checks Format & lint ~2-3 min
build-wasm Build & size check ~3-5 min
run-tests Unit tests ~1-2 min
security-audit Security scan ~1-2 min
ci-summary Aggregate results ~30 sec

πŸ“Š WASM Size Limit

Maximum: 64 KB
Check: just check-size

If Size Exceeds:

  1. Review dependencies
  2. Optimize data structures
  3. Use references instead of cloning
  4. Run just optimize

πŸ› Troubleshooting

Formatting Failure

just fmt
git add .
git commit -m "style: format code"

Clippy Warnings

just fix  # Auto-fix if possible
# Manual fixes for remaining warnings

Test Failures

just test  # See detailed output

Build Failures

just clean
just build-release

πŸ“ Manual Commands

If you don't have Just installed:

Format

cd contracts/prediction_market
cargo fmt --all

Lint

cd contracts/prediction_market
cargo clippy --all-targets --all-features -- -D warnings

Build

cd contracts/prediction_market
cargo build --target wasm32-unknown-unknown --release

Test

cd contracts/prediction_market
cargo test --lib -- --nocapture

Check Size

cd contracts/prediction_market
stat -c%s target/wasm32-unknown-unknown/release/prediction_market.wasm

🎯 CI Status

View CI Results

  1. Go to your PR on GitHub
  2. Click "Checks" tab
  3. View job details and summaries

Download WASM Artifact

  1. Go to Actions tab
  2. Click on workflow run
  3. Download "prediction-market-wasm" artifact

πŸ” Security

Run Security Audit

just audit

Check for Unsafe Code

grep -r "unsafe" contracts/prediction_market/src/

πŸ“š Documentation

Generate Docs

just docs

View Docs

Opens in browser automatically after generation.

⚑ Performance Tips

Speed Up Local Checks

# Use cargo-watch for continuous testing
cargo install cargo-watch
just watch

Speed Up Builds

# Use sccache for caching
cargo install sccache
export RUSTC_WRAPPER=sccache

🎨 Code Style

Formatting Rules

  • Max width: 100 characters
  • Tab spaces: 4
  • Trailing comma: Vertical
  • Edition: 2021

Clippy Rules

  • MSRV: 1.70.0
  • All warnings as errors
  • No println! or dbg! in production

πŸ“¦ Dependencies

Check Outdated

just outdated

Update Dependencies

just update

πŸ”„ Workflow

Development Flow

1. Write code
2. Run `just ci`
3. Fix issues
4. Commit & push
5. CI runs automatically
6. Review PR checks
7. Merge when green

πŸ†˜ Getting Help

Resources

Common Errors

Error: cargo fmt --check fails
Fix: Run just fmt

Error: Clippy warnings
Fix: Run just fix or fix manually

Error: WASM > 64KB
Fix: Optimize code, run just optimize

Error: Tests fail
Fix: Debug with just test

πŸ“Š CI Metrics

Typical Sizes

  • Debug WASM: ~80-100 KB
  • Release WASM: ~40-50 KB
  • Optimized WASM: ~35-45 KB

Typical Times

  • Format check: ~10 sec
  • Clippy: ~30-60 sec
  • Build: ~2-3 min
  • Tests: ~30-60 sec

🎯 Success Indicators

βœ… All checks pass
βœ… WASM < 64KB
βœ… Zero warnings
βœ… All tests pass
βœ… Green checkmarks on PR


Quick Help: Run just to see all available commands
Full Docs: See SOROBAN_CI_README.md
Rust Version: 1.79.0