Skip to content

Modernize Node and pnpm setup across GitHub Actions workflows #211

Description

@tbinna

Problem

The GitHub Actions workflows still use pnpm/action-setup@v6 followed by actions/setup-node@v5. Current CI logs contain warnings owned by those actions rather than by nx-forge:

  • actions/setup-node@v5 emits Node DEP0040 for punycode and DEP0169 for url.parse().
  • pnpm/action-setup@v6 emits a false-positive pnpm v10 installation-layout warning when its bootstrap pnpm self-updates to the version pinned by the repository.
  • On Windows, pnpm/action-setup@v6 emits DEP0190 because its self-installer uses shell-based child-process execution.
  • pnpm/action-setup now directs pnpm 11+ users to its successor, pnpm/setup.

PR #210 fixes the cache-write race introduced by its parallel CI jobs, but the repository-wide action setup should be modernized separately and consistently.

Scope

  • Update every workflow that installs pnpm and Node, including PR CI, main CI, documentation, deployment, and release workflows.
  • Prefer the supported pnpm/setup@v2 path, or document a justified supported alternative.
  • Preserve the repository pnpm version declared in package.json.
  • Preserve Node LTS coverage and frozen-lockfile enforcement.
  • Define cache ownership so parallel jobs do not try to save the same cache key.
  • Do not suppress deprecations or pin pnpm to an action-internal bootstrap version merely to hide warnings.

Acceptance criteria

  • All GitHub Actions workflows use one consistent, supported Node and pnpm setup.
  • The pinned pnpm version and Node LTS behavior are preserved.
  • CI installs fail for a missing or stale lockfile.
  • Concurrent jobs do not contend for the same cache write.
  • The action-owned pnpm layout, DEP0190, DEP0040, and DEP0169 warnings no longer appear.
  • PR CI passes on Ubuntu and Windows.
  • Main, documentation, deployment, and release workflows retain their current behavior.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions