Skip to content

Commit 8acc8c4

Browse files
committed
Improve security of releases by adding hash checks
1 parent 04ca5ff commit 8acc8c4

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

.github/workflows/release-gh-draft.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@ jobs:
5555
id: ver
5656
run: echo "VER=${GITHUB_REF_NAME#'release/'}" >> $GITHUB_OUTPUT
5757

58+
# First generate release.sha512sum which contains hashes of all release files, then
59+
# encrypt these hashes so that the hash file itself cannot be tampered with.
60+
- name: Generate release hashes (encrypted)
61+
run: |
62+
cd pygame-wheels
63+
sha512sum * > release.sha512sum
64+
gpg --batch --output release.sha512sum.gpg --passphrase ${{ secrets.GITHUB_TOKEN }} --symmetric release.sha512sum
65+
5866
- name: Draft a release
5967
uses: softprops/action-gh-release@v2
6068
with:

.github/workflows/release-pypi.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,16 @@ jobs:
2323
zipBall: false
2424
out-file-path: "dist"
2525

26+
# Check that all the files that successfully uploaded from the release-gh-draft
27+
# action have not been tampered with. This however ignores any extra files that
28+
# were manually added.
29+
- name: Verify release hashes
30+
run: |
31+
cd dist
32+
gpg --batch --output release.decrypted.sha512sum --passphrase ${{ secrets.GITHUB_TOKEN }} --decrypt release.sha512sum.gpg
33+
diff -s release.sha512sum release.decrypted.sha512sum
34+
sha512sum -c release.decrypted.sha512sum
35+
rm release.*
36+
2637
- name: Publish to PyPI
2738
uses: pypa/gh-action-pypi-publish@release/v1

0 commit comments

Comments
 (0)