The become_user pattern with sudo doesn't reliably connect to the user's D-Bus session, causing systemd user timers (docker-prune, runner-healthcheck) to silently fail to enable. This led to stale Docker images accumulating and filling the disk on CI runners. Switch all systemctl --user invocations to use runuser with explicit XDG_RUNTIME_DIR and DBUS_SESSION_BUS_ADDRESS environment variables, which correctly connects to the user's systemd session. Affected tasks: prune timer, healthcheck timer, gitea-runner service, rootless Docker daemon start/enable/restart, runner service restart. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
45 lines
1.7 KiB
YAML
45 lines
1.7 KiB
YAML
---
|
|
- name: Create systemd user service file
|
|
ansible.builtin.template:
|
|
src: gitea-runner-user.service.j2
|
|
dest: "{{ gitea_runner_home }}/.config/systemd/user/gitea-runner.service"
|
|
owner: "{{ gitea_runner_service_user }}"
|
|
group: "{{ gitea_runner_service_user }}"
|
|
mode: "0644"
|
|
register: gitea_runner_service_file
|
|
|
|
- name: Reload systemd user daemon
|
|
ansible.builtin.command: >
|
|
runuser -u {{ gitea_runner_service_user }} --
|
|
env XDG_RUNTIME_DIR=/run/user/{{ gitea_runner_uid }}
|
|
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/{{ gitea_runner_uid | default(0) }}/bus
|
|
systemctl --user daemon-reload
|
|
changed_when: true
|
|
when:
|
|
- gitea_runner_systemd_available.stat.exists
|
|
- gitea_runner_docker_rootless_setup
|
|
- gitea_runner_service_file is changed
|
|
|
|
- name: Restart gitea-runner if service file changed
|
|
ansible.builtin.command: >
|
|
runuser -u {{ gitea_runner_service_user }} --
|
|
env XDG_RUNTIME_DIR=/run/user/{{ gitea_runner_uid }}
|
|
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/{{ gitea_runner_uid | default(0) }}/bus
|
|
systemctl --user restart gitea-runner
|
|
changed_when: true
|
|
when:
|
|
- gitea_runner_systemd_available.stat.exists
|
|
- gitea_runner_docker_rootless_setup
|
|
- gitea_runner_service_file is changed
|
|
|
|
- name: Enable and start gitea-runner user service
|
|
ansible.builtin.command: >
|
|
runuser -u {{ gitea_runner_service_user }} --
|
|
env XDG_RUNTIME_DIR=/run/user/{{ gitea_runner_uid }}
|
|
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/{{ gitea_runner_uid | default(0) }}/bus
|
|
systemctl --user enable --now gitea-runner
|
|
changed_when: true
|
|
when:
|
|
- gitea_runner_systemd_available.stat.exists
|
|
- gitea_runner_docker_rootless_setup
|