Skip to content

fix(ci): namespace digest artifacts to avoid name collisions#6853

Open
gclm wants to merge 1 commit intolabring:mainfrom
gclm:fix/ci-digest-artifact-namespacing
Open

fix(ci): namespace digest artifacts to avoid name collisions#6853
gclm wants to merge 1 commit intolabring:mainfrom
gclm:fix/ci-digest-artifact-namespacing

Conversation

@gclm
Copy link
Copy Markdown

@gclm gclm commented Mar 31, 2026

## Summary

This PR fixes a GitHub Actions artifact name collision in the release workflows.

Previously, multiple reusable workflows uploaded digest artifacts using the same naming pattern:

- `digests-${module}-${arch}`

That becomes a problem when different workflow families resolve to the same module name in a single workflow run. For example:

- frontend: `providers/devbox` -> `devbox`
- service: `devbox`

Both can end up trying to upload an artifact named `digests-devbox-amd64`, which causes `actions/upload-artifact@v4` to fail with:

> 409 Conflict: an artifact with this name already exists on the workflow run

## Root Cause

The frontend workflow uses `basename(inputs.module)`, while service workflows use the module name directly.  
As a result, frontend and service builds can produce identical digest artifact names even though they belong to different workflow families.

## Changes

Namespace digest artifact names by workflow family and update the corresponding download patterns:

- frontend
  - upload: `frontend-digests-${{ env.MODULE_NAME }}-${{ matrix.arch }}`
  - download: `frontend-digests-${{ env.MODULE_NAME }}-*`

- service
  - upload: `service-digests-${{ inputs.module }}-${{ matrix.arch }}`
  - download: `service-digests-${{ inputs.module }}-*`

- service-rs
  - upload: `service-rs-digests-${{ inputs.module }}-${{ matrix.arch }}`
  - download: `service-rs-digests-${{ inputs.module }}-*`

## Why This Fix

This keeps the change narrowly scoped to CI artifact naming and avoids touching any build, push, or manifest logic.

Benefits:

- prevents cross-workflow artifact collisions in the same run
- keeps upload and download behavior aligned
- minimizes regression risk

## Verification

- confirmed the failing case was caused by artifact creation conflict, not image build failure
- verified upload names and download patterns are updated in all 3 related workflows
- parsed the modified workflow YAML files successfully
- performed a repository-wide check for related `digests-*` usage in the affected workflow family

## Notes

This change only affects internal CI artifact names. It does not change image tags, image repositories, or release output.

@gclm gclm requested a review from a team as a code owner March 31, 2026 09:35
@cla-assistant
Copy link
Copy Markdown

cla-assistant bot commented Mar 31, 2026

CLA assistant check
All committers have signed the CLA.

@cla-assistant
Copy link
Copy Markdown

cla-assistant bot commented Mar 31, 2026

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant