simpler artifacts

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
This commit is contained in:
Alex Goodman 2025-11-12 08:45:35 -05:00
parent ece3179655
commit 91f612069d

View File

@ -90,93 +90,100 @@ jobs:
- name: Smoke test snapshot build
run: make snapshot-smoke-test
# upload each platform artifact individually so downstream jobs can download only what they need
- run: npm install @actions/artifact@2.3.2
- name: Upload individual platform artifacts
uses: actions/github-script@v8
env:
ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY: 10
- name: Upload snapshot artifacts
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 #v6.0.0
with:
script: |
const { readdirSync } = require('fs')
const { DefaultArtifactClient } = require('@actions/artifact')
const artifact = new DefaultArtifactClient()
const ls = d => readdirSync(d, { withFileTypes: true })
const baseDir = "./snapshot"
const dirs = ls(baseDir).filter(f => f.isDirectory()).map(f => f.name)
const uploads = []
name: snapshot
path: snapshot/
retention-days: 30
// filter to only amd64 and arm64 architectures
const supportedArchs = ['amd64', 'arm64']
const filteredDirs = dirs.filter(dir =>
supportedArchs.some(arch => dir.includes(arch))
)
// upload platform subdirectories
for (const dir of filteredDirs) {
// uploadArtifact returns Promise<{id, size}>
uploads.push(artifact.uploadArtifact(
// name of the archive:
`${dir}`,
// array of all files to include:
ls(`${baseDir}/${dir}`).map(f => `${baseDir}/${dir}/${f.name}`),
// base directory to trim from entries:
`${baseDir}/${dir}`,
{ retentionDays: 30 }
))
}
// upload RPM and DEB packages for supported architectures
const packageFiles = ls(baseDir).filter(f =>
f.isFile() &&
(f.name.endsWith('.deb') || f.name.endsWith('.rpm')) &&
supportedArchs.some(arch => f.name.includes(`_${arch}.`))
)
for (const file of packageFiles) {
uploads.push(artifact.uploadArtifact(
file.name,
[`${baseDir}/${file.name}`],
baseDir,
{ retentionDays: 30 }
))
}
// upload SBOM files for supported architectures
const sbomFiles = ls(baseDir).filter(f =>
f.isFile() &&
f.name.endsWith('.sbom') &&
supportedArchs.some(arch => f.name.includes(`_${arch}.`))
)
for (const file of sbomFiles) {
uploads.push(artifact.uploadArtifact(
file.name,
[`${baseDir}/${file.name}`],
baseDir,
{ retentionDays: 30 }
))
}
// upload checksums file (needed by install tests)
const rootFiles = ls(baseDir).filter(f => f.isFile() && f.name.match(/syft_.*_checksums\.txt$/))
if (rootFiles.length > 0) {
const checksumsFile = rootFiles[0].name
uploads.push(artifact.uploadArtifact(
'syft_checksums.txt',
[`${baseDir}/${checksumsFile}`],
baseDir,
{ retentionDays: 30 }
))
}
// wait for all uploads to finish
try {
const results = await Promise.all(uploads)
console.log(`Successfully uploaded ${results.length} artifacts`)
} catch (error) {
console.error('Upload failed:', error)
throw error
}
# # upload each platform artifact individually so downstream jobs can download only what they need
# - run: npm install @actions/artifact@2.3.2
#
# - name: Upload individual platform artifacts
# uses: actions/github-script@v8
# env:
# ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY: 10
# with:
# script: |
# const { readdirSync } = require('fs')
# const { DefaultArtifactClient } = require('@actions/artifact')
# const artifact = new DefaultArtifactClient()
# const ls = d => readdirSync(d, { withFileTypes: true })
# const baseDir = "./snapshot"
# const dirs = ls(baseDir).filter(f => f.isDirectory()).map(f => f.name)
# const uploads = []
#
# // filter to only amd64 and arm64 architectures
# const supportedArchs = ['amd64', 'arm64']
# const filteredDirs = dirs.filter(dir =>
# supportedArchs.some(arch => dir.includes(arch))
# )
#
# // upload platform subdirectories
# for (const dir of filteredDirs) {
# // uploadArtifact returns Promise<{id, size}>
# uploads.push(artifact.uploadArtifact(
# // name of the archive:
# `${dir}`,
# // array of all files to include:
# ls(`${baseDir}/${dir}`).map(f => `${baseDir}/${dir}/${f.name}`),
# // base directory to trim from entries:
# `${baseDir}/${dir}`,
# { retentionDays: 30 }
# ))
# }
#
# // upload RPM and DEB packages for supported architectures
# const packageFiles = ls(baseDir).filter(f =>
# f.isFile() &&
# (f.name.endsWith('.deb') || f.name.endsWith('.rpm')) &&
# supportedArchs.some(arch => f.name.includes(`_${arch}.`))
# )
# for (const file of packageFiles) {
# uploads.push(artifact.uploadArtifact(
# file.name,
# [`${baseDir}/${file.name}`],
# baseDir,
# { retentionDays: 30 }
# ))
# }
#
# // upload SBOM files for supported architectures
# const sbomFiles = ls(baseDir).filter(f =>
# f.isFile() &&
# f.name.endsWith('.sbom') &&
# supportedArchs.some(arch => f.name.includes(`_${arch}.`))
# )
# for (const file of sbomFiles) {
# uploads.push(artifact.uploadArtifact(
# file.name,
# [`${baseDir}/${file.name}`],
# baseDir,
# { retentionDays: 30 }
# ))
# }
#
# // upload checksums file (needed by install tests)
# const rootFiles = ls(baseDir).filter(f => f.isFile() && f.name.match(/syft_.*_checksums\.txt$/))
# if (rootFiles.length > 0) {
# const checksumsFile = rootFiles[0].name
# uploads.push(artifact.uploadArtifact(
# 'syft_checksums.txt',
# [`${baseDir}/${checksumsFile}`],
# baseDir,
# { retentionDays: 30 }
# ))
# }
#
# // wait for all uploads to finish
# try {
# const results = await Promise.all(uploads)
# console.log(`Successfully uploaded ${results.length} artifacts`)
# } catch (error) {
# console.error('Upload failed:', error)
# throw error
# }
Acceptance-Linux:
# Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline
@ -197,35 +204,41 @@ jobs:
with:
download-test-fixture-cache: true
- name: Download checksums file
- name: Download snapshot artifacts
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
with:
name: syft_checksums.txt
name: snapshot
path: snapshot
- name: Download Linux amd64 snapshot
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
with:
name: linux-build_linux_amd64_v1
path: snapshot/linux-build_linux_amd64_v1
- name: Download Linux amd64 deb
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
with:
pattern: syft_*_linux_amd64.deb
path: snapshot
- name: Download Linux amd64 rpm
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
with:
pattern: syft_*_linux_amd64.rpm
path: snapshot
- name: Download Linux amd64 sbom
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
with:
pattern: syft_*_linux_amd64.sbom
path: snapshot
# - name: Download checksums file
# uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
# with:
# name: syft_checksums.txt
# path: snapshot
#
# - name: Download Linux amd64 snapshot
# uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
# with:
# name: linux-build_linux_amd64_v1
# path: snapshot/linux-build_linux_amd64_v1
#
# - name: Download Linux amd64 deb
# uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
# with:
# pattern: syft_*_linux_amd64.deb
# path: snapshot
#
# - name: Download Linux amd64 rpm
# uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
# with:
# pattern: syft_*_linux_amd64.rpm
# path: snapshot
#
# - name: Download Linux amd64 sbom
# uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
# with:
# pattern: syft_*_linux_amd64.sbom
# path: snapshot
- name: Run comparison tests (Linux)
run: make compare-linux
@ -262,23 +275,29 @@ jobs:
go-dependencies: false
download-test-fixture-cache: true
- name: Download checksums file
- name: Download snapshot artifacts
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
with:
name: syft_checksums.txt
name: snapshot
path: snapshot
- name: Download macOS Intel snapshot
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
with:
name: darwin-build_darwin_amd64_v1
path: snapshot/darwin-build_darwin_amd64_v1
- name: Download macOS amd64 sbom
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
with:
pattern: syft_*_darwin_amd64.sbom
path: snapshot
# - name: Download checksums file
# uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
# with:
# name: syft_checksums.txt
# path: snapshot
#
# - name: Download macOS Intel snapshot
# uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
# with:
# name: darwin-build_darwin_amd64_v1
# path: snapshot/darwin-build_darwin_amd64_v1
#
# - name: Download macOS amd64 sbom
# uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
# with:
# pattern: syft_*_darwin_amd64.sbom
# path: snapshot
- name: Run comparison tests (Mac)
run: make compare-mac
@ -305,11 +324,17 @@ jobs:
with:
download-test-fixture-cache: true
- name: Download Linux amd64 snapshot
- name: Download snapshot artifacts
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
with:
name: linux-build_linux_amd64_v1
path: snapshot/linux-build_linux_amd64_v1
name: snapshot
path: snapshot
# - name: Download Linux amd64 snapshot
# uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 #v6.0.0
# with:
# name: linux-build_linux_amd64_v1
# path: snapshot/linux-build_linux_amd64_v1
- name: Run CLI Tests (Linux)
run: make cli