2026-06-20 11:06:27 +07:00
|
|
|
---
|
2026-06-23 00:26:00 +00:00
|
|
|
# Installs + registers + services a single act_runner instance.
|
2026-06-20 11:06:27 +07:00
|
|
|
# Inputs: project_spec (dict), idx (int), project_token (str).
|
|
|
|
|
- name: Set per-runner facts
|
|
|
|
|
ansible.builtin.set_fact:
|
|
|
|
|
runner_name: "{{ inventory_hostname }}-{{ project_spec.project }}-{{ runner_env }}-{{ idx }}"
|
2026-06-23 00:26:00 +00:00
|
|
|
runner_dir: "{{ runner_home }}/act-runner-{{ project_spec.project }}-{{ idx }}"
|
|
|
|
|
svc_name: "gitea-runner-{{ project_spec.project }}-{{ idx }}"
|
2026-06-20 11:06:27 +07:00
|
|
|
|
|
|
|
|
- name: "Create runner dir {{ runner_dir }}"
|
|
|
|
|
ansible.builtin.file:
|
|
|
|
|
path: "{{ runner_dir }}"
|
|
|
|
|
state: directory
|
|
|
|
|
owner: "{{ runner_user }}"
|
|
|
|
|
group: "{{ runner_user }}"
|
|
|
|
|
mode: "0755"
|
|
|
|
|
|
2026-06-23 00:26:00 +00:00
|
|
|
- name: Download act_runner binary (sha256 verified)
|
2026-06-20 11:06:27 +07:00
|
|
|
ansible.builtin.get_url:
|
2026-06-23 00:26:00 +00:00
|
|
|
url: "{{ act_runner_download_url }}"
|
|
|
|
|
dest: "{{ runner_dir }}/gitea-runner"
|
|
|
|
|
checksum: "sha256:{{ act_runner_sha256 }}"
|
2026-06-20 11:06:27 +07:00
|
|
|
owner: "{{ runner_user }}"
|
|
|
|
|
group: "{{ runner_user }}"
|
2026-06-23 00:26:00 +00:00
|
|
|
mode: "0755"
|
2026-06-20 11:06:27 +07:00
|
|
|
|
|
|
|
|
- name: "Register runner {{ runner_name }}"
|
|
|
|
|
ansible.builtin.command:
|
|
|
|
|
cmd: >-
|
2026-06-23 00:26:00 +00:00
|
|
|
./gitea-runner register
|
|
|
|
|
--no-interactive
|
|
|
|
|
--instance {{ gitea_instance }}
|
2026-06-20 11:06:27 +07:00
|
|
|
--token {{ project_token }}
|
|
|
|
|
--name {{ runner_name }}
|
2026-06-23 00:26:00 +00:00
|
|
|
--labels {{ project_spec.labels }}
|
2026-06-20 11:06:27 +07:00
|
|
|
chdir: "{{ runner_dir }}"
|
|
|
|
|
creates: "{{ runner_dir }}/.runner"
|
|
|
|
|
become_user: "{{ runner_user }}"
|
|
|
|
|
|
2026-06-23 00:26:00 +00:00
|
|
|
- name: "Write systemd unit for {{ svc_name }}"
|
|
|
|
|
ansible.builtin.copy:
|
|
|
|
|
dest: "/etc/systemd/system/{{ svc_name }}.service"
|
|
|
|
|
owner: root
|
|
|
|
|
group: root
|
|
|
|
|
mode: "0644"
|
|
|
|
|
content: |
|
|
|
|
|
[Unit]
|
|
|
|
|
Description=Gitea Actions Runner ({{ runner_name }})
|
|
|
|
|
After=network.target
|
2026-06-20 11:06:27 +07:00
|
|
|
|
2026-06-23 00:26:00 +00:00
|
|
|
[Service]
|
|
|
|
|
Type=simple
|
|
|
|
|
User={{ runner_user }}
|
|
|
|
|
WorkingDirectory={{ runner_dir }}
|
|
|
|
|
ExecStart={{ runner_dir }}/gitea-runner daemon
|
|
|
|
|
Restart=always
|
|
|
|
|
RestartSec=5s
|
|
|
|
|
Environment=HOME={{ runner_home }}
|
2026-06-20 11:06:27 +07:00
|
|
|
|
2026-06-23 00:26:00 +00:00
|
|
|
[Install]
|
|
|
|
|
WantedBy=multi-user.target
|
|
|
|
|
|
|
|
|
|
- name: "Enable + start {{ svc_name }}"
|
|
|
|
|
ansible.builtin.systemd:
|
|
|
|
|
name: "{{ svc_name }}"
|
|
|
|
|
enabled: true
|
|
|
|
|
state: started
|
|
|
|
|
daemon_reload: true
|