@@ -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