@@ -75,39 +75,46 @@ jobs:
7575 # GoReleaser uploads as name_template (e.g. stepsecurity-dev-machine-guard_darwin_amd64)
7676 # but keeps them in build subdirs locally. We copy to dist/ with release names
7777 # so cosign signs the same bytes users verify against.
78- AMD64_SRC=$(find dist -type f -name 'stepsecurity-dev-machine-guard' -path '*darwin_amd64*' | head -1)
79- ARM64_SRC=$(find dist -type f -name 'stepsecurity-dev-machine-guard' -path '*darwin_arm64*' | head -1)
80-
81- for label in "amd64:${AMD64_SRC}" "arm64:${ARM64_SRC}"; do
82- name="${label%%:*}"
83- path="${label#*:}"
84- if [ -z "$path" ] || [ ! -f "$path" ]; then
85- echo "::error::Binary not found for ${name}"
78+
79+ declare -A ARTIFACTS=(
80+ ["darwin_amd64"]="stepsecurity-dev-machine-guard"
81+ ["darwin_arm64"]="stepsecurity-dev-machine-guard"
82+ ["windows_amd64"]="stepsecurity-dev-machine-guard.exe"
83+ ["windows_arm64"]="stepsecurity-dev-machine-guard.exe"
84+ )
85+
86+ for target in "${!ARTIFACTS[@]}"; do
87+ binary="${ARTIFACTS[$target]}"
88+ src=$(find dist -type f -name "$binary" -path "*${target}*" | head -1)
89+ if [ -z "$src" ] || [ ! -f "$src" ]; then
90+ echo "::error::Binary not found for ${target}"
8691 find dist -type f
8792 exit 1
8893 fi
94+ cp "$src" "dist/stepsecurity-dev-machine-guard_${target}${binary##stepsecurity-dev-machine-guard}"
8995 done
90-
91- cp "$AMD64_SRC" dist/stepsecurity-dev-machine-guard_darwin_amd64
92- cp "$ARM64_SRC" dist/stepsecurity-dev-machine-guard_darwin_arm64
9396 echo "Prepared release artifacts for signing"
9497
9598 - name : Sign artifacts with Sigstore (keyless)
9699 run : |
97- cosign sign-blob dist/stepsecurity-dev-machine-guard_darwin_amd64 \
98- --bundle dist/stepsecurity-dev-machine-guard_darwin_amd64.bundle --yes
99- cosign sign-blob dist/stepsecurity-dev-machine-guard_darwin_arm64 \
100- --bundle dist/stepsecurity-dev-machine-guard_darwin_arm64.bundle --yes
101- cosign sign-blob stepsecurity-dev-machine-guard.sh \
102- --bundle dist/stepsecurity-dev-machine-guard.sh.bundle --yes
100+ for artifact in \
101+ dist/stepsecurity-dev-machine-guard_darwin_amd64 \
102+ dist/stepsecurity-dev-machine-guard_darwin_arm64 \
103+ dist/stepsecurity-dev-machine-guard_windows_amd64.exe \
104+ dist/stepsecurity-dev-machine-guard_windows_arm64.exe \
105+ stepsecurity-dev-machine-guard.sh; do
106+ cosign sign-blob "$artifact" --bundle "${artifact}.bundle" --yes
107+ done
103108
104109 - name : Generate checksums
105110 run : |
106- # Separate checksum file for cosign-signed artifacts (script + bundles).
107- # GoReleaser already generates checksums for the Go binaries in its own SHA256SUMS file.
108- sha256sum dist/stepsecurity-dev-machine-guard_darwin_amd64 > dist/cosign-checksums.txt
109- sha256sum dist/stepsecurity-dev-machine-guard_darwin_arm64 >> dist/cosign-checksums.txt
110- sha256sum stepsecurity-dev-machine-guard.sh >> dist/cosign-checksums.txt
111+ sha256sum \
112+ dist/stepsecurity-dev-machine-guard_darwin_amd64 \
113+ dist/stepsecurity-dev-machine-guard_darwin_arm64 \
114+ dist/stepsecurity-dev-machine-guard_windows_amd64.exe \
115+ dist/stepsecurity-dev-machine-guard_windows_arm64.exe \
116+ stepsecurity-dev-machine-guard.sh \
117+ > dist/cosign-checksums.txt
111118
112119 - name : Upload signature bundles and checksums to release
113120 env :
@@ -116,6 +123,8 @@ jobs:
116123 gh release upload "${{ steps.version.outputs.tag }}" \
117124 dist/stepsecurity-dev-machine-guard_darwin_amd64.bundle \
118125 dist/stepsecurity-dev-machine-guard_darwin_arm64.bundle \
126+ dist/stepsecurity-dev-machine-guard_windows_amd64.exe.bundle \
127+ dist/stepsecurity-dev-machine-guard_windows_arm64.exe.bundle \
119128 dist/stepsecurity-dev-machine-guard.sh.bundle \
120129 dist/cosign-checksums.txt \
121130 --clobber
@@ -135,4 +144,6 @@ jobs:
135144 subject-path : |
136145 dist/stepsecurity-dev-machine-guard_darwin_amd64
137146 dist/stepsecurity-dev-machine-guard_darwin_arm64
147+ dist/stepsecurity-dev-machine-guard_windows_amd64.exe
148+ dist/stepsecurity-dev-machine-guard_windows_arm64.exe
138149 stepsecurity-dev-machine-guard.sh
0 commit comments