chore: remove agents skills and Zone.Identifier from repo, update git… #39
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
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| # Cancel superseded runs on the same ref to save minutes. | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # ── Detect which parts of the monorepo changed ────────────────────────────── | |
| changes: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| contracts: ${{ steps.filter.outputs.contracts }} | |
| agent: ${{ steps.filter.outputs.agent }} | |
| frontend: ${{ steps.filter.outputs.frontend }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dorny/paths-filter@v3 | |
| id: filter | |
| with: | |
| filters: | | |
| contracts: | |
| - 'contracts/**' | |
| agent: | |
| - 'agent-node/**' | |
| frontend: | |
| - 'frontend/**' | |
| # ── Solidity: build + test ────────────────────────────────────────────────── | |
| contracts: | |
| needs: changes | |
| if: needs.changes.outputs.contracts == 'true' | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: contracts | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - uses: foundry-rs/foundry-toolchain@v1 | |
| - name: forge build | |
| run: forge build --sizes | |
| - name: forge test | |
| run: forge test -vvv | |
| # ── Agent node: syntax check every source file ────────────────────────────── | |
| agent: | |
| needs: changes | |
| if: needs.changes.outputs.agent == 'true' | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: agent-node | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22' | |
| cache: npm | |
| cache-dependency-path: agent-node/package-lock.json | |
| - run: npm ci | |
| - name: node --check all sources | |
| run: find src -name '*.js' -print0 | xargs -0 -n1 node --check | |
| # ── Frontend: lint + build ────────────────────────────────────────────────── | |
| frontend: | |
| needs: changes | |
| if: needs.changes.outputs.frontend == 'true' | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: frontend | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22' | |
| cache: npm | |
| cache-dependency-path: frontend/package-lock.json | |
| - run: npm ci | |
| - name: build | |
| run: npm run build | |
| # ── Single required check: passes unless a job that actually ran failed ────── | |
| # Require THIS check in branch protection (not the path-filtered jobs above, | |
| # which report "skipped" and would otherwise deadlock a PR forever). | |
| ci: | |
| needs: [contracts, agent, frontend] | |
| if: always() | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Verify no job failed | |
| run: | | |
| if echo '${{ join(needs.*.result, ',') }}' | grep -qE 'failure|cancelled'; then | |
| echo "A CI job failed: ${{ join(needs.*.result, ',') }}" | |
| exit 1 | |
| fi | |
| echo "CI passed (results: ${{ join(needs.*.result, ',') }})" |