act runner
This commit is contained in:
2
inventory.ini
Normal file
2
inventory.ini
Normal file
@@ -0,0 +1,2 @@
|
||||
[main]
|
||||
server ansible_host=192.168.4.2 ansible_port=4707 ansible_user=root ansible_python_interpreter=/usr/bin/python3
|
||||
20
playbooks/files/act_runner-updater.sh
Normal file
20
playbooks/files/act_runner-updater.sh
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
error () {
|
||||
printf '%s\n' "=== Failed to update ==="
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "=== Updating Act Runner to v$1 ==="
|
||||
|
||||
systemctl stop act_runner.service || error
|
||||
|
||||
wget -nv -O /usr/local/bin/act_runner https://gitea.com/gitea/act_runner/releases/download/v$1/act_runner-$1-linux-amd64 || error
|
||||
|
||||
systemctl start act_runner.service || error
|
||||
|
||||
systemctl is-active act_runner.service || error
|
||||
|
||||
systemctl status act_runner.service || error
|
||||
|
||||
echo "=== Update finished ==="
|
||||
16
playbooks/files/act_runner.service
Normal file
16
playbooks/files/act_runner.service
Normal file
@@ -0,0 +1,16 @@
|
||||
[Unit]
|
||||
Description=Gitea Actions runner
|
||||
Documentation=https://docs.gitea.com/usage/actions/act-runner
|
||||
After=docker.service
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/act_runner daemon --config /opt/runner/config.yml
|
||||
ExecReload=/bin/kill -s HUP $MAINPID
|
||||
WorkingDirectory=/opt/runner
|
||||
TimeoutSec=0
|
||||
RestartSec=10
|
||||
Restart=always
|
||||
User=runner
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
36
playbooks/files/runner-config.yml
Normal file
36
playbooks/files/runner-config.yml
Normal file
@@ -0,0 +1,36 @@
|
||||
log:
|
||||
# The level of logging, can be trace, debug, info, warn, error, fatal
|
||||
level: info
|
||||
|
||||
runner:
|
||||
file: .runner
|
||||
capacity: 1
|
||||
envs:
|
||||
env_file: .env
|
||||
timeout: 10m
|
||||
insecure: false
|
||||
fetch_timeout: 5s
|
||||
fetch_interval: 2s
|
||||
|
||||
cache:
|
||||
enabled: true
|
||||
# If it's empty, the cache data will be stored in $HOME/.cache/actcache.
|
||||
dir: ""
|
||||
# The host of the cache server.
|
||||
# It's not for the address to listen, but the address to connect from job containers.
|
||||
# So 0.0.0.0 is a bad choice, leave it empty to detect automatically.
|
||||
host: ""
|
||||
# The port of the cache server.
|
||||
# 0 means to use a random available port.
|
||||
port: 0
|
||||
|
||||
container:
|
||||
# Which network to use for the job containers. Could be bridge, host, none, or the name of a custom network.
|
||||
network: proxy-net
|
||||
# Whether to use privileged mode or not when launching task containers (privileged mode is required for Docker-in-Docker).
|
||||
privileged: false
|
||||
# And other options to be used when the container is started (eg, --add-host=my.gitea.url:host-gateway).
|
||||
options:
|
||||
# The parent directory of a job's working directory.
|
||||
# If it's empty, /workspace will be used.
|
||||
workdir_parent:
|
||||
109
playbooks/gitea.yml
Normal file
109
playbooks/gitea.yml
Normal file
@@ -0,0 +1,109 @@
|
||||
# code language=ansible
|
||||
---
|
||||
|
||||
- name: Install act_runner
|
||||
hosts: main
|
||||
vars:
|
||||
gitea__tasks:
|
||||
- all
|
||||
vars_prompt:
|
||||
- name: gitea__runner_token
|
||||
prompt: Input your runner token obtained on https://git.cantorgymnasium.de/org/gcg/settings/actions/runners
|
||||
private: false
|
||||
tasks:
|
||||
- name: Get latest act_runner version
|
||||
ansible.builtin.uri:
|
||||
url: https://gitea.com/api/v1/repos/gitea/act_runner/releases
|
||||
method: GET
|
||||
force: true
|
||||
return_content: true
|
||||
run_once: true
|
||||
register: json_response
|
||||
|
||||
- name: Install act_runner {{ act_runner_version }}
|
||||
vars:
|
||||
act_runner_version: "{{ (json_response.content | from_json)[0].name | replace('v', '') }}"
|
||||
ansible.builtin.get_url:
|
||||
url: https://gitea.com/gitea/act_runner/releases/download/v{{ act_runner_version }}/act_runner-{{ act_runner_version }}-linux-amd64
|
||||
dest: /usr/local/bin/act_runner
|
||||
mode: 0755
|
||||
|
||||
- name: Create runner user
|
||||
ansible.builtin.user:
|
||||
name: runner
|
||||
password: !
|
||||
append: true
|
||||
groups: docker
|
||||
create_home: true
|
||||
home: /opt/runner
|
||||
|
||||
- name: Set correct home directory permissions
|
||||
ansible.builtin.file:
|
||||
name: /opt/runner
|
||||
state: directory
|
||||
owner: runner
|
||||
group: runner
|
||||
recurse: true
|
||||
|
||||
- name: Copy config file
|
||||
ansible.builtin.copy:
|
||||
src: runner-config.yml
|
||||
dest: /opt/runner/config.yml
|
||||
owner: runner
|
||||
group: runner
|
||||
|
||||
- name: Register runner
|
||||
ansible.builtin.command:
|
||||
chdir: /opt/runner
|
||||
creates: /opt/runner/.runner
|
||||
argv:
|
||||
- /usr/local/bin/act_runner
|
||||
- register
|
||||
- --instance
|
||||
- "https://git.cantorgymnasium.de/"
|
||||
- --name
|
||||
- "{{ gitea__runner_name }}"
|
||||
- --labels
|
||||
- "{{ gitea__runner_labels }}"
|
||||
- --token
|
||||
- "{{ gitea__runner_token }}"
|
||||
- --no-interactive
|
||||
- -c
|
||||
- /opt/runner/config.yml
|
||||
|
||||
- name: Set correct .runner file permissions
|
||||
ansible.builtin.file:
|
||||
name: /opt/runner/.runner
|
||||
state: file
|
||||
owner: runner
|
||||
group: runner
|
||||
|
||||
- name: Copy systemd service file
|
||||
ansible.builtin.copy:
|
||||
src: act_runner.service
|
||||
dest: /etc/systemd/system/
|
||||
owner: root
|
||||
group: root
|
||||
|
||||
- name: Enable systemd service
|
||||
ansible.builtin.systemd_service:
|
||||
daemon_reload: true
|
||||
name: act_runner.service
|
||||
enabled: true
|
||||
state: started
|
||||
|
||||
- name: Copy update script
|
||||
ansible.builtin.copy:
|
||||
src: "act_runner-updater.sh"
|
||||
dest: /opt/act_runner-updater.sh
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: root
|
||||
|
||||
- name: Create working directory
|
||||
ansible.builtin.file:
|
||||
name: /opt/runner/workdir
|
||||
state: directory
|
||||
owner: runner
|
||||
group: runner
|
||||
recurse: true
|
||||
Reference in New Issue
Block a user