Refactor Gitea runner configurations: remove obsolete runners, add container name resolution, and implement stale container cleanup

This commit is contained in:
2026-07-07 20:50:48 +02:00
parent c1c2d1c83b
commit 86decddcd1
3 changed files with 92 additions and 31 deletions
+3 -30
View File
@@ -119,24 +119,9 @@ windows_gitea_runner_podman_runners:
config_file: "D:\\GiteaRunner\\cicd-base\\config.yaml"
data_dir: "D:\\GiteaRunner\\cicd-base\\data"
log_dir: "D:\\Logs\\GiteaRunner\\cicd-base"
- profile: infra-tools
name: "gitea-runner-infra-tools"
container_name: "gitea-runner-infra-tools"
image: "local/gitea-runner:infra-tools"
dockerfile_src: "Dockerfile.infra-tools"
labels: "linux:host,infra-tools"
config_file: "D:\\GiteaRunner\\infra-tools\\config.yaml"
data_dir: "D:\\GiteaRunner\\infra-tools\\data"
log_dir: "D:\\Logs\\GiteaRunner\\infra-tools"
- profile: security-scan
name: "gitea-runner-security-scan"
container_name: "gitea-runner-security-scan"
image: "local/gitea-runner:security-scan"
dockerfile_src: "Dockerfile.security-scan"
labels: "linux:host,security-scan"
config_file: "D:\\GiteaRunner\\security-scan\\config.yaml"
data_dir: "D:\\GiteaRunner\\security-scan\\data"
log_dir: "D:\\Logs\\GiteaRunner\\security-scan"
run_args:
- "--privileged"
enable_nested_build: true
- profile: cpp-build
name: "gitea-runner-cpp-build"
container_name: "gitea-runner-cpp-build"
@@ -155,18 +140,6 @@ windows_gitea_runner_podman_runners:
config_file: "D:\\GiteaRunner\\go-build\\config.yaml"
data_dir: "D:\\GiteaRunner\\go-build\\data"
log_dir: "D:\\Logs\\GiteaRunner\\go-build"
- profile: image-build
name: "gitea-runner-image-build"
container_name: "gitea-runner-image-build"
image: "local/gitea-runner:image-build"
dockerfile_src: "Dockerfile.image-build"
labels: "linux:host,image-build"
config_file: "D:\\GiteaRunner\\image-build\\config.yaml"
data_dir: "D:\\GiteaRunner\\image-build\\data"
log_dir: "D:\\Logs\\GiteaRunner\\image-build"
run_args:
- "--privileged"
enable_nested_build: true
windows_gitea_runner_windows_instance_url: "https://code.alexpires.me"
windows_gitea_runner_windows_registration_token: "{{ lookup('env', 'GITEA_RUNNER_REGISTRATION_TOKEN') }}"
@@ -180,3 +180,90 @@
{{ windows_gitea_runner_podman_runner.name | default(windows_gitea_runner_podman_runner.profile) }}
tags:
- roles::windows_gitea_runner_podman::linux
- name: Collect running Gitea runner container names
ansible.windows.win_shell: |
$ErrorActionPreference = "Stop"
$podman = "{{ windows_gitea_runner_podman_install_dir }}\podman.exe"
$raw = & $podman ps -a --filter label=io.a13labs.gitea_runner.config_hash --format json 2>$null
if ($LASTEXITCODE -ne 0 -or [string]::IsNullOrWhiteSpace($raw)) {
Write-Output "[]"
exit 0
}
$containers = ($raw | ConvertFrom-Json)
$names = @()
foreach ($c in $containers) {
$names += $c.Names
}
($names | ConvertTo-Json -Compress)
become: true
become_method: ansible.builtin.runas
become_user: "{{ windows_gitea_runner_podman_service_user }}"
register: __windows_gitea_runner_podman_existing_containers
changed_when: false
tags:
- roles::windows_gitea_runner_podman::linux
- name: Resolve defined container names with defaults
ansible.builtin.set_fact:
__windows_gitea_runner_podman_defined_containers: >-
{{
__windows_gitea_runner_podman_defined_containers | default([]) + [
__windows_gitea_runner_podman_item.container_name
| default(
'gitea-runner-' ~ (
__windows_gitea_runner_podman_item.profile
| default(__windows_gitea_runner_podman_item.name | default('runner'))
)
)
]
}}
loop: "{{ windows_gitea_runner_podman_runners }}"
loop_control:
loop_var: __windows_gitea_runner_podman_item
tags:
- roles::windows_gitea_runner_podman::linux
- name: Identify stale Gitea runner containers
ansible.builtin.set_fact:
__windows_gitea_runner_podman_stale_containers: >-
{{
(__windows_gitea_runner_podman_existing_containers.stdout | from_json)
| list
| reject('in', __windows_gitea_runner_podman_defined_containers)
| list
}}
tags:
- roles::windows_gitea_runner_podman::linux
- name: Remove stale Gitea runner containers
ansible.windows.win_shell: |
$ErrorActionPreference = "Stop"
$podman = "{{ windows_gitea_runner_podman_install_dir }}\podman.exe"
$name = "{{ item }}"
& $podman rm -f $name 2>$null
if ($LASTEXITCODE -eq 0) {
Write-Output "__REMOVED__:$name"
}
become: true
become_method: ansible.builtin.runas
become_user: "{{ windows_gitea_runner_podman_service_user }}"
loop: "{{ __windows_gitea_runner_podman_stale_containers }}"
loop_control:
label: "{{ item }}"
register: __windows_gitea_runner_podman_stale_removal
changed_when: true
failed_when: false
when: __windows_gitea_runner_podman_stale_containers | length > 0
tags:
- roles::windows_gitea_runner_podman::linux
- name: Report stale container cleanup
ansible.builtin.debug:
msg: >-
Stale containers removed: {{ __windows_gitea_runner_podman_stale_containers | join(', ') }}
when: __windows_gitea_runner_podman_stale_containers | length > 0
tags:
- roles::windows_gitea_runner_podman::linux
@@ -361,7 +361,8 @@
-e "GITEA_RUNNER_REGISTRATION_TOKEN={{ windows_gitea_runner_podman_registration_token }}" `
-e "GITEA_RUNNER_NAME={{ __windows_gitea_runner_podman_name }}" `
-e "GITEA_RUNNER_LABELS={{ __windows_gitea_runner_podman_labels }}" `
{% if __windows_gitea_runner_podman_enable_nested_build %}
-e "GITEA_RUNNER_USER=runner" `
{% if __windows_gitea_runner_podman_enable_nested_build %}
-v "{{ __windows_gitea_runner_podman_storage_dir }}:/var/lib/containers" `
-e "BUILDAH_ISOLATION=chroot" `
-e "STORAGE_DRIVER=vfs" `