Feature/dry quadlet rpms - #14
Conversation
34e8781 to
48c05b8
Compare
|
Post-merge follow-up: sed -i 's/@dev-rpm-quadlets/@<NEW_TAG>/g' .github/workflows/gpg-sign-artifacts.yml |
…lify downstream signing Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
…easer Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
…rtifacts Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
…cs for OpenCHAMI org signing conventions Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
a8ca17a to
16d0c8c
Compare
|
@alexlovelltroy this is ready and tested. The linter is complaining because I used the last commit to swap the target tags for some actions to the "would be" next release tag for this repo (trying to save you from reviewing two separate PRs). |
Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
26ade1d to
6647bc5
Compare
|
| uses: OpenCHAMI/github-actions/actions/gpg-verify-trust-chain@v3.5 | ||
| with: | ||
| master-public-key: ${{ secrets.MASTER_PUBLIC_ASC }} | ||
| require-master: false |
There was a problem hiding this comment.
I would have thought this should be true. Is there a reason we would want to verify the trust chain without access to the master public key?
There was a problem hiding this comment.
Hmm, I'll have to check my notes to see why I did that last week... should be able to invert that flag without any issues, but I'll double check with some testing.
There was a problem hiding this comment.
Verified key archive from one of yesterday's CI jobs manually:
root@9055e9f166f0:/tmp/tmp.xFTcAYjGTq# cat script.sh
export GNUPGHOME=$(mktemp -d)
gpg --import *.asc
for f in *.asc; do
echo "=== "
echo "$f"
gpg --import-options show-only --import --list-options show-sig-subpackets --with-sig-list "$f" 2>/dev/null
doneroot@9055e9f166f0:/tmp/tmp.xFTcAYjGTq# sh script.sh
gpg: keybox '/tmp/tmp.LNa6mKi3T8/pubring.kbx' created
gpg: key 5CAE47494A229A3D: 1 signature not checked due to a missing key
gpg: /tmp/tmp.LNa6mKi3T8/trustdb.gpg: trustdb created
gpg: key 5CAE47494A229A3D: public key "OpenCHAMImetadata-service Release (ephemeral key for 35merge build-30845929148-35a113f5b51a) <release@packages.openchami.org>" imported
gpg: key 0AA4F9403DF8F038: public key "OpenCHAMI Software Signing Key <admin@openchami.org>" imported
gpg: key B4EEEA33E8DA87C7: public key "OpenCHAMI/metadata-service RPM Signing Key <OpenCHAMI-metadata-service@packages.openchami.org>" imported
gpg: Total number processed: 3
gpg: imported: 3
gpg: no ultimately trusted keys found
===
ephemeral.pub.asc
pub rsa4096 2026-08-03 [SC] [expires: 2026-08-04]
7B544FC70ED58E0A8D4E58A65CAE47494A229A3D
uid OpenCHAMImetadata-service Release (ephemeral key for 35merge build-30845929148-35a113f5b51a) <release@packages.openchami.org>
sig 3 5CAE47494A229A3D 2026-08-03 [self-signature]
sig B4EEEA33E8DA87C7 2026-08-03 OpenCHAMI/metadata-service RPM Signing Key <OpenCHAMI-metadata-service@packages.openchami.org>
===
master.pub.asc
pub ed25519 2026-03-30 [C] [expires: 2031-03-29]
FE586537D05A111C9C00E88B0AA4F9403DF8F038
uid OpenCHAMI Software Signing Key <admin@openchami.org>
sig 3 N 0AA4F9403DF8F038 2026-03-30 [self-signature]
sub ed25519 2026-03-30 [S] [expires: 2031-03-29]
sig N 0AA4F9403DF8F038 2026-03-30 [self-signature]
sub rsa4096 2026-03-30 [S] [expires: 2027-03-30]
sig N 0AA4F9403DF8F038 2026-03-30 [self-signature]
sub rsa4096 2026-03-30 [S] [expires: 2027-03-30]
sig N 0AA4F9403DF8F038 2026-03-30 [self-signature]
sub rsa4096 2026-03-30 [S] [expires: 2027-03-30]
sig N 0AA4F9403DF8F038 2026-03-30 [self-signature]
sub rsa4096 2026-03-31 [S] [expires: 2027-03-31]
sig N 0AA4F9403DF8F038 2026-03-31 [self-signature]
===
repo-cert.pub.asc
pub ed25519 2026-07-29 [C] [expires: 2027-07-29]
2110BF8E84019844E0C0E0CFB4EEEA33E8DA87C7
uid OpenCHAMI/metadata-service RPM Signing Key <OpenCHAMI-metadata-service@packages.openchami.org>
sig 3 N B4EEEA33E8DA87C7 2026-07-29 [self-signature]
sig 0AA4F9403DF8F038 2026-07-29 OpenCHAMI Software Signing Key <admin@openchami.org>Long winded way of saying "chain is working properly". I'll go verify the toggle now and have it default to true.
| @@ -0,0 +1,120 @@ | |||
| name: 'Verify gpg trust chain' | |||
There was a problem hiding this comment.
We need the copyright info at the top
| inputs: | ||
| master-public-key: | ||
| description: >- | ||
| ASCII-armored master public key content (e.g. from a secret). If empty and master-public-key-file is also empty, the chain check is skipped with a warning (exit 0) unless require-master is 'true'. |
There was a problem hiding this comment.
I'm confused about this. Could it pass without actually verifying anything?
There was a problem hiding this comment.
Technically, yes, especially with naive configuration. The original idea was essentially to provide an "opt-out" mechanism to simplify future development efforts in downstream repos (e.g., boot-service) should the need arise. A temporary off switch.
With 85b10a5, I changed this to default to true (defaults to enforcing / require master key).
Let me know if you want me to remove the option entirely (i.e., always enforcing, no off switch).
Ah, this is the low hanging fruit. To be clear, it's definitely doable, but it will require nested JSON | YAML shenanigans. I'll update and opt for yaml since it's a little be easier to read/write on the user side.
Yes, but only through the
Immediate UpdatesCurrent Stable Services
Current Stable MetaCurrent Stable CLI tools
Next Stable Services
Future UpdatesAdditional Services
Note Basically, anything we could distribute in RPM format is listed here. The actual RPM sign + validate + publish workflows are entirely agnostic. Build assumes a makefile recipe, though that isn't hard to change. The goreleaser workflow is just an abstraction to simplify work in all the service repositories which are primarily written in go and published also as containers (...which is most of them). |
Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
43788dc should solve this. About to test using the It currently only supports expected files, but it's rather easy to extend on to include things like expected dependencies + versions, provides, etc. |
3f47649 to
43788dc
Compare
Pull Request Template
Thank you for your contribution! Please ensure the following before submitting:
Checklist
make test(or equivalent) locally and all tests passgit commit -s) with my real name and email<filename>.licensesidecarLICENSES/directoryDescription
I'll update this description as time goes on and this is less of a "draft"... anyways:
This PR is motivated primarily by OpenCHAMI/release#64 which requires decomposing the current release repository RPM. More specifically, we'll be moving towards one podman quadlet RPM build per service repository.
Most of the repositories therefore need a similar setup for CI/CD and it seemed best to abstract out the routines instead of pasting the requisite workflows into N different repositories.
...and that's how we got here...
Type of Change
For more info, see Contributing Guidelines.