68 lines
2.8 KiB
YAML
68 lines
2.8 KiB
YAML
---
|
|
# Periodic timer that pre-pulls CI runner images into the local Docker cache.
|
|
# Prevents thundering-herd registry timeouts when all runners start jobs
|
|
# simultaneously with empty/stale caches. Runs every 6 hours (configurable).
|
|
# The prune timer removes dangling images but NOT tagged ones, so pre-pulled
|
|
# images persist between runs.
|
|
|
|
- name: Create docker-pull-images user service file
|
|
ansible.builtin.template:
|
|
src: docker-pull-images.service.j2
|
|
dest: "{{ gitea_runner_home }}/.config/systemd/user/docker-pull-images.service"
|
|
owner: "{{ gitea_runner_service_user }}"
|
|
group: "{{ gitea_runner_service_user }}"
|
|
mode: "0644"
|
|
register: gitea_runner_pre_cache_service
|
|
|
|
- name: Create docker-pull-images user timer file
|
|
ansible.builtin.template:
|
|
src: docker-pull-images.timer.j2
|
|
dest: "{{ gitea_runner_home }}/.config/systemd/user/docker-pull-images.timer"
|
|
owner: "{{ gitea_runner_service_user }}"
|
|
group: "{{ gitea_runner_service_user }}"
|
|
mode: "0644"
|
|
register: gitea_runner_pre_cache_timer
|
|
|
|
- name: Reload systemd user daemon for pre-cache timer
|
|
ansible.builtin.command: systemctl --user daemon-reload
|
|
become: true
|
|
become_user: "{{ gitea_runner_service_user }}"
|
|
environment:
|
|
XDG_RUNTIME_DIR: "/run/user/{{ gitea_runner_uid }}"
|
|
DBUS_SESSION_BUS_ADDRESS: "unix:path=/run/user/{{ gitea_runner_uid | default(0) }}/bus"
|
|
changed_when: true
|
|
when:
|
|
- gitea_runner_systemd_available.stat.exists
|
|
- gitea_runner_docker_rootless_setup
|
|
- gitea_runner_pre_cache_service is changed or gitea_runner_pre_cache_timer is changed
|
|
- gitea_runner_pre_cache_schedule | length > 0
|
|
- gitea_runner_pre_cache_images | length > 0
|
|
|
|
- name: Enable and start docker-pull-images user timer
|
|
ansible.builtin.command: systemctl --user enable --now docker-pull-images.timer
|
|
become: true
|
|
become_user: "{{ gitea_runner_service_user }}"
|
|
environment:
|
|
XDG_RUNTIME_DIR: "/run/user/{{ gitea_runner_uid }}"
|
|
DBUS_SESSION_BUS_ADDRESS: "unix:path=/run/user/{{ gitea_runner_uid | default(0) }}/bus"
|
|
changed_when: true
|
|
when:
|
|
- gitea_runner_systemd_available.stat.exists
|
|
- gitea_runner_docker_rootless_setup
|
|
- gitea_runner_pre_cache_schedule | length > 0
|
|
- gitea_runner_pre_cache_images | length > 0
|
|
|
|
- name: Disable and stop docker-pull-images timer (no images or schedule)
|
|
ansible.builtin.command: systemctl --user disable --now docker-pull-images.timer
|
|
become: true
|
|
become_user: "{{ gitea_runner_service_user }}"
|
|
environment:
|
|
XDG_RUNTIME_DIR: "/run/user/{{ gitea_runner_uid }}"
|
|
DBUS_SESSION_BUS_ADDRESS: "unix:path=/run/user/{{ gitea_runner_uid | default(0) }}/bus"
|
|
changed_when: true
|
|
failed_when: false
|
|
when:
|
|
- gitea_runner_systemd_available.stat.exists
|
|
- gitea_runner_docker_rootless_setup
|
|
- gitea_runner_pre_cache_schedule | length == 0 or gitea_runner_pre_cache_images | length == 0
|