@@ -7,13 +7,11 @@ permissions: {}
77
88jobs :
99 release :
10- name : Build, Sign & Release
10+ name : Build & Release
1111 runs-on : ubuntu-latest
12- environment : release
1312 permissions :
14- contents : write # create tag, release, and upload assets
15- id-token : write # Sigstore OIDC keyless signing
16- attestations : write # SLSA build provenance
13+ contents : write # create tag, release, and upload assets
14+ attestations : write # SLSA build provenance
1715
1816 steps :
1917 - name : Harden the runner (Audit all outbound calls)
@@ -23,13 +21,15 @@ jobs:
2321
2422 - name : Checkout repository
2523 uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
24+ with :
25+ fetch-depth : 0
2626
27- - name : Extract version from script
27+ - name : Extract version from source
2828 id : version
2929 run : |
30- version=$(grep -m1 '^AGENT_VERSION=' stepsecurity-dev-machine-guard.sh | sed 's/AGENT_VERSION= "//;s/"//')
30+ version=$(grep -m1 'Version' internal/buildinfo/version.go | sed 's/.* "//;s/".* //')
3131 if [ -z "$version" ]; then
32- echo "::error::Could not extract AGENT_VERSION from script "
32+ echo "::error::Could not extract Version from internal/buildinfo/version.go "
3333 exit 1
3434 fi
3535 tag="v${version}"
@@ -40,52 +40,47 @@ jobs:
4040 - name : Check tag does not already exist
4141 run : |
4242 if git rev-parse "refs/tags/${{ steps.version.outputs.tag }}" >/dev/null 2>&1; then
43- echo "::error::Tag ${{ steps.version.outputs.tag }} already exists. Bump AGENT_VERSION in the script before releasing."
43+ echo "::error::Tag ${{ steps.version.outputs.tag }} already exists. Bump Version in internal/buildinfo/version.go before releasing."
4444 exit 1
4545 fi
4646
47- - name : Install cosign
48- uses : sigstore/cosign-installer@faadad0cce49287aee09b3a48701e75088a2c6ad # v4.0.0
49-
50- - name : Sign script with Sigstore (keyless)
51- run : |
52- cosign sign-blob stepsecurity-dev-machine-guard.sh \
53- --bundle stepsecurity-dev-machine-guard.sh.bundle \
54- --yes
55-
56- - name : Verify signature
57- run : |
58- cosign verify-blob stepsecurity-dev-machine-guard.sh \
59- --bundle stepsecurity-dev-machine-guard.sh.bundle \
60- --certificate-identity-regexp "github.com/step-security/dev-machine-guard" \
61- --certificate-oidc-issuer "https://token.actions.githubusercontent.com"
62-
63- - name : Generate checksums
64- run : |
65- sha256sum stepsecurity-dev-machine-guard.sh > checksums.txt
66- sha256sum stepsecurity-dev-machine-guard.sh.bundle >> checksums.txt
67- echo "Checksums:"
68- cat checksums.txt
69-
7047 - name : Create tag
7148 run : |
7249 git config user.name "github-actions[bot]"
7350 git config user.email "github-actions[bot]@users.noreply.github.com"
7451 git tag -a "${{ steps.version.outputs.tag }}" -m "Release ${{ steps.version.outputs.tag }}"
7552 git push origin "${{ steps.version.outputs.tag }}"
7653
77- - name : Create GitHub Release
78- uses : step-security/action-gh-release@d45511d7589f080cf54961ff056b9705a74fd160 # v2.5.0
54+ - name : Set up Go
55+ uses : actions/setup-go@v5
7956 with :
80- tag_name : ${{ steps.version.outputs.tag }}
81- name : ${{ steps.version.outputs.tag }}
82- generate_release_notes : true
83- files : |
84- stepsecurity-dev-machine-guard.sh
85- stepsecurity-dev-machine-guard.sh.bundle
86- checksums.txt
57+ go-version-file : go.mod
58+
59+ - name : Run GoReleaser
60+ uses : goreleaser/goreleaser-action@v6
61+ with :
62+ distribution : goreleaser
63+ version : latest
64+ args : release --clean
65+ env :
66+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
67+
68+ - name : Generate checksums for shell script
69+ run : |
70+ sha256sum stepsecurity-dev-machine-guard.sh >> dist/stepsecurity-dev-machine-guard_${{ steps.version.outputs.version }}_SHA256SUMS
71+
72+ - name : Upload shell script checksum to release
73+ env :
74+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
75+ run : |
76+ gh release upload "${{ steps.version.outputs.tag }}" \
77+ dist/stepsecurity-dev-machine-guard_${{ steps.version.outputs.version }}_SHA256SUMS \
78+ --clobber
8779
8880 - name : Attest build provenance
8981 uses : actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0
9082 with :
91- subject-path : stepsecurity-dev-machine-guard.sh
83+ subject-path : |
84+ dist/stepsecurity-dev-machine-guard_darwin_amd64_v1/stepsecurity-dev-machine-guard
85+ dist/stepsecurity-dev-machine-guard_darwin_arm64_v1/stepsecurity-dev-machine-guard
86+ stepsecurity-dev-machine-guard.sh
0 commit comments