Skip to content

Commit b7db1ed

Browse files
authored
Fix GPG secret handling: use passphrase-file and restrict secrets to tag runs
1 parent 09104f0 commit b7db1ed

2 files changed

Lines changed: 11 additions & 3 deletions

File tree

.github/workflows/release.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ jobs:
3636
name: Import GPG key
3737
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
3838
run: echo "${{ secrets.GPG_PRIVATE_KEY }}" | base64 --decode | gpg --batch --import
39+
-
40+
name: Set GPG environment for signing
41+
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
42+
run: |
43+
echo "GPG_FINGERPRINT=${{ secrets.GPG_FINGERPRINT }}" >> "$GITHUB_ENV"
44+
echo "GPG_PASSPHRASE=${{ secrets.GPG_PASSPHRASE }}" >> "$GITHUB_ENV"
3945
-
4046
name: Run GoReleaser
4147
uses: goreleaser/goreleaser-action@v7
@@ -45,5 +51,3 @@ jobs:
4551
args: release --clean ${{ env.flags }}
4652
env:
4753
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48-
GPG_FINGERPRINT: ${{ secrets.GPG_FINGERPRINT }}
49-
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}

.goreleaser.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,15 @@ signs:
6565
signature="$2"
6666
filename="$(basename "$artifact")"
6767
digest="$(sha256sum "$artifact" | cut -d' ' -f1)"
68+
passphrase_file="$(mktemp)"
69+
trap 'rm -f "$passphrase_file"' EXIT
70+
printf '%s' "${GPG_PASSPHRASE:-}" > "$passphrase_file"
71+
chmod 600 "$passphrase_file"
6872
{
6973
cat plugin.yaml
7074
printf '\n...\n'
7175
printf 'files:\n %s: "sha256:%s"\n' "$filename" "$digest"
72-
} | gpg --batch --yes --armor --pinentry-mode loopback --passphrase "${GPG_PASSPHRASE:-}" --local-user "$GPG_FINGERPRINT" --clearsign --output "$signature"
76+
} | gpg --batch --yes --armor --pinentry-mode loopback --passphrase-file "$passphrase_file" --local-user "$GPG_FINGERPRINT" --clearsign --output "$signature"
7377
- --
7478
- ${artifact}
7579
- ${signature}

0 commit comments

Comments
 (0)