Feature/dry quadlet rpms - #14
Draft
seantronsen wants to merge 19 commits into
Draft
Conversation
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>
…y certification chain 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>
13 tasks
Signed-off-by: Sean Tronsen <sean.tronsen@gmail.com>
seantronsen
force-pushed
the
feature/dry-quadlet-rpms
branch
from
July 30, 2026 17:01
54feb16 to
81bf04e
Compare
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>
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.
--
Additional requirements/fixes/todos before merging:
Merge blockers
1.
gpg-verify-trust-chain— replace runtime curl with vendored path.curl -fsSL --retry 3 -o "$script" "https://raw.githubusercontent.com/OpenCHAMI/gpg-signing-manager/main/scripts/verify-chain.sh"→script="$(cd "$GITHUB_ACTION_PATH/../.." && pwd)/scripts/verify-chain.sh". Fetches from mutablemain, defeats action SHA-pinning, runs in the job holding the repo cert secret key. Also delete the two comment lines claiming it's already pinned/vendored — they're false.2.
gpg-configure-release-keys— delete repo cert secret key after use.After the
sign-ephemeralstep, add a step runninggpg --batch --yes --delete-secret-keys "$REPO_CERT_FPR". Certifying key is only needed for--quick-sign-key, but currently survives into every downstream step and the exportedGNUPGHOME.3.
gpg-configure-release-keys— shred GNUPGHOME as a final action step (not an EXIT trap).Add trailing step:
find "$GNUPGHOME" -type f -exec shred -u {} + 2>/dev/null; rm -rf "$GNUPGHOME".setup'smktemp -dGNUPGHOME has no cleanup and persists on the runner. Do NOT usetrap … EXITinsetup— separate shell, would shred beforesign-rpmruns.4.
gpg-sign-rpm— move inline${{ inputs.* }}intoenv:._gpg_name ${{ inputs['gpg-fingerprint'] }}, theIFS=',' read … "${{ inputs['rpm-paths'] }}"reads, and[ "${{ inputs.resign }}" = "true" ]. Map each to anenv:var, reference as$VAR. Reusable action interpolates caller inputs directly intorun:— latent script injection in a secret-bearing job.Should-fix (same PR)
5.
gpg-configure-release-keys— read master key fromenv:.echo "${{ inputs.master-public-key-asc }}" > "master.pub.asc"→printf '%s\n' "$MASTER_PUBLIC_ASC" > master.pub.ascwithenv: MASTER_PUBLIC_ASC: ${{ inputs.master-public-key-asc }}. Multi-line secret-typed content spliced into shell.6. WF2 (
Release signed artifacts) — pin the user-facing verifier.In
body:, thecurl -LO …/main/…/verify-chain.shinstruction → pin to the release tag or ship the script as a release asset. Hands unpinnedcurl … | bash-style instructions to consumers.Docs / cleanup
GNUPGHOMEintentionally contains only the ephemeral key post-teardown.MASTER_PUBLIC_ASC/MASTER_FPRare public; note they can be repo variables, not secrets (masking public keys is noisy) — or leave as secrets but say why.%no-protectioningenerateexplaining the tradeoff (ephemeral, 1-day, isolated keyring).curlpiped-or-written-then-executed and for--export-secretto confirm nothing else exfiltrates or fetches unpinned.