ReviewOS

also looking at this

craft-native/craft

chore(ci): pin artifact download action

#315
Merged glennmichael123 wants to merge codex/pin-artifact-download into main
3 files +5 -2
.github/workflows/release.ymlmodified+1-1
Changes to .github/workflows/release.yml
@@ -486,7 +486,7 @@ jobs:
486486 steps:
487487 - uses: actions/checkout@v6
488488 - uses: oven-sh/setup-bun@v2
489 - uses: actions/download-artifact@v4
489 - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
490490 with:
491491 name: sbom
492492 path: sbom
.github/workflows/sbom.ymlmodified+1-1
Changes to .github/workflows/sbom.yml
@@ -109,7 +109,7 @@ jobs:
109109 - uses: oven-sh/setup-bun@v2
110110
111111 - name: Download SBOM
112 uses: actions/download-artifact@v4
112 uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
113113 with:
114114 name: sbom
115115 path: sbom/
scripts/release-workflow.test.tsmodified+3-0
Changes to scripts/release-workflow.test.ts
@@ -12,6 +12,7 @@ type Job = {
1212 strategy?: { matrix: { platform: { name: string, os: string }[] } }
1313}
1414const release = Bun.YAML.parse(readFileSync(join(import.meta.dir, '../.github/workflows/release.yml'), 'utf8')) as { jobs: Record<string, Job> }
15const artifactDownload = 'actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093'
1516const needs = (job: Job) => typeof job.needs === 'string' ? [job.needs] : job.needs ?? []
1617const steps = (job: Job) => job.steps?.map(step => step.run ?? '').join('\n') ?? ''
1718
@@ -82,4 +83,6 @@ test('SBOM generation validates required documents before uploading artifacts',
8283 expect(command).not.toContain('||')
8384 const scan = workflow.jobs['vulnerability-scan'].steps!.find(step => step.name === 'Scan and validate vulnerability report')
8485 expect(scan?.env?.CRAFT_FAIL_HIGH).toBe('$')
86 expect(workflow.jobs['vulnerability-scan'].steps!.find(step => step.uses?.startsWith('actions/download-artifact@'))?.uses).toBe(artifactDownload)
87 expect(release.jobs['attach-release-sbom'].steps!.find(step => step.uses?.startsWith('actions/download-artifact@'))?.uses).toBe(artifactDownload)
8588})