CI / validate (pull_request) Successful in 1m37s
CI / molecule-tests (2) (pull_request) Successful in 5m49s
CI / molecule-tests (4) (pull_request) Failing after 6m16s
CI / molecule-tests (3) (pull_request) Failing after 6m18s
CI / molecule-tests (1) (pull_request) Failing after 7m6s
CI / auto-merge (pull_request) Skipped
The healthcheck previously used a single 75% threshold with an
until=1h filter. On busy runners with constant CI jobs, nothing
is older than 1h, so the prune barely frees anything — disk stays
at ~76% and the CI disk gate (80%) skips all molecule tests.
Two-tier approach:
- 75-79%: gentle prune (until=1h) — same as before
- 80%+: full prune (no until filter) — removes ALL stopped
containers and unused images regardless of age, plus
builder cache and networks
This ensures that when disk pressure is critical, the healthcheck
actually reclaims space instead of skipping everything that's
recently created.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
117 lines
5.6 KiB
YAML
117 lines
5.6 KiB
YAML
---
|
|
- name: Verify
|
|
hosts: all
|
|
become: true
|
|
vars:
|
|
gitea_runner_name: "template-test-runner"
|
|
pre_tasks:
|
|
- name: Load role defaults
|
|
ansible.builtin.include_vars:
|
|
dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/defaults"
|
|
tasks:
|
|
- name: Check systemd user service exists
|
|
ansible.builtin.stat:
|
|
path: "{{ gitea_runner_home }}/.config/systemd/user/gitea-runner.service"
|
|
register: service_stat
|
|
|
|
- name: Assert user service exists
|
|
ansible.builtin.assert:
|
|
that:
|
|
- service_stat.stat.exists
|
|
fail_msg: "Systemd user service is missing"
|
|
|
|
- name: Read rendered user service template
|
|
ansible.builtin.slurp:
|
|
src: "{{ gitea_runner_home }}/.config/systemd/user/gitea-runner.service"
|
|
register: service_template
|
|
|
|
- name: Assert user service template contains expected directives
|
|
ansible.builtin.assert:
|
|
that:
|
|
- "'Type=simple' in service_template.content | b64decode"
|
|
- "'ExecStart={{ gitea_runner_binary_path }}' in service_template.content | b64decode"
|
|
- "'Restart=always' in service_template.content | b64decode"
|
|
- "'Requires=docker.service' in service_template.content | b64decode"
|
|
- "'PartOf=docker.service' in service_template.content | b64decode"
|
|
- "'StartLimitBurst=10' in service_template.content | b64decode"
|
|
- "'DOCKER_HOST=unix:///run/user' in service_template.content | b64decode"
|
|
- "'XDG_RUNTIME_DIR=/run/user' in service_template.content | b64decode"
|
|
fail_msg: "User service template is missing expected directives"
|
|
|
|
- name: Read rendered prune service template
|
|
ansible.builtin.slurp:
|
|
src: "{{ gitea_runner_home }}/.config/systemd/user/docker-prune.service"
|
|
register: prune_service
|
|
|
|
- name: Assert prune service contains expected directives
|
|
ansible.builtin.assert:
|
|
that:
|
|
- "'Type=oneshot' in prune_service.content | b64decode"
|
|
- "'docker rm -f' in prune_service.content | b64decode"
|
|
- "'GITEA-ACTIONS-TASK' in prune_service.content | b64decode"
|
|
- "'docker system prune -af' in prune_service.content | b64decode"
|
|
- "'docker network prune' in prune_service.content | b64decode"
|
|
- "'docker builder prune' in prune_service.content | b64decode"
|
|
fail_msg: "Prune service template is missing expected directives"
|
|
|
|
- name: Read rendered prune timer template
|
|
ansible.builtin.slurp:
|
|
src: "{{ gitea_runner_home }}/.config/systemd/user/docker-prune.timer"
|
|
register: prune_timer
|
|
|
|
- name: Assert prune timer contains expected directives
|
|
ansible.builtin.assert:
|
|
that:
|
|
- "'OnCalendar={{ gitea_runner_prune_schedule }}' in prune_timer.content | b64decode"
|
|
- "'Persistent=true' in prune_timer.content | b64decode"
|
|
fail_msg: "Prune timer template is missing expected directives"
|
|
|
|
- name: Read rendered healthcheck service template
|
|
ansible.builtin.slurp:
|
|
src: "{{ gitea_runner_home }}/.config/systemd/user/runner-healthcheck.service"
|
|
register: healthcheck_service
|
|
|
|
- name: Assert healthcheck service contains expected directives
|
|
ansible.builtin.assert:
|
|
that:
|
|
- "'Type=oneshot' in healthcheck_service.content | b64decode"
|
|
- "'ExecStart={{ gitea_runner_healthcheck_script_path }}' in healthcheck_service.content | b64decode"
|
|
- "'DOCKER_HOST=unix:///run/user/' in healthcheck_service.content | b64decode"
|
|
- "'XDG_RUNTIME_DIR=/run/user/' in healthcheck_service.content | b64decode"
|
|
fail_msg: "Healthcheck service template is missing expected directives"
|
|
|
|
- name: Read rendered healthcheck timer template
|
|
ansible.builtin.slurp:
|
|
src: "{{ gitea_runner_home }}/.config/systemd/user/runner-healthcheck.timer"
|
|
register: healthcheck_timer
|
|
|
|
- name: Assert healthcheck timer contains expected directives
|
|
ansible.builtin.assert:
|
|
that:
|
|
- "'OnBootSec={{ gitea_runner_healthcheck_boot_delay }}' in healthcheck_timer.content | b64decode"
|
|
- "'OnUnitActiveSec={{ gitea_runner_healthcheck_interval }}' in healthcheck_timer.content | b64decode"
|
|
- "'Persistent=true' in healthcheck_timer.content | b64decode"
|
|
fail_msg: "Healthcheck timer template is missing expected directives"
|
|
|
|
- name: Read rendered healthcheck script
|
|
ansible.builtin.slurp:
|
|
src: "{{ gitea_runner_healthcheck_script_path }}"
|
|
register: healthcheck_script
|
|
|
|
- name: Assert healthcheck script contains expected content
|
|
ansible.builtin.assert:
|
|
that:
|
|
- "'docker info' in healthcheck_script.content | b64decode"
|
|
- "'timeout 10 docker info' in healthcheck_script.content | b64decode"
|
|
- "'systemctl --user restart docker.service' in healthcheck_script.content | b64decode"
|
|
- "'systemctl --user restart gitea-runner.service' in healthcheck_script.content | b64decode"
|
|
- "'docker rm -f' in healthcheck_script.content | b64decode"
|
|
- "'GITEA-ACTIONS-TASK' in healthcheck_script.content | b64decode"
|
|
- "'docker system prune -af' in healthcheck_script.content | b64decode"
|
|
- "'docker network prune' in healthcheck_script.content | b64decode"
|
|
- "'status=removing' in healthcheck_script.content | b64decode"
|
|
- "'status=stopping' in healthcheck_script.content | b64decode"
|
|
- "gitea_runner_healthcheck_disk_threshold | string in healthcheck_script.content | b64decode"
|
|
- "gitea_runner_healthcheck_disk_critical | string in healthcheck_script.content | b64decode"
|
|
fail_msg: "Healthcheck script template is missing expected content"
|