Skip to content

Release workflow npm auth — npm.pkg.github.com 401 on @gocodealone/workflow-ui fetch #13

@intel352

Description

@intel352

Observation

.github/workflows/release.yml Build-and-Release / Build-admin-UI step fails on npm ci against the private GitHub Packages npm registry. Captured on the v1.0.1 release run (post-cloud-SDK pin sweep — see https://github.com/GoCodeAlone/workflow/blob/main/docs/plans/2026-05-16-post-cloud-sdk-plugin-sweep.md):

Build and Release / Build admin UI:
  Cloning into '/tmp/workflow-ui-build'... ok
  npm error code E401
  npm error 401 Unauthorized - GET https://npm.pkg.github.com/download/@gocodealone/workflow-ui/0.2.0/...
    — authentication token not provided
  cp: cannot stat '/tmp/workflow-ui-build/ui/dist': No such file or directory
  ##[error]Process completed with exit code 1.

.npmrc or NODE_AUTH_TOKEN env wiring is missing for the Release workflow's UI build step. The Test workflow may not exercise this path so the gap survived earlier merges.

Impact

  • v1.0.1 tag pushed on origin (9080b40); module-consumer path (go get github.com/GoCodeAlone/workflow-plugin-admin@v1.0.1) resolves via Go proxy reading the git tag directly.
  • GitHub release / operator-facing wfctl plugin install resolves nothing — no release exists past v1.0.0.
  • Operator-facing gap only — explicitly designated as advisory (NOT a CI gate) in the sweep design.

Remediation options

  1. Add NODE_AUTH_TOKEN env wiring to the Build-admin-UI step:

    - name: Build admin UI
      env:
        NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      run: |
        echo "//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN}" > /tmp/workflow-ui-build/ui/.npmrc
        cd /tmp/workflow-ui-build/ui && npm ci && npx vite build
        ...

    (GITHUB_TOKEN typically has packages:read for npm.pkg.github.com.)

  2. Switch @gocodealone/workflow-ui to public-npm visibility if it doesn't need to stay private.

  3. Vendor the workflow-ui dist into this repo so the Release step has no external npm fetch.

Followup release

After the fix, cut v1.0.2 to re-trigger GoReleaser against the merged main HEAD (the pin-bump commit). The bump itself ships in v1.0.1's tag; v1.0.2 would be a chore release that only republishes assets.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions