Summary
On self-hosted GitHub Actions runners (Actions Runner Controller / Kubernetes), every run of setup-vp produces two warnings from the Vite+ installer:
warn: Cannot write to /home/runner/.bashrc (permission denied), skipping.
warn: Cannot write to /home/runner/.profile (permission denied), skipping.
Install still succeeds (✓ VITE+ successfully installed!) and later workflow steps work because setup-vp adds ~/.vite-plus/bin via GitHub Actions addPath() after install. The warnings are cosmetic but appear on every job, which makes CI logs look like something failed when it did not.
Environment
- Runner: ARC scale-set mode on k3s (org self-hosted,
linux/arm64)
- Runner image:
ghcr.io/actions/actions-runner:2.335.1 (official image, ephemeral pod per job)
- Action:
voidzero-dev/setup-vp (local composite action wrapping the install script)
- Install command (from action):
curl -fsSL … https://viteplus.dev/install.sh | bash
- CI env:
CI=true is set by GitHub Actions
Reproduction
- Run any workflow on a self-hosted runner using the official
actions-runner container image.
- Use
setup-vp (directly or via a composite action that calls it).
- Observe the install step logs.
Root cause
install.sh always runs configure_shell_path(), which tries to append a source line to existing shell rc files (~/.bashrc, ~/.profile, etc.). On the official actions-runner image those files exist but are not writable by the runner user (uid 1001). The installer correctly warns and skips (see voidzero-dev/vite-plus#1040).
In GitHub Actions, persisting PATH via shell rc files is unnecessary anyway — setup-vp already handles this in install-viteplus.ts:
function ensureVitePlusBinInPath(): void {
const binDir = join(getVitePlusHome(), "bin")
if (!process.env.PATH?.includes(binDir)) {
addPath(binDir)
}
}
Expected vs actual
|
Expected |
Actual |
| Vite+ install |
Success |
Success ✓ |
vp on PATH in later steps |
Yes |
Yes ✓ |
| CI log noise |
None (or documented as benign) |
Two warnings every job |
Suggested improvements
Any of these would help CI users; happy to PR if you prefer a particular direction:
-
Document in the README that these warnings are expected and harmless on GitHub-hosted/self-hosted CI when using setup-vp, since PATH is set via $GITHUB_PATH.
-
Skip shell rc configuration in CI — either:
- Pass an env var to
install.sh before install (e.g. VP_SKIP_SHELL_CONFIG=1) if/when vite-plus supports it, or
- Coordinate an upstream change in
vite-plus to skip configure_shell_path() when CI=true (node manager already auto-enables in CI; shell rc patching does not add value there).
-
Filter known-benign warnings in the action output when install exits 0 and addPath ran successfully, so consumers are not misled by yellow log lines.
Workaround today
Ignore the warnings — they do not affect functionality when using setup-vp.
Reported from a k3s ARC deployment (actions-runner ephemeral pods on ARM64). Same behavior should reproduce on any self-hosted runner using the official runner container image, not specific to Kubernetes.
Summary
On self-hosted GitHub Actions runners (Actions Runner Controller / Kubernetes), every run of
setup-vpproduces two warnings from the Vite+ installer:Install still succeeds (
✓ VITE+ successfully installed!) and later workflow steps work becausesetup-vpadds~/.vite-plus/binvia GitHub ActionsaddPath()after install. The warnings are cosmetic but appear on every job, which makes CI logs look like something failed when it did not.Environment
linux/arm64)ghcr.io/actions/actions-runner:2.335.1(official image, ephemeral pod per job)voidzero-dev/setup-vp(local composite action wrapping the install script)curl -fsSL … https://viteplus.dev/install.sh | bashCI=trueis set by GitHub ActionsReproduction
actions-runnercontainer image.setup-vp(directly or via a composite action that calls it).Root cause
install.shalways runsconfigure_shell_path(), which tries to append a source line to existing shell rc files (~/.bashrc,~/.profile, etc.). On the officialactions-runnerimage those files exist but are not writable by therunneruser (uid 1001). The installer correctly warns and skips (see voidzero-dev/vite-plus#1040).In GitHub Actions, persisting PATH via shell rc files is unnecessary anyway —
setup-vpalready handles this ininstall-viteplus.ts:Expected vs actual
vpon PATH in later stepsSuggested improvements
Any of these would help CI users; happy to PR if you prefer a particular direction:
Document in the README that these warnings are expected and harmless on GitHub-hosted/self-hosted CI when using
setup-vp, since PATH is set via$GITHUB_PATH.Skip shell rc configuration in CI — either:
install.shbefore install (e.g.VP_SKIP_SHELL_CONFIG=1) if/when vite-plus supports it, orvite-plusto skipconfigure_shell_path()whenCI=true(node manager already auto-enables in CI; shell rc patching does not add value there).Filter known-benign warnings in the action output when install exits 0 and
addPathran successfully, so consumers are not misled by yellow log lines.Workaround today
Ignore the warnings — they do not affect functionality when using
setup-vp.Reported from a k3s ARC deployment (
actions-runnerephemeral pods on ARM64). Same behavior should reproduce on any self-hosted runner using the official runner container image, not specific to Kubernetes.