Refactor Gitea runner configurations: remove obsolete runners, add container name resolution, and implement stale container cleanup
This commit is contained in:
@@ -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" `
|
||||
|
||||
Reference in New Issue
Block a user