From 613cc4b223fe2fd29070a2df52cc6a8f4cf0e271 Mon Sep 17 00:00:00 2001 From: Jonas Gunz Date: Fri, 14 Apr 2023 17:22:21 +0200 Subject: gitea_runner --- roles/gitea_runner/defaults/main.yml | 28 ++++++++++ roles/gitea_runner/files/act_runner.service | 15 +++++ roles/gitea_runner/handlers/main.yml | 7 +++ roles/gitea_runner/tasks/main.yml | 87 +++++++++++++++++++++++++++++ 4 files changed, 137 insertions(+) create mode 100644 roles/gitea_runner/defaults/main.yml create mode 100644 roles/gitea_runner/files/act_runner.service create mode 100644 roles/gitea_runner/handlers/main.yml create mode 100644 roles/gitea_runner/tasks/main.yml (limited to 'roles') diff --git a/roles/gitea_runner/defaults/main.yml b/roles/gitea_runner/defaults/main.yml new file mode 100644 index 0000000..aebcd2e --- /dev/null +++ b/roles/gitea_runner/defaults/main.yml @@ -0,0 +1,28 @@ +--- +gitea_runner: + version: + ver: 0.1.2 + gitea_url: 'https://gitea.example.com/' + runner_token: 'TOKEN' + tags: + ubuntu-latest: docker://node:16-bullseye + python-latest: docker://docker:latest + config: + log: + level: info + runner: + file: /var/lib/act_runner/runner.conf + capacity: 1 + envs: {} + env_file: '' + timeout: 3h + insecure: false + fetch_timeout: 5s + fetch_interval: 2s + cache: + enabled: true + dir: /var/lib/act_runner/runner.conf + host: '' + port: 0 + container: + network_mode: bridge diff --git a/roles/gitea_runner/files/act_runner.service b/roles/gitea_runner/files/act_runner.service new file mode 100644 index 0000000..f6bbca0 --- /dev/null +++ b/roles/gitea_runner/files/act_runner.service @@ -0,0 +1,15 @@ +[Unit] +Description=Gitea act_runner +After=syslog.target +After=network.target + +[Service] +RestartSec=2s +Type=simple +User=runner +Group=runner +ExecStart=/usr/local/bin/act_runner -c /etc/act_runner/config.yaml daemon +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/roles/gitea_runner/handlers/main.yml b/roles/gitea_runner/handlers/main.yml new file mode 100644 index 0000000..6eb4fa0 --- /dev/null +++ b/roles/gitea_runner/handlers/main.yml @@ -0,0 +1,7 @@ +--- +- name: Handle systemd + systemd: + name: act_runner.service + enabled: true + state: restarted + become: true diff --git a/roles/gitea_runner/tasks/main.yml b/roles/gitea_runner/tasks/main.yml new file mode 100644 index 0000000..b050a12 --- /dev/null +++ b/roles/gitea_runner/tasks/main.yml @@ -0,0 +1,87 @@ +--- +- name: Install packages + apt: + name: + - docker.io + become: true + +- name: Create User + user: + name: runner + system: true + state: present + groups: + - docker + become: true + +- name: Folder structure + file: + path: '{{ item }}' + owner: runner + group: runner + mode: '750' + state: directory + become: true + loop: + - /var/lib/act_runner/ + - /etc/act_runner/ + +- name: Configuration + copy: + dest: /etc/act_runner/config.yaml + owner: runner + group: runner + content: '{{ gitea_runner.config | to_yaml }}' + become: true + +- name: pull sha256sum + uri: + url: 'https://dl.gitea.io/act_runner/{{ gitea_runner.version.ver }}/act_runner-{{ gitea_runner.version.ver }}-linux-amd64.sha256' + method: GET + return_content: yes + register: runner_sha256 + +- name: Download Gitea act_runner + get_url: + url: 'https://dl.gitea.io/act_runner/{{ gitea_runner.version.ver }}/act_runner-{{ gitea_runner.version.ver }}-linux-amd64' + checksum: 'sha256:{{ (runner_sha256.content | split(" "))[0] }}' + dest: /usr/local/bin/act_runner + owner: root + group: root + mode: '755' + become: yes + notify: + - Handle systemd + +- name: Install gitea unit file + copy: + src: act_runner.service + dest: /etc/systemd/system/act_runner.service + become: yes + notify: + - Handle systemd + +- debug: + msg: '--labels {% for k, v in gitea_runner.tags.items() %}{{ k }}:{{ v }},{% endfor %}' + + +- name: Register runner + shell: + cmd: '/usr/local/bin/act_runner -c /etc/act_runner/config.yaml register --instance {{ gitea_runner.gitea_url }} --token {{ gitea_runner.runner_token }} --no-interactive --labels {% for k, v in gitea_runner.tags.items() %}{{ k }}:{{ v }},{% endfor %}' + creates: '/var/lib/act_runner/runner.conf' + become_user: runner + become: true + notify: + - Handle systemd + +- name: Configure labels + lineinfile: + path: '/var/lib/act_runner/runner.conf' + state: present + insertafter: '"labels"' + line: ' "{{ item.key }}:{{ item.value }}",' + search_string: ' "{{ item.key }}:{{ item.value }}",' + with_dict: '{{ gitea_runner.tags }}' + become: true + notify: + - Handle systemd -- cgit v1.2.3