feat(gh-action): add GPG signing support with SSH/GPG mutual exclusivity#1390
feat(gh-action): add GPG signing support with SSH/GPG mutual exclusivity#1390
Conversation
Add support for GPG signing in GitHub Action with the following changes: - Add gpg_private_signing_key and gpg_passphrase inputs to action.yml - Implement GPG signing configuration in action.sh - Add validation to prevent both SSH and GPG keys from being set - Install gnupg package in Dockerfile for GPG support - Document new GPG signing inputs and usage examples - Add test case for mutual exclusivity validation NOTICE: This release adds the ability to sign semantic-release commits and tags with a GPG key instead of an SSH key pair. The two configurations are not compatible with each other so you can either have GPG configured or SSH configured, NOT BOTH! The GitHub Action will fail at runtime if you attempt to provide both sets of options
e7e18b7 to
726cf74
Compare
|
@copilot, looks like the pipeline is failing the tests can you take a look and create a solution? |
The test_mutual_exclusivity helper function was being detected as a test by the test runner's pattern matching (grep "^test_"), causing it to be executed with insufficient parameters and failing with "Test name not provided". Renamed to verify_mutual_exclusivity to exclude it from automatic test discovery while maintaining clear naming convention for helper functions. Co-authored-by: codejedi365 <17354856+codejedi365@users.noreply.github.com>
Fixed in commit 444ca49. The issue was that the helper function |
|
This PR is stale because it has not been confirmed or considered ready for merge by the maintainers but has been open 60 days with no recent activity. It will be closed in 10 days, if no further activity occurs. Please make sure to add the proper testing, docs, and descriptions of changes before your PR can be merged. Thank you for your contributions. |
Purpose
Extend GitHub Action to support GPG signing for commits and tags as an alternative to SSH signing. Enforce mutual exclusivity between signing methods.
Rationale
Users need GPG signing capability for organizational compliance or personal preference. GPG and SSH signing configurations conflict at the git level—enabling both creates ambiguous signing behavior. Solution enforces exclusive use of one method with clear error messaging.
Implementation approach:
gpg --with-colonsformat to avoid fragile output parsingHow did you test?
Validation logic:
test_mutual_exclusivitytoverify_mutual_exclusivity)GPG implementation:
Edge cases covered:
How to Verify
Test mutual exclusivity:
Test GPG signing:
Verify signed commit:
git verify-commit HEADandgit verify-tag v1.0.0PR Completion Checklist
Reviewed & followed the Contributor Guidelines
Changes Implemented & Validation pipeline succeeds
Commits follow the Conventional Commits standard
and are separated into the proper commit type and scope (recommended order: test, build, feat/fix, docs)
Appropriate Unit tests added/updated
Appropriate End-to-End tests added/updated
Appropriate Documentation added/updated and syntax validated for sphinx build (see Contributor Guidelines)
Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.