Skip to content

PF-3329: migrate to pnpm 10 + Node 24 + GitHub Packages#13

Closed
genisd wants to merge 10 commits into
mainfrom
PF-3329
Closed

PF-3329: migrate to pnpm 10 + Node 24 + GitHub Packages#13
genisd wants to merge 10 commits into
mainfrom
PF-3329

Conversation

@genisd
Copy link
Copy Markdown
Member

@genisd genisd commented May 19, 2026

Summary

Migrates @gynzy/ember-cli-ifa to:

  • pnpm@10.33.4 (was yarn)
  • Node 24 (was 10.* || >= 12)
  • GitHub Packages registry (was npm.gynzy.net)
  • util.workflowJavascriptPackage() from lib-jsonnet (was handwritten publish-pr.yml / publish-tag.yml + ci/npm.sh + ci/publish.sh)

This PR also bootstraps this repo to lib-jsonnet for the first time (no prior .github.jsonnet / .github/jsonnet/).

Dependency on lib-jsonnet#257

This PR pulls lib-jsonnet from PR adopted-ember-addons#257 (packageManager='pnpm' support in workflowJavascriptPackage). After lib-jsonnet#257 merges to prod, a follow-up should run sh .github/jsonnet/pull-upstream-and-rebuild.sh (without PR_NUMBER) to repin to prod.

Discovery results

Item Value
Default branch main
Repo visibility PUBLICisPublicFork=true (runs on ubuntu-latest)
Prior package manager yarn (yarn.lock, .yarnrc)
Version bump 0.10.00.11.0 (minor +1, patch reset)
lint command pnpm run lint (npm-run-all lint:* → eslint)
test command pnpm run test (npm-run-all lint:* test:* → eslint + ember test + ember try:each)
build command pnpm run build (ember build --environment=production)
Services needed none (no docker services)
Tag-publish trigger yes (covered by workflowJavascriptPackage's tag handling)

Generated pipelines

workflowJavascriptPackage produces three workflows:

  • misc.ymlverifyJsonnet (jsonnet ↔ YAML consistency check)
  • pr.ymlpnpm-publish-preview + test job
  • publish-prod.ymlpnpm-publish on push to main

Verified the generated YAML contains:

  • no npm.gynzy.net
  • no setGynzyNpmToken
  • node:24 everywhere
  • pnpm (no yarn)

Removed legacy

  • .github/workflows/publish-pr.yml
  • .github/workflows/publish-tag.yml

ci/npm.sh and ci/publish.sh are now dead code (only referenced by the removed workflows) but are left in place to keep this PR minimal — they can be cleaned up in a follow-up.

Preserved pipelines

None beyond the helper output — there were no non-helper pipelines (pulumi etc.) in this repo.

Open Questions

  1. pnpm run build fails locally under pnpm. ember build --environment=production throws To use these addons, your app needs ember-auto-import >= 2: ember-cli-fastboot-testing. This is a known ember + pnpm hoisting issue (yarn's hoisted layout hid it; pnpm's isolated layout exposes it). Mitigated in this PR by passing buildSteps=[] to workflowJavascriptPackage — the build step is for the dummy test app, and the addon's .npmignore excludes /dist so publish doesn't need it. Test job also omits build. If you want CI to run ember build, add node-linker=hoisted to .npmrc (or upgrade ember-auto-import) in a follow-up.

  2. pnpm run test requires a browser (Chrome) — the node:24 container does not have one. The existing CI (legacy publish-pr.yml/publish-tag.yml) never ran tests; the previous test runner was Travis (.travis.yml), which is no longer wired up. The new test job will fail on test:ember / test:ember-compatibility until a Chrome-equipped image (or xvfb + chromium install step) is wired up. Lint will still pass via the same pnpm run test.

  3. .travis.yml is dead (no Travis integration). Not removed in this PR to keep the change minimal.

Test plan

  • misc workflow (verifyJsonnet) passes — proves jsonnet generated YAML is consistent
  • pnpm-publish-preview job publishes a PR-tagged version to GitHub Packages
  • Decide on the open questions before merging (test job Chrome, build hoisting)
  • After lib-jsonnet#257 lands in prod, follow up with sh .github/jsonnet/pull-upstream-and-rebuild.sh to repin

genisd added 10 commits May 19, 2026 15:22
Reverts the lint-only narrowing from 82fb18f. Switches the test job
image to europe-docker.pkg.dev/unicorn-985/private-images/docker-images_node24-with-libnss:v1
which provides libnss for headless Chrome.
- Add ember-auto-import + webpack 5 as direct devDeps so ember-auto-import's
  leader election finds the host package (resolves NullLeader error from
  ember-cli-fastboot-testing).
- Patch json-stable-stringify@1.3.0 to tolerate null cmp, fixing the
  Node-24-strict sort failure in ember-cli-fastboot's FastBootConfig.toJSONString.

Result: ember test runs end-to-end, 8/9 tests pass. The remaining fastboot
integration test still needs investigation.
ember-cli-fastboot-testing depends on fastboot@4 to render, while the
addon itself is built against ember-cli-fastboot@2.2.3. v2's fastboot
service expects _fastbootInfo to be injected by FastBootInfo.register();
v4 removed that injection. Re-add it so the legacy service keeps working.

All 9 ember tests now pass.
@genisd genisd closed this May 21, 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