1+ name : Create a new release for SBOMbastic stack
2+
3+ on :
4+ push :
5+ tags :
6+ - ' v*.*.*'
7+
8+ jobs :
9+ build :
10+ uses : ./.github/workflows/container-build.yaml
11+ with :
12+ version : ${{ github.ref_name }}
13+ secrets : inherit
14+ create-release :
15+ needs : [build]
16+ runs-on : ubuntu-latest
17+ steps :
18+ - name : Retrieve tag name
19+ if : ${{ startsWith(github.ref, 'refs/tags/') }}
20+ run : |
21+ echo TAG_NAME=$(echo ${{ github.ref_name }}) >> $GITHUB_ENV
22+ - name : Get release ID from the release created by release drafter
23+ uses : actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
24+ with :
25+ script : |
26+ let releases = await github.rest.repos.listReleases({
27+ owner: context.repo.owner,
28+ repo: context.repo.repo,
29+ });
30+ for (const release of releases.data) {
31+ if (release.draft) {
32+ core.info(release)
33+ core.exportVariable('RELEASE_ID', release.id)
34+ return
35+ }
36+ }
37+ core.setFailed(`Draft release not found`)
38+ - name : Download attestation artifacts
39+ uses : actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
40+ with :
41+ pattern : attestation-SBOMbastic-*
42+ merge-multiple : true
43+ - name : Display structure of downloaded files
44+ run : ls -R
45+
46+ - name : Create tarball for the attestation files
47+ run : |
48+ for arch in "amd64" "arm64"; do
49+ for component in "controller" "worker" "storage"; do
50+ tar -czf attestation-SBOMbastic-$component-$arch.tar.gz $(ls SBOMbastic-$component-attestation-$arch-*)
51+ done
52+ done
53+ - name : Upload release assets
54+ id : upload_release_assets
55+ uses : actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
56+ with :
57+ script : |
58+ let fs = require('fs');
59+ let path = require('path');
60+ let files = [
61+ 'attestation-SBOMbastic-controller-amd64.tar.gz',
62+ 'attestation-SBOMbastic-worker-amd64.tar.gz',
63+ 'attestation-SBOMbastic-storage-amd64.tar.gz',
64+ 'attestation-SBOMbastic-controller-arm64.tar.gz',
65+ 'attestation-SBOMbastic-worker-arm64.tar.gz',
66+ 'attestation-SBOMbastic-storage-arm64.tar.gz',
67+ ]
68+ const {RELEASE_ID} = process.env
69+ for (const file of files) {
70+ let file_data = fs.readFileSync(file);
71+ let response = await github.rest.repos.uploadReleaseAsset({
72+ owner: context.repo.owner,
73+ repo: context.repo.repo,
74+ release_id: `${RELEASE_ID}`,
75+ name: path.basename(file),
76+ data: file_data,
77+ });
78+ }
79+ - name : Publish release
80+ uses : actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
81+ with :
82+ script : |
83+ const {RELEASE_ID} = process.env
84+ const {TAG_NAME} = process.env
85+ isPreRelease = ${{ contains(github.ref_name, '-alpha') || contains(github.ref_name, '-beta') || contains(github.ref_name, '-rc') }}
86+ github.rest.repos.updateRelease({
87+ owner: context.repo.owner,
88+ repo: context.repo.repo,
89+ release_id: `${RELEASE_ID}`,
90+ draft: false,
91+ tag_name: `${TAG_NAME}`,
92+ name: `SBOMbastic ${TAG_NAME}`,
93+ prerelease: isPreRelease,
94+ make_latest: !isPreRelease
95+ });
0 commit comments