ci(.github/workflows): use the runner's system Python 3.11 (peco-driver)#539
Merged
Conversation
eric-wang-1990
requested review from
gopalldb,
lidavidm,
msrathore-db and
vikrantpuppala
as code owners
June 21, 2026 07:31
actions/setup-python can't provision Python on the self-hosted peco-driver runner (no GitHub hosted tool-cache; can't reach the version manifest). The runner is provisioned with system python3.11 + Node; replace setup-python in all four bot workflows with a venv built from the runner's python3.11 (kept on PATH so later pip / python -m steps resolve to 3.11). Node (for the @anthropic-ai/claude-code CLI the SDK shells out to) comes from the runner. Co-authored-by: Isaac
eric-wang-1990
force-pushed
the
ci/bot-python-self-hosted
branch
from
June 21, 2026 07:36
75999cb to
41db3d5
Compare
eric-wang-1990
added a commit
that referenced
this pull request
Jun 21, 2026
…fix (#540) ## Problem On the self-hosted peco-driver runner, `npm install -g @anthropic-ai/claude-code` fails: > npm error EACCES: permission denied, mkdir '/usr/local/lib/node_modules' The default global npm dir is root-owned; the runner runs as a non-root user (`azureuser`). (This is the step after the now-fixed Python setup + SSO'd engine clone.) ## Fix All four bot workflows: install the CLI to a per-job prefix the runner user owns and put it on PATH: ```bash export NPM_CONFIG_PREFIX="$RUNNER_TEMP/npm-global" mkdir -p "$NPM_CONFIG_PREFIX/bin" npm install -g @anthropic-ai/claude-code echo "$RUNNER_TEMP/npm-global/bin" >> "$GITHUB_PATH" ``` So the `claude` CLI (which the Python `claude-agent-sdk` shells out to) is on PATH for the run step. Self-contained — no runner changes, survives runner reimage. Same per-job philosophy as the Python venv (#539). This pull request and its description were written by Isaac.
eric-wang-1990
added a commit
that referenced
this pull request
Jun 22, 2026
…iver (#541) ## Problem The engineer-bot Fix workflow fails at **Setup .NET** on the self-hosted peco-driver runner: > mkdir: cannot create directory '/usr/share/dotnet': Permission denied > ##[error]Failed to install dotnet, exit code: 1 `actions/setup-dotnet` installs to root-owned `/usr/share/dotnet`, but the runner runs as non-root (`azureuser`). ## Fix Set `DOTNET_INSTALL_DIR: ${{ runner.temp }}/dotnet` on the Setup .NET step in `engineer-bot.yaml` + `engineer-bot-followup.yml`, so it installs to a user-writable dir (setup-dotnet then adds it to PATH + sets DOTNET_ROOT for later steps). Self-contained; works regardless of which peco-driver runner the job lands on. Same non-root-runner class we already fixed for the Python venv (#539) and the npm prefix (#540). (`reyden-rest-nightly.yml` happens to land on runners with .NET pre-installed, so it no-ops setup-dotnet — but the bots can't rely on that.) This pull request and its description were written by Isaac.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
After moving the bot workflows to the self-hosted peco-driver runner (#538),
actions/setup-pythonfails there:Self-hosted runners have no GitHub tool-cache (that's why setup-python "just worked" on
ubuntu-latest), and this one can't reach the version manifest.Fix
The runner is provisioned with system python3.11 + Node. All four bot workflows drop
actions/setup-pythonand instead build a venv from the runner'spython3.11, put on$GITHUB_PATHso laterpip/python -m …steps resolve to 3.11 unchanged. Node (for@anthropic-ai/claude-code, which the Python SDK shells out to) comes from the runner.Followup workflows keep their
if: skip != 'true'guard. YAML validated; title checked against adbc's checker.Requires (runner provisioning, one-time)
python3.11+python3.11-venvand Node/npm installed on the peco-driver runner and on the runner service's PATH.This pull request and its description were written by Isaac.