Update git_ci role from polyfloyd's infra
This commit is contained in:
parent
6cff97e2bb
commit
b74a9859b2
8 changed files with 89 additions and 56 deletions
2
roles/git_ci/defaults/main.yaml
Normal file
2
roles/git_ci/defaults/main.yaml
Normal file
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
git_ci_runner_wd: /var/lib/forgejo-runner
|
8
roles/git_ci/handlers/main.yaml
Normal file
8
roles/git_ci/handlers/main.yaml
Normal file
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
- ansible.builtin.import_tasks:
|
||||
file: ../../common/handlers/main.yaml
|
||||
|
||||
- name: restart forgejo-runner
|
||||
systemd:
|
||||
name: forgejo-runner
|
||||
state: restarted
|
83
roles/git_ci/tasks/main.yaml
Normal file
83
roles/git_ci/tasks/main.yaml
Normal file
|
@ -0,0 +1,83 @@
|
|||
---
|
||||
- tags: git_ci
|
||||
block:
|
||||
- name: Install dependencies
|
||||
apt:
|
||||
name: docker.io
|
||||
|
||||
- name: Query latest forgejo-runner version
|
||||
uri:
|
||||
url: https://code.forgejo.org/api/v1/repos/forgejo/runner/tags
|
||||
return_content: true
|
||||
register: response
|
||||
changed_when: false
|
||||
check_mode: false
|
||||
failed_when: "response is failed or 'json' not in response"
|
||||
|
||||
- name: Format forgejo-runner latest version
|
||||
set_fact:
|
||||
forgejo_runner_version: "{{ response['json'][0]['name'] | trim('v') }}"
|
||||
|
||||
- name: Detect installed forgejo-runner version
|
||||
shell:
|
||||
cmd: |
|
||||
set -o pipefail
|
||||
forgejo-runner --version | grep --color=never -Po '\d\.\d+(\.\d+)?' || echo none
|
||||
executable: /bin/bash
|
||||
register: forgejo_runner_installed_version_shell
|
||||
changed_when: false
|
||||
check_mode: false
|
||||
|
||||
- name: Format installed forgejo-runner version
|
||||
set_fact:
|
||||
forgejo_runner_installed_version: "{{ forgejo_runner_installed_version_shell.stdout }}"
|
||||
|
||||
- debug:
|
||||
msg:
|
||||
- "Forgejo Runner latest version: {{ forgejo_runner_version }}"
|
||||
- "Forgejo Runner installed version: {{ forgejo_runner_installed_version }}"
|
||||
|
||||
- name: Download forgejo-runner
|
||||
get_url:
|
||||
url: "https://code.forgejo.org/forgejo/runner/releases/download/v{{ forgejo_runner_version }}/forgejo-runner-{{ forgejo_runner_version }}-linux-amd64"
|
||||
dest: /usr/local/bin/forgejo-runner
|
||||
mode: "0755"
|
||||
notify: restart forgejo-runner
|
||||
when: forgejo_runner_installed_version != forgejo_runner_version
|
||||
|
||||
- name: Create runner dir
|
||||
file:
|
||||
state: directory
|
||||
path: "{{ git_ci_runner_wd }}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
|
||||
- name: Register runner
|
||||
command: "forgejo-runner register --no-interactive --instance={{ forgejo_url }} --token={{ lookup('passwordstore', 'git/ci subkey=runner_token') }}"
|
||||
args:
|
||||
chdir: "{{ git_ci_runner_wd }}"
|
||||
creates: "{{ git_ci_runner_wd }}/.runner"
|
||||
|
||||
- name: Install service file
|
||||
template:
|
||||
src: forgejo-runner.service
|
||||
dest: /etc/systemd/system/forgejo-runner.service
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
notify: restart forgejo-runner
|
||||
|
||||
- name: Enable service
|
||||
systemd:
|
||||
name: forgejo-runner
|
||||
enabled: true
|
||||
daemon_reload: true
|
||||
|
||||
- name: Start service
|
||||
systemd:
|
||||
name: forgejo-runner
|
||||
state: started
|
||||
daemon_reload: true
|
||||
|
||||
- meta: flush_handlers
|
14
roles/git_ci/templates/forgejo-runner.service
Normal file
14
roles/git_ci/templates/forgejo-runner.service
Normal file
|
@ -0,0 +1,14 @@
|
|||
# {{ ansible_managed }}
|
||||
|
||||
[Unit]
|
||||
Description=Forgejo Runner
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/forgejo-runner daemon
|
||||
WorkingDirectory={{ git_ci_runner_wd }}
|
||||
Restart=on-failure
|
||||
RestartSec=10s
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
Loading…
Add table
Add a link
Reference in a new issue