# act_runner configuration for Local CI/CD System # Documentation: https://gitea.com/gitea/act_runner log: # Log level: trace, debug, info, warn, error, fatal level: info # Log format: text or json format: text runner: # Path to the runner state file (stores runner registration info) file: .runner # Maximum number of concurrent jobs this runner will accept. # Each job spawns one ephemeral VM. Budget: 64GB RAM / ~8GB per VM = 8 max. # Set conservatively to 4 until you benchmark actual memory usage. capacity: 4 # Environment variables injected into every job's environment. envs: # Path to the template VM - update after provisioning the template GITEA_CI_TEMPLATE_PATH: "F:\\CI\\Templates\\WinBuild2025\\WinBuild2025.vmx" # Base directory where ephemeral clone VMs are created GITEA_CI_CLONE_BASE_DIR: "F:\\CI\\BuildVMs" # Base directory for collected build artifacts GITEA_CI_ARTIFACT_DIR: "F:\\CI\\Artifacts" # Windows Credential Manager target name for guest VM credentials GITEA_CI_GUEST_CRED_TARGET: "BuildVMGuest" # Snapshot to clone from. Default BaseClean — set to BaseClean_ when # refreshing the template. Keep the previous value live for 1 week before deleting. # GITEA_CI_SNAPSHOT_NAME: "BaseClean" # Path to the Linux (Ubuntu 24.04) template VM GITEA_CI_LINUX_TEMPLATE_PATH: "F:\\CI\\Templates\\LinuxBuild2404\\LinuxBuild2404.vmx" # SSH private key for Linux guest authentication GITEA_CI_SSH_KEY_PATH: "F:\\CI\\keys\\ci_linux" # Root directory of the local-ci-system repository on this host (scripts\ subdir) GITEA_CI_SCRIPT_ROOT: "N:\\Code\\Workspace\\Local-CI-CD-System\\scripts" # Force UTF-8 stdio for the Python orchestrator (Phase A4) so non-ASCII # characters in build logs survive the act_runner -> Gitea round-trip. PYTHONIOENCODING: "utf-8" # Absolute path to the system Python interpreter used to bootstrap the # production venv (F:\CI\python\venv). act_runner runs as SYSTEM with a # sanitized PATH where neither `python` nor `py.exe` resolve, so workflows # rely on this single source of truth. Update only when upgrading Python. CI_PYTHON_LAUNCHER: "C:\\Program Files\\Python314\\python.exe" # Optional: load additional env vars from a file (one KEY=VALUE per line) # env_file: "F:\\CI\\runner.env" # Maximum duration for a single job before it is killed. # Set this higher than your longest expected build. timeout: 2h # Labels this runner advertises to Gitea. # Workflows using "runs-on: windows-build" will be routed to this runner. labels: - "windows-build:host" - "dotnet:host" - "msbuild:host" - "linux-build:host" # Uncomment to ignore specific errors # insecure: false cache: # Enable the built-in cache server (used by actions/cache steps) enabled: true # Cache storage directory on the host dir: "F:\\CI\\Cache" # External cache server - leave empty to use built-in host: "" port: 0 container: # IMPORTANT: must be false on this runner. # All builds run in VMware VMs, not Docker containers. enabled: false # These settings are ignored when container.enabled is false, # but kept for documentation purposes. # network: "" # privileged: false # options: "" # workdir_parent: "" host: # Working directory on the host for act_runner's own workspace files. # Each job gets a subdirectory here for checkout and step scripts. workdir_parent: "F:\\CI\\RunnerWork" artifact: # Gitea artifact proxy settings # Artifacts uploaded by steps (actions/upload-artifact) are stored via Gitea. # The runner itself handles local artifact paths via Invoke-CIJob.ps1. enabled: true dir: "F:\\CI\\Artifacts" # Retention in days for artifacts stored by act_runner itself # (distinct from the Gitea server's own artifact retention setting) retention: days: 7