Skip to content

fix(cicd): upload .tagrc despite upload-artifact@v4 hiding dotfiles#156

Merged
programad merged 1 commit into
developfrom
fix/cicd-upload-tag-artifact
May 8, 2026
Merged

fix(cicd): upload .tagrc despite upload-artifact@v4 hiding dotfiles#156
programad merged 1 commit into
developfrom
fix/cicd-upload-tag-artifact

Conversation

@programad
Copy link
Copy Markdown
Contributor

Summary

Pre-flight check on the v0.5.0-release pipeline caught a silent bug that would have blocked the actual npm publish on merge to main.

What I found

The latest prepare-release run (25532192649, on develop after PR #155) reported all-green but never uploaded the tag-artifact. From its API artifact listing:

$ gh api repos/rocketclimb/rocketicons/actions/runs/25532192649/artifacts
total_count: 2
 - data-helpers
 - deployable-artifacts

Missing: tag-artifact. Yet release.yml does, on every push to main:

- name: Download tag artifact
  uses: actions/download-artifact@v4
  with:
    name: tag-artifact
    ...

That step would have failed immediately, blocking the rest of the release.

Root cause

actions/upload-artifact@v4 silently skips hidden files unless include-hidden-files: true is set. The path is .tagrc (leading dot → hidden). The step exits "success" with only this warning in the log — easy to miss:

##[warning]No files were found with the provided path: .tagrc. No artifacts will be uploaded.

This is a v4 regression vs. earlier versions of the action. Other artifact uploads in the workflow (release-notes.md, *.tgz, data-helpers.tar) are fine because they're not dotfiles.

Fix

One line + comment: include-hidden-files: true on the tag-artifact upload step. Inline comment links to upload-artifact's documented hidden-file behavior so the next dotfile artifact doesn't trip the same wire.

Verified pre-flight against the rest of release.yml

Once tag-artifact lands, every other step works:

  • tag-artifact zip extracts to .tagrc containing v0.5.0-release
  • is-release evaluates truecreate-release job runs
  • deployable-artifacts already uploaded correctly: release-notes.md (10885 bytes, comprehensive v0.5.0 changelog) + rocketicons-0.3.0.tgz (43MB, 331 files)
  • ✓ Tarball's package.json: name=rocketicons, version=0.3.0, engines.node=">=20" — all correct
  • ✓ npm publish via NODE_AUTH_TOKEN=secrets.NPM_TOKEN (rotated 2026-05-08, owned by amorimjj who maintains rocketicons on npm)
  • ✓ Vercel jobs disabled per PR chore(cicd): skip Vercel ignition deploys + ignore release-output.log #155

After merge

PR #151 (develop → main) auto-resyncs, prepare-release runs once more, this time uploading all 3 artifacts (tag-artifact, deployable-artifacts, data-helpers). Then merge to main is the actual publish trigger.

The latest prepare-release run looked successful but never uploaded the
`tag-artifact` artifact. release.yml depends on it
(actions/download-artifact -name tag-artifact, then `cat .tagrc` to read
PENDING_TAG) — without it, the merge-to-main publish flow would fail
immediately on "Download tag artifact".

Root cause: actions/upload-artifact@v4 silently skips hidden files
unless `include-hidden-files: true` is set; `.tagrc` (with the leading
dot) is treated as hidden. The step exits "success" with only a warning
in the log, so we never noticed.

Fix: set `include-hidden-files: true` on the tag-artifact upload step.

Verified on the failed run 25532192649: tag-artifact is missing from
the artifact list while data-helpers and deployable-artifacts (both
contain only non-hidden paths) uploaded fine. Inline comment in the
workflow links to upload-artifact's documented hidden-file behavior so
the next time we add a dotfile artifact, the gotcha is obvious.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@programad programad merged commit 6b03b81 into develop May 8, 2026
1 check passed
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