fix(reward-engine): validate proof_cid length in submit_proof (#60) #112
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # GitHub Actions CI Workflow for EcoTask Contracts | |
| name: CI | |
| on: [push, pull_request] | |
| permissions: | |
| contents: read | |
| pull-requests: read | |
| jobs: | |
| changelog: | |
| name: Require changelog for contract changes | |
| if: github.event_name == 'pull_request' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Detect contract and changelog changes | |
| id: changes | |
| run: | | |
| BASE=${{ github.event.pull_request.base.sha }} | |
| HEAD=${{ github.event.pull_request.head.sha }} | |
| if git diff --name-only "$BASE" "$HEAD" | grep -qE '^contracts/[^/]+/src/[^/]+\.rs$'; then | |
| echo "contracts=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "contracts=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| if git diff --name-only "$BASE" "$HEAD" | grep -qE '^CHANGELOG\.md$'; then | |
| echo "changelog=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "changelog=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Require changelog entry | |
| if: steps.changes.outputs.contracts == 'true' && steps.changes.outputs.changelog != 'true' | |
| run: | | |
| echo "::error::Contract source changes require a CHANGELOG.md entry." | |
| exit 1 | |
| lint-and-build: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| with: | |
| target: wasm32v1-none | |
| components: clippy, rustfmt | |
| - uses: Swatinem/rust-cache@v2 | |
| - run: cargo fmt --check | |
| - run: cargo clippy --all-targets --all-features -- -D warnings | |
| - run: cargo build --target wasm32v1-none --release --locked | |
| - name: Check documentation | |
| env: | |
| RUSTDOCFLAGS: -D warnings | |
| run: cargo doc --workspace --no-deps | |
| unit-tests: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| strategy: | |
| matrix: | |
| crate: [eco-token, task-registry, reward-engine] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| with: | |
| target: wasm32v1-none | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Install cargo-nextest | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-nextest@0.9.83 | |
| - name: Run unit tests | |
| run: cargo nextest run -p ${{ matrix.crate }} | |
| - name: Publish Test Report | |
| uses: test-summary/action@v2 | |
| with: | |
| paths: target/nextest/default/junit.xml | |
| if: always() | |
| integration-tests: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| with: | |
| target: wasm32v1-none | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Install cargo-nextest | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-nextest@0.9.83 | |
| - name: Run integration tests | |
| run: cargo nextest run -p ecotask-contracts --test reward_integration_test --test-threads 1 | |
| - name: Publish Test Report | |
| uses: test-summary/action@v2 | |
| with: | |
| paths: target/nextest/default/junit.xml | |
| if: always() |