Visitar URL original
perf(pnpm-install): use the runner's local disk for temp files on Windows by B4nan · Pull Request #41 · apify/actions · GitHub
Skip to content

perf(pnpm-install): use the runner's local disk for temp files on Windows - #41

Merged
B4nan merged 1 commit into
mainfrom
perf/windows-fast-temp-dir
Sep 29, 2026
Merged

B4nan merged 1 commit into
mainfrom
perf/windows-fast-temp-dir

Conversation

@B4nan

@B4nan B4nan commented Sep 10, 2026

Copy link
Copy Markdown
Member

On Windows runners, pnpm-install now sets TMP and TEMP to RUNNER_TEMP for the rest of the job. The default temp dir is on a network-backed disk that is 4-6x slower at small-file writes than the runner's local SSD, so unpacking a project or a node_modules tree there costs that much per file. apify/actor-templates#907 measured it: the same step took the Windows legs from ~20m to ~11m. Nothing changes on Linux or macOS.

Every JS repo calls this action first, so any Windows leg added later gets this for free. actor-templates can drop its own copy of the step once it bumps to a release with this change.

The README also says to gate playwright install --with-deps on Linux. On Windows the flag installs the Media Foundation feature, which takes about three minutes and only adds video codecs.

…dows

The default Windows temp dir sits on a network-backed disk that is 4-6x
slower at small-file writes than the local SSD behind RUNNER_TEMP.
Pointing TMP/TEMP there for the rest of the job removes that cost for
anything that unpacks many files into the temp dir. Measured on
apify/actor-templates#907, where it took the Windows legs from ~20m to
~11m. No-op on Linux and macOS.

Also documents gating playwright's --with-deps on Linux: on Windows the
flag installs the Media Foundation feature, ~3 minutes per job.
@B4nan B4nan added the adhoc Ad-hoc unplanned task added during the sprint. label Sep 10, 2026
@B4nan B4nan added the t-tooling Issues with this label are in the ownership of the tooling team. label Sep 10, 2026
B4nan added a commit to apify/workflows that referenced this pull request Sep 13, 2026
…n Windows (#323)

On Windows runners, `python_unit_tests` now sets `TMP` and `TEMP` to
`RUNNER_TEMP` for the rest of the job. The default temp dir is on a
network-backed disk that is 4-6x slower at small-file writes than the
runner's local SSD. pytest's `tmp_path` and uv's scratch files both
honor `TEMP`, so they land on the fast disk. Measured in
apify/actor-templates#907. Nothing changes on Linux or macOS.

This workflow runs the Windows legs of crawlee-python, apify-sdk-python,
apify-client-python and apify-shared-python. apify/actions#41 is the
same change for the pnpm side.
@B4nan
B4nan merged commit 9fdb96b into main Sep 29, 2026
3 checks passed
@B4nan
B4nan deleted the perf/windows-fast-temp-dir branch September 29, 2026 09:13
l2ysho pushed a commit that referenced this pull request Sep 30, 2026
🤖 I have created a release *beep* *boop*
---


## [1.6.2](v1.6.1...v1.6.2)
(2026-09-30)


### Bug Fixes

* **pnpm-install:** bump pnpm/action-setup to v6.1.0 for pnpm 12 support
([#48](#48))
([427f4ea](427f4ea))


### Performance Improvements

* **pnpm-install:** use the runner's local disk for temp files on
Windows ([#41](#41))
([9fdb96b](9fdb96b))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
l2ysho added a commit to apify/apify-cli that referenced this pull request Oct 8, 2026
> [!NOTE]
> TL;DR: `devEngines.packageManager` still pinned pnpm 11.11.0 while
`packageManager` says 12.6.0. This aligns it to 12.6.0 and bumps
`apify/actions/pnpm-install` to v1.6.2 so Windows CI can run pnpm 12.

- #1414 and #1447 (Renovate) bumped `packageManager` and `volta.pnpm`
(now 12.6.0) but not `devEngines.packageManager` or the lockfile's
`packageManagerDependencies`. Every pnpm command warned about the
mismatch.
- `pnpm/action-setup` reads `devEngines`, so CI has run pnpm 11.11.0 all
along. With pnpm 12, all Windows jobs failed: `pnpm-install` before
v1.6.2 pins `pnpm/action-setup@v6.0.8`, which cannot run pnpm 12 there.
- `apify/actions` v1.6.2 (apify/actions#48) bumps it to
`pnpm/action-setup@v6.1.0`. All 17 `pnpm-install` usages move to v1.6.2.
That release also includes apify/actions#41 (Windows temp files on the
runner's local disk).
- Lockfile diff only swaps pnpm's own packages. No app dependencies
change.

Follow-up: Renovate should bump all three pnpm pins together.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

adhoc Ad-hoc unplanned task added during the sprint. t-tooling Issues with this label are in the ownership of the tooling team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant