feat(runner): add glab CLI, pin all tool versions, add freshness workflow#1045
feat(runner): add glab CLI, pin all tool versions, add freshness workflow#1045jeremyeder wants to merge 1 commit intomainfrom
Conversation
…flow - Add glab (GitLab CLI) binary to the runner image - Pin all runner tools with explicit versions via Dockerfile ARGs: gh 2.74.0, glab 1.52.0, uv 0.7.8, pre-commit 4.2.0, gemini-cli 0.1.17 - Switch gh from dnf repo install to versioned binary download - Add weekly CI workflow (runner-tool-versions.yml) that checks all components for updates and opens a PR when newer versions are available - Covers: base image digest, gh, glab, uv, pre-commit, gemini-cli Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
There was an ask through feedback to add glab to the runner. So I've done that and added a job to keep the runner updated. |
|
I think this is an ok approach. AIPCC uses Renovate to perform these bumping operations instead. That would be a standard and secure way to do dependency management in contrast to a one-off custom GH Action. But I don't see a problem with this particular implementation today. |
…hness workflow (#1091) <!-- acp:session_id=pr-fixer-1091-v2 source=ai-managed last_action=2026-04-02T22:48:54Z retry_count=0 --> ## Summary Combines [PR #845](#845) and [PR #1045](#1045) into a single PR, with improvements from code review. ### Runner / Dockerfile - **Upgrades base image** from UBI 9 / Python 3.11 to **UBI 10 / Python 3.12** - **Adds glab** (GitLab CLI) via pinned binary download - **Pins all runner tools** with explicit `ARG` versions: gh, glab, uv, pre-commit, gemini-cli - **Merges gh + glab installs** into a single `RUN` layer (single ARCH computation) - Bumps Node.js 20 → 22, updates dnf usage for RHEL 10 ### Dependencies - Bumps claude-agent-sdk, anthropic, mcp, pydantic, ag-ui-protocol, pytest, ruff, mcp-atlassian, workspace-mcp - Regenerated uv.lock against current main ### Frontend - Adds **ClaudeAgentOptions** form (Zod schema + React form) behind `advanced-agent-options` Unleash flag - Integrates agent options into the create-session dialog ### Freshness workflow - New **weekly CI workflow** (`runner-tool-versions.yml`) that checks all runner components for updates - Fetches versions **concurrently** (background curl processes) - Applies updates and opens a single PR when any component is outdated - Simplified from original: 5 fetch steps → 1, 6 update steps → 1, removed `eval` usage ### Version table | Component | Before | After | |-----------|--------|-------| | Base image | UBI 9 / python-311 | UBI 10 / ubi | | Python | 3.11 | 3.12 | | Node.js | 20 | 22 | | gh (GitHub CLI) | Unpinned (dnf) | `ARG GH_VERSION=2.74.0` | | glab (GitLab CLI) | Not installed | `ARG GLAB_VERSION=1.52.0` | | uv | Unpinned | `ARG UV_VERSION=0.7.8` | | pre-commit | Unpinned | `ARG PRE_COMMIT_VERSION=4.2.0` | | gemini-cli | Unpinned | `ARG GEMINI_CLI_VERSION=0.1.17` | ## Test plan - [ ] Runner container image builds successfully with UBI 10 - [ ] `python3 --version` shows 3.12, `node --version` shows v22 - [ ] `gh version`, `glab version`, `uv --version`, `gemini --version` all work inside the container - [ ] CI unit tests pass (Python 3.12) - [ ] Workflow YAML passes actionlint / GitHub Actions validation - [ ] Frontend builds with agent options schema changes - [ ] Agent options form renders when `advanced-agent-options` flag is enabled - [ ] Form is hidden when flag is off (default) Supersedes #845 and #1045. --- 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Ambient Code Bot <bot@ambient-code.local> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Summary
ARGs, replacing unpinned installsrunner-tool-versions.yml) that checks every runner component for updates and opens a PR when newer versions are availableWhat changed
Dockerfile
ARG GH_VERSION=2.74.0(binary download)ARG GLAB_VERSION=1.52.0(binary download)pip install uv(unpinned)pip install uv==0.7.8pip install pre-commit(unpinned)pip install pre-commit==4.2.0npm install -g @google/gemini-cli(unpinned)npm install -g @google/gemini-cli@0.1.17Freshness workflow
auto/update-runner-imagewith a version table when any component is outdateddaily-sdk-update.ymlTest plan
gh version,glab version,uv --version,gemini --versionall work inside the containeractionlint/ GitHub Actions validation🤖 Generated with Claude Code