diff --git a/.github/workflows/contracts.yml b/.github/workflows/contracts.yml new file mode 100644 index 0000000..39bd1a4 --- /dev/null +++ b/.github/workflows/contracts.yml @@ -0,0 +1,67 @@ +name: Contracts + +on: + push: + branches: [main] + paths: + - "contracts/**" + pull_request: + branches: [main] + paths: + - "contracts/**" + +permissions: + contents: read + +concurrency: + group: contracts-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build-contracts: + runs-on: ubuntu-latest + timeout-minutes: 20 + defaults: + run: + working-directory: contracts + + steps: + - uses: actions/checkout@v4 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + targets: wasm32-unknown-unknown + + - name: Cache Rust dependencies + uses: Swatinem/rust-cache@v2 + with: + workspaces: contracts + + - name: Build contracts + run: cargo build --target wasm32-unknown-unknown --release + + - name: Run contract tests + run: cargo test + + - name: Check contract sizes + shell: bash + run: | + set -euo pipefail + shopt -s nullglob + + wasm_files=(target/wasm32-unknown-unknown/release/*.wasm) + + if [ ${#wasm_files[@]} -eq 0 ]; then + echo "No WASM artifacts found in target/wasm32-unknown-unknown/release" + exit 1 + fi + + for wasm in "${wasm_files[@]}"; do + size=$(wc -c < "$wasm") + echo "$wasm: ${size} bytes" + + if [ "$size" -gt 65536 ]; then + echo "WARNING: Contract exceeds 64KB limit" + fi + done diff --git a/.github/workflows/soroban_tests.yml b/.github/workflows/soroban_tests.yml deleted file mode 100644 index 96ce465..0000000 --- a/.github/workflows/soroban_tests.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Soroban Contracts Tests - -on: - push: - branches: [ "main", "master" ] - pull_request: - branches: [ "main", "master" ] - -env: - CARGO_TERM_COLOR: always - -jobs: - test: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Set up Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - target: wasm32-unknown-unknown - override: true - - - name: Build and Test Contracts - run: | - cd contracts - cargo test --workspace