Skip to content

Commit e95e133

Browse files
authored
feat(v0.3.0): deployment solver, test coverage, supply chain hardening (#74)
feat(solver): deployment solver foundations — topology, allocation, protocol library
2 parents 7f54297 + c24e4b0 commit e95e133

45 files changed

Lines changed: 6274 additions & 165 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -164,19 +164,12 @@ jobs:
164164
supply-chain:
165165
name: Supply Chain (cargo-vet)
166166
runs-on: ubuntu-latest
167-
continue-on-error: true
168167
steps:
169168
- uses: actions/checkout@v4
170-
- uses: dtolnay/rust-toolchain@nightly
169+
- uses: dtolnay/rust-toolchain@stable
171170
- name: Install cargo-vet
172171
uses: taiki-e/install-action@v2
173172
with:
174173
tool: cargo-vet
175-
- name: Initialize cargo-vet if needed
176-
run: |
177-
if [ ! -d supply-chain ]; then
178-
cargo vet init
179-
echo "::notice::cargo-vet initialized"
180-
fi
181-
- name: Check supply chain
182-
run: cargo vet --locked || echo "::warning::cargo-vet found unaudited crates"
174+
- name: Verify supply chain
175+
run: cargo vet --locked

.github/workflows/release.yml

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ on:
77

88
permissions:
99
contents: write
10+
id-token: write
11+
attestations: write
1012

1113
env:
1214
CARGO_TERM_COLOR: always
@@ -244,10 +246,28 @@ jobs:
244246
env:
245247
VSCE_PAT: ${{ secrets.VSCE_PAT }}
246248

249+
# ── SBOM (Software Bill of Materials) ─────────────────────────────────
250+
build-sbom:
251+
name: Generate SBOM
252+
runs-on: ubuntu-latest
253+
steps:
254+
- uses: actions/checkout@v4
255+
- uses: dtolnay/rust-toolchain@stable
256+
- name: Install cargo-cyclonedx
257+
uses: taiki-e/install-action@v2
258+
with:
259+
tool: cargo-cyclonedx
260+
- name: Generate CycloneDX SBOM
261+
run: cargo cyclonedx --format json --output-file spar-sbom.cdx.json
262+
- uses: actions/upload-artifact@v4
263+
with:
264+
name: sbom
265+
path: spar-sbom.cdx.json
266+
247267
# ── Create GitHub Release ─────────────────────────────────────────────
248268
create-release:
249269
name: Create GitHub Release
250-
needs: [build-binaries, build-compliance, build-test-evidence, build-vsix]
270+
needs: [build-binaries, build-compliance, build-test-evidence, build-vsix, build-sbom]
251271
runs-on: ubuntu-latest
252272
steps:
253273
- uses: actions/checkout@v4
@@ -260,7 +280,7 @@ jobs:
260280
- name: Collect assets
261281
run: |
262282
mkdir -p release
263-
find artifacts -type f \( -name "*.tar.gz" -o -name "*.zip" -o -name "*.vsix" \) -exec mv {} release/ \;
283+
find artifacts -type f \( -name "*.tar.gz" -o -name "*.zip" -o -name "*.vsix" -o -name "*.cdx.json" \) -exec mv {} release/ \;
264284
ls -la release/
265285
266286
- name: Generate checksums
@@ -272,9 +292,20 @@ jobs:
272292
- name: Create Release
273293
env:
274294
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
295+
VERSION: ${{ github.ref_name }}
275296
run: |
276-
VERSION="${GITHUB_REF#refs/tags/}"
277297
gh release create "$VERSION" \
278298
--title "spar $VERSION" \
279299
--generate-notes \
280300
release/*
301+
302+
- name: Attest release artifacts (SLSA provenance)
303+
env:
304+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
305+
run: |
306+
for file in release/*; do
307+
echo "Attesting: $file"
308+
gh attestation create "$file" \
309+
--repo "${{ github.repository }}" \
310+
--bundle-output "$file.jsonl" || true
311+
done
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[ 856ms] [ERROR] Failed to load resource: the server responded with a status of 404 (File not found) @ http://localhost:8777/favicon.ico:0

0 commit comments

Comments
 (0)