From 55e7de19a44bbc9f1fc02fc4cb354faae85ae8ab Mon Sep 17 00:00:00 2001 From: Lukas Greve Date: Fri, 24 Oct 2025 21:05:17 +0200 Subject: [PATCH] automate the runner setup --- runner_setup.yml | 75 ++++++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 31 deletions(-) diff --git a/runner_setup.yml b/runner_setup.yml index 870887a..312ad2f 100644 --- a/runner_setup.yml +++ b/runner_setup.yml @@ -1,38 +1,42 @@ --- -- name: Initial one-time setup +- name: Initial one-time setup for the Act Runner, Gitea's Action runner hosts: gitrunner become: yes - vars: - runner_name: "act_runner" + vars: gitea_runner_version: "0.2.13" + # Token has to be generated here https://git.phyllo.me/user/settings/actions/runners and paste here, like: + # registration_token: "asdlkhgalsdhlgksdahklds" + registration_token: "" tasks: - name: Create act runner user - user: - name: "{{ runner_name }}" + ansible.builtin.user: + name: "act_runner" system: yes shell: /bin/bash - home: "/var/lib/{{ runner_name }}" - create_home: no + home: "/var/lib/act_runner" + create_home: yes + state: present - name: Create /etc/act_runner directory - file: - path: /etc/"{{ runner_name }}" + ansible.builtin.file: + path: /etc/act_runner state: directory - owner: "{{ runner_name }}" - group: "{{ runner_name }}" + owner: "act_runner" + group: "act_runner" mode: '0755' - name: Install Act Runner - uri: + ansible.builtin.get_url: url: "https://gitea.com/gitea/act_runner/releases/download/v{{ gitea_runner_version }}/act_runner-{{ gitea_runner_version }}-linux-amd64" dest: "/usr/local/bin/act-runner" mode: '0755' - status_code: 200 - follow_redirects: all - - - name: Creat Act Runner configuration file - copy: + force: "{{ (ansible_facts['cmdline']['force'] is defined) | default(false) }}" + retries: 3 + delay: 5 + + - name: Create Act Runner configuration file + ansible.builtin.copy: content: | log: # The level of logging, can be trace, debug, info, warn, error, fatal @@ -69,7 +73,7 @@ # If it's empty when registering, it will ask for inputting labels. # If it's empty when execute `daemon`, will use labels in `.runner` file. labels: - - "rocky-10:host:local" + - "rocky-latest:host:local" cache: # Enable cache server to use actions/cache. @@ -129,22 +133,30 @@ # If it's empty, $HOME/.cache/act/ will be used. workdir_parent: dest: /etc/act_runner/config.yaml - mode: '0644' + owner: "act_runner" + group: "act_runner" + mode: '0755' + backup: yes - - name: Register the runner with Gitea - command: > + - name: Check if runner is already registered + ansible.builtin.stat: + path: /var/lib/act_runner/.runner + register: runner_registered + changed_when: false + + - name: Register the runner with Gitea (if not already registered) + ansible.builtin.command: > /usr/local/bin/act-runner register - --no-interactive + --no-interactive --config /etc/act_runner/config.yaml --instance https://git.phyllo.me --token {{ registration_token }} - args: - chdir: /var/lib/{{ runner_name }} - become_user: "{{ runner_name }}" + --name rl-bios-0 + when: not runner_registered.stat.exists changed_when: true - name: Create Act Runner service file - copy: + ansible.builtin.copy: content: | [Unit] Description=Gitea Actions Runner @@ -152,8 +164,8 @@ [Service] Type=simple - User={{ runner_name }} - ExecStart=/usr/local/bin/act_runner daemon --config /etc/act_runner/config.yaml + User=act_runner + ExecStart=/usr/local/bin/act-runner daemon --config /etc/act_runner/config.yaml ExecReload=/bin/kill -s HUP $MAINPID WorkingDirectory=/var/lib/act_runner TimeoutSec=0 @@ -164,11 +176,12 @@ [Install] WantedBy=multi-user.target dest: /etc/systemd/system/act-runner.service - mode: '0644' + mode: '0755' + backup: yes - name: Ensure act-runner service is enabled and started - systemd: + ansible.builtin.systemd: name: act-runner enabled: yes state: started - daemon_reload: yes + daemon_reload: yes \ No newline at end of file