Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -153,3 +153,13 @@ jobs:

- name: run WP5 secret scanner smoke
run: CARGO_BUILD=0 bash tests/e2e/wp5_secret_scan.sh

- name: Sprint 2 MCP surface
run: bash tests/e2e/sprint_2_mcp_surface.sh
env:
CARGO_BUILD: "0"

- name: Phase 3 subsystem clustering determinism
run: bash tests/e2e/phase3_subsystems.sh
env:
CARGO_BUILD: "0"
32 changes: 25 additions & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@ jobs:
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5

- name: Assert tagged commit is on main
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
run: |
git fetch --no-tags origin main
git merge-base --is-ancestor "$GITHUB_SHA" origin/main || \
{ echo "::error::tag $GITHUB_REF does not point to a commit on main"; exit 1; }
Comment on lines +36 to +40

- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8
with:
toolchain: stable
Expand Down Expand Up @@ -117,6 +124,16 @@ jobs:
- name: WP5 secret scanner smoke
run: CARGO_BUILD=0 bash tests/e2e/wp5_secret_scan.sh

- name: Sprint 2 MCP surface
run: bash tests/e2e/sprint_2_mcp_surface.sh
env:
CARGO_BUILD: "0"

- name: Phase 3 subsystem clustering determinism
run: bash tests/e2e/phase3_subsystems.sh
env:
CARGO_BUILD: "0"

release-governance:
name: GitHub release governance
runs-on: ubuntu-latest
Expand Down Expand Up @@ -207,22 +224,23 @@ jobs:
actions: read
contents: read
outputs:
rust-subjects: ${{ steps.subjects.outputs.rust-subjects }}
# CI-03: includes both Rust binaries and Python plugin sdist
release-subjects: ${{ steps.subjects.outputs.release-subjects }}
steps:
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
with:
path: artifacts

- name: compute Rust archive subjects
- name: compute release artifact subjects
id: subjects
run: |
set -euo pipefail
while IFS= read -r -d '' asset; do
digest=$(sha256sum "$asset" | cut -d' ' -f1)
printf '%s %s\n' "$digest" "$(basename "$asset")"
done < <(find artifacts -name 'clarion-*.tar.gz' -print0 | sort -z) > rust-subjects.txt
test -s rust-subjects.txt
echo "rust-subjects=$(base64 -w0 rust-subjects.txt)" >> "$GITHUB_OUTPUT"
done < <(find artifacts \( -name 'clarion-*.tar.gz' -o -name 'clarion_plugin_python*.tar.gz' \) -print0 | sort -z) > release-subjects.txt
test -s release-subjects.txt
echo "release-subjects=$(base64 -w0 release-subjects.txt)" >> "$GITHUB_OUTPUT"

build-plugin:
needs: [verify, release-governance]
Expand Down Expand Up @@ -403,7 +421,7 @@ jobs:
id-token: write
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@f7dd8c54c2067bafc12ca7a55595d5ee9b75204a
with:
base64-subjects: ${{ needs.release-subjects.outputs.rust-subjects }}
base64-subjects: ${{ needs.release-subjects.outputs.release-subjects }}
upload-assets: true
upload-tag-name: ${{ github.ref_name }}
provenance-name: clarion-rust-binaries.intoto.jsonl
provenance-name: clarion-release-artifacts.intoto.jsonl
Loading