--- - name: Verify hosts: all become: true vars: 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 system prune' in prune_service.content | b64decode" - "'docker volume 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" - "'systemctl --user restart docker.service' in healthcheck_script.content | b64decode" - "'systemctl --user restart gitea-runner.service' in healthcheck_script.content | b64decode" - "'docker system prune' in healthcheck_script.content | b64decode" - "gitea_runner_healthcheck_disk_threshold | string in healthcheck_script.content | b64decode" fail_msg: "Healthcheck script template is missing expected content"