Skip to content

CLDSRV-1048: Build the scality-kms image on epic CI - #6338

Closed
anurag4DSB wants to merge 1 commit into
epic/S3C-10971-bnaas-d1from
improvement/CLDSRV-1048-kms-image-build
Closed

anurag4DSB wants to merge 1 commit into
epic/S3C-10971-bnaas-d1from
improvement/CLDSRV-1048-kms-image-build

Conversation

@anurag4DSB

@anurag4DSB anurag4DSB commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Intent: why does this change exist?

François does not want releases made from an epic branch (his review on cloudserverclient#31), so we do not release from the D1 epic. Instead, a D1 release is only a git tag plus a retag of the CI images of the tagged commit, and this job is one more workaround on top of that: scality-kms is built only by an official CloudServer release, but Federation pins it at the CloudServer version. It costs an extra CI job, a package grant and a removal at the final merge; it is row 3.3a of the Tickets tab.

System impact: what's affected, including downstream?

A new build-kms job in tests.yaml runs after build on epic pushes and on manual runs, and pushes ghcr.io/scality/scality-kms:<sha>-federation to the private scality-kms package. The push needs a one-time grant: the Write role for scality/cloudserver in the scality-kms package settings ("Manage Actions access"). The grant and the job both go away at the final merge (Remove before merge tab).

Preserved behavior: what explicitly stays the same?

Nothing changes on development or ticket branches, and the image never goes to the public cloudserver package, because it holds the proprietary SafeNet library.

Intended change: what's different after this PR?

The job clones scality/scality-kms with a read-only GitHub App token, builds its Dockerfile on top of cloudserver:<sha>-federation, and labels the image with both commits. The checkout keeps no token, and the build log stays quiet because this repo is public, but a failed build still prints the failing step and a few Dockerfile lines. The other option was a dispatch to a new workflow in scality-kms; it keeps the build private but needs a change in a repo we do not own, so I went with this job first.

Verification: how do we know this worked, or how would we know if it didn't?

actionlint reports nothing in the new job. The first manual run failed while building the scality-kms Dockerfile, at the same step where the official scality-kms release for CloudServer 9.5.0 failed on 2026-10-16 (the ioctl module does not build on Node 24), so the build is broken upstream and the push and the grant are still untested. Once scality-kms builds again, one manual run must push scality-kms:<sha>-federation; a denied: permission_denied: write_package error then means the grant is missing.

Federation pins scality-kms at the CloudServer version. Today only an
official CloudServer release builds that image, through the scality-kms
release workflow. BNaaS D1 epic tags skip the official release and
retag CI images, so each epic head needs its own scality-kms image.

A build-kms job runs after build, on epic pushes and on manual runs. It
checks out the private scality/scality-kms with the GitHub App token,
builds its Dockerfile on top of cloudserver:<sha>-federation, and pushes
ghcr.io/scality/scality-kms:<sha>-federation. A label records the
scality-kms commit it was built from. The image holds the proprietary
SafeNet library, so it goes only to the private scality-kms package,
never to the public cloudserver one. For the same reason the build log
stays quiet and the checkout keeps no token on disk.

The job exists only on the epic, and the final merge removes it.
@codecov

codecov Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 87.82%. Comparing base (6c5f817) to head (5a20fc9).
✅ All tests successful. No failed tests found.

Additional details and impacted files

Impacted file tree graph
see 1 file with indirect coverage changes

@@                     Coverage Diff                     @@
##           epic/S3C-10971-bnaas-d1    #6338      +/-   ##
===========================================================
- Coverage                    87.87%   87.82%   -0.05%     
===========================================================
  Files                          206      206              
  Lines                        14193    14193              
===========================================================
- Hits                         12472    12465       -7     
- Misses                        1721     1728       +7     
Flag Coverage Δ
checksums-disabled-tests 35.66% <ø> (ø)
file-ft-tests 71.30% <ø> (+0.02%) ⬆️
file-ft-tests-null-compat 71.78% <ø> (-0.10%) ⬇️
kmip-ft-tests 28.23% <ø> (ø)
mongo-v0-ft-tests 72.56% <ø> (+0.01%) ⬆️
mongo-v1-ft-tests 72.54% <ø> (-0.05%) ⬇️
multiple-backend 36.45% <ø> (ø)
s3c-ft-tests-v0 66.36% <ø> (ø)
s3c-ft-tests-v0-null-compat 66.43% <ø> (ø)
s3c-ft-tests-v1 66.35% <ø> (ø)
sur-tests 37.91% <ø> (+0.89%) ⬆️
sur-tests-inflights 39.89% <ø> (-0.03%) ⬇️
unit 75.41% <ø> (ø)
utapi-v2-tests 35.61% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@anurag4DSB

Copy link
Copy Markdown
Contributor Author

Replaced by cloudserver#6339: the epic copy of the release workflow builds scality-kms at release time, so the epic CI does not need to build it on every push.

@anurag4DSB anurag4DSB closed this Oct 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant