Skip to content

Create provisioning scripts for self-hosted CI runners #84

@ny4i

Description

@ny4i

Problem

Self-hosted CI runners (Linux, Windows, macOS) are manually provisioned. If a runner VM dies or needs re-provisioning, someone has to manually install Qt, Hamlib, CMake, system dependencies, etc. by following docs in ~/.claude/SELF_HOSTED_RUNNERS.md.

This just bit us: the Linux runner was missing libpulse-dev (required by Qt6Multimedia), causing link failures. The fix was manual apt-get install via SSH.

Proposal

Create provisioning scripts for each runner platform:

  • scripts/ci/setup-linux-runner.sh — installs Qt (via aqtinstall), Hamlib, system deps (libpulse-dev, libasound2-dev, libgl1-mesa-dev), linuxdeploy, registers GitHub Actions runner
  • scripts/ci/setup-windows-runner.ps1 — installs Qt, MinGW, Hamlib, NSIS, 7-Zip, Git, Defender exclusions, registers runner
  • scripts/ci/setup-macos-runner.sh — installs Homebrew, Qt, Hamlib, create-dmg, code signing cert import, registers runner

Scripts should be idempotent (safe to re-run) and version-pinned to match build.yml env vars (QT_VERSION, HAMLIB_VERSION).

Acceptance Criteria

  • Linux provisioning script that produces a working runner from a clean Ubuntu 24.04 install
  • Scripts read version numbers from build.yml or a shared config (single source of truth)
  • Idempotent — re-running skips already-installed components
  • Windows and macOS scripts (lower priority, can be follow-up)

Context

  • Current runner docs: ~/.claude/SELF_HOSTED_RUNNERS.md
  • Runner details: ~/.claude/projects/.../memory/ci-runners.md
  • Related fix: commit 563ce39 (added libpulse-dev install step to build.yml as safety net)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions