Skip to content

Commit 1b95362

Browse files
committed
Package signing
1 parent c8ab266 commit 1b95362

File tree

1 file changed

+48
-5
lines changed

1 file changed

+48
-5
lines changed

.github/workflows/publish_unstable_package.yaml

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ jobs:
237237
upload-rpm:
238238
name: Upload RPM to S3
239239
needs: test-rpm
240+
if: github.ref == 'refs/heads/release/8.0'
240241
runs-on: ubuntu-latest
241242
permissions:
242243
id-token: write
@@ -261,14 +262,56 @@ jobs:
261262
aws-region: ${{ secrets.RPM_S3_REGION }}
262263
role-to-assume: ${{ secrets.RPM_S3_IAM_ARN }}
263264

265+
- name: Install GPG key
266+
run: |
267+
echo -e "${{ secrets.GPG_KEY }}" | gpg --batch --import
268+
269+
- name: Get GPG key ID
270+
id: gpg_id
271+
run: |
272+
GPG_ID=$(gpg --list-keys --with-colons | grep pub | cut -d':' -f5)
273+
echo "GPG_ID=$GPG_ID" >> $GITHUB_OUTPUT
274+
275+
- name: Get GPG email
276+
id: gpg_email
277+
run: |
278+
GPG_EMAIL=$(gpg --list-keys --with-colons | grep uid | head -n1 | cut -d':' -f10 | sed 's/.*<\(.*\)>.*/\1/')
279+
echo "GPG_EMAIL=$GPG_EMAIL" >> $GITHUB_OUTPUT
280+
281+
- name: Get GPG keygrip
282+
id: gpg_keygrip
283+
run: |
284+
KEYGRIP=$(gpg --list-keys --with-keygrip | grep Keygrip | head -n1 | awk '{print $3}')
285+
echo "KEYGRIP=$KEYGRIP" >> $GITHUB_OUTPUT
286+
287+
- name: Sign RPM packages
288+
run: |
289+
# Install required tools
290+
sudo apt-get update
291+
sudo apt-get install -y rpm createrepo-c s3cmd
292+
293+
# Export and import GPG key for RPM
294+
gpg --export -a "${{ steps.gpg_email.outputs.GPG_EMAIL }}" > rpm-gpg-key.asc
295+
sudo rpm --import rpm-gpg-key.asc
296+
297+
# Configure GPG agent for signing
298+
mkdir -p ~/.gnupg
299+
echo "allow-preset-passphrase" > ~/.gnupg/gpg-agent.conf
300+
gpg-connect-agent reloadagent /bye
301+
302+
# Preset passphrase for non-interactive signing
303+
/usr/lib/gnupg/gpg-preset-passphrase -P "${{ secrets.GPG_PASSWORD }}" -c "${{ steps.gpg_keygrip.outputs.KEYGRIP }}"
304+
305+
# Sign all RPM packages
306+
cd s3uploads
307+
find . -name "*.rpm" -exec rpmsign --addsign --key-id "${{ steps.gpg_id.outputs.GPG_ID }}" {} \;
308+
309+
# Create repository metadata with signatures
310+
createrepo_c .
311+
264312
- name: Update packages and publish to private repo
265-
if: github.ref == 'refs/heads/release/8.0'
266313
env:
267314
RPM_S3_BUCKET: ${{ secrets.RPM_S3_BUCKET }}
268315
RPM_S3_REGION: ${{ secrets.RPM_S3_REGION }}
269316
run: |
270-
sudo apt-get update
271-
sudo apt-get install -y createrepo-c s3cmd
272-
createrepo_c s3uploads/
273317
s3cmd sync --acl-public --region=${{ env.RPM_S3_REGION }} s3uploads/* s3://${{ env.RPM_S3_BUCKET }}/rpm/${{ matrix.os.name }}${{ matrix.os.version }}/
274-

0 commit comments

Comments
 (0)