- Add instance-scoped base data/config directories in defaults - Create gitea-runner@.service.j2 template supporting Docker and binary modes - Refactor service.yml to install systemd template unit instances - Remove direct container lifecycle from docker_mode.yml (delegate to systemd) - Add deregister.yml for runner deregistration on disable/remove - Create lifecycle playbooks: start, stop, enable, disable, status, remove - Update handlers, integration_test, docker_update, binary_update for template units
34 lines
1.2 KiB
Django/Jinja
34 lines
1.2 KiB
Django/Jinja
[Unit]
|
|
Description=Gitea Actions Runner %i ({% if runner_mode == 'docker' %}docker{% else %}binary{% endif %})
|
|
After=network.target{% if runner_mode == 'docker' %} docker.service
|
|
Requires=docker.service{% endif %}
|
|
|
|
[Service]
|
|
Type=simple
|
|
{% if runner_mode == 'docker' %}
|
|
ExecStartPre=-/usr/bin/docker rm -f gitea-runner-%i
|
|
ExecStart=/usr/bin/docker run -d --name gitea-runner-%i \
|
|
--restart=no \
|
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
-v {{ gitea_runner_base_data_dir }}/%i:/data \
|
|
-w /data \
|
|
{{ gitea_runner_docker_image }}:{{ gitea_runner_version | regex_replace('^v', '') }} \
|
|
daemon --config /data/config.yaml
|
|
ExecStop=/usr/bin/docker stop -t 30 gitea-runner-%i
|
|
ExecStopPost=-/usr/bin/docker rm -f gitea-runner-%i
|
|
Restart=on-failure
|
|
RestartSec={{ gitea_runner_service_restart_sec }}
|
|
{% else %}
|
|
ExecStart={{ gitea_runner_binary_path }} daemon --config {{ gitea_runner_base_config_dir }}/%i/config.yaml
|
|
WorkingDirectory={{ gitea_runner_base_data_dir }}/%i
|
|
ExecStop=/bin/kill -TERM $MAINPID
|
|
TimeoutStopSec=30
|
|
Restart=on-failure
|
|
RestartSec={{ gitea_runner_service_restart_sec }}
|
|
User={{ gitea_runner_service_user }}
|
|
Group=docker
|
|
{% endif %}
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|