added a bunch of features, but runner doesn't start if docker not present ??
This commit is contained in:
parent
f8cfff489c
commit
86a444c110
78
README.md
78
README.md
@ -6,21 +6,91 @@ This role installs and configure a gitea act runner on **debian-based** distribu
|
||||
Requirements
|
||||
------------
|
||||
|
||||
None.
|
||||
If `deploy_gitea_runner_deploy_method` is set to `docker`, this role assumes you have `docker`, `docker-compose` installed on the target hosts. The role will not install these components, but you can install them using the [install_docker](https://github.com/ednxzu/install_docker) role.
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
Available variables are listed below, along with default values. A sample file for the default values is available in `default/deploy_gitea_runner.yml.sample` in case you need it for any `group_vars` or `host_vars` configuration.
|
||||
|
||||
```yaml
|
||||
your_defaults_here: default_value # by default, set to default_value
|
||||
deploy_gitea_runner_version: latest # by default, set to latest
|
||||
```
|
||||
A quick description of the variable, what it does, and how to use it.
|
||||
This variable defines the version that will be deployed to your host. In case you use `deploy_gitea_runner_deploy_method: host`, this has to match a release version on [gitea act runner repository](https://gitea.com/gitea/act_runner/releases). If using `deploy_gitea_runner_deploy_method: docker`, this has to match a tag on the [gitea act runner docker registry](https://hub.docker.com/r/gitea/act_runner/tags)
|
||||
|
||||
```yaml
|
||||
deploy_gitea_runner_deploy_method: host # by default, set to host
|
||||
```
|
||||
This variable defines whether the gitea-runner should be deployed as a binary on the host, or as a docker container. This defaults to `host` but can also be `docker`.
|
||||
|
||||
```yaml
|
||||
deploy_gitea_runner_directory: /opt/gitea-actions # by default, set to /opt/gitea-actions
|
||||
```
|
||||
This variable defines where to store the files for the gitea-runner (config, potential docker-compose, etc...)
|
||||
|
||||
```yaml
|
||||
deploy_gitea_runner_timezone: "Europe/Paris" # by default, set to Europe/Paris
|
||||
```
|
||||
This variable is only used for if `deploy_gitea_runner_deploy_method` is `docker`, to set the timezone inside the container.
|
||||
|
||||
```yaml
|
||||
deploy_gitea_runner_register: false # by default, set to false
|
||||
```
|
||||
This variable sets whether or not the role will register the runner against your gitea instance. It will only register if it cannot find the `.runner` file that is generated when registering, and if `deploy_gitea_runner_server_token` is not empty. If `deploy_gitea_runner_deploy_method` is `docker`, this has no impact, since the registration will be handle automatically when to container starts up, given that you have provided a valid URL and token (either via the role's variable, or manually after deploying).
|
||||
|
||||
```yaml
|
||||
deploy_gitea_runner_start_service: false # by default, set to false
|
||||
```
|
||||
This variable sets whether to start the service immediately or not. In case you manually register the runner after deployment, this should be set to `false`.
|
||||
|
||||
```yaml
|
||||
deploy_gitea_runner_server_url: https://git.example.com # by default, set to https://git.example.com
|
||||
```
|
||||
This is the url of your gitea instance, and should be resolvable by the runner.
|
||||
|
||||
```yaml
|
||||
deploy_gitea_runner_server_token: "" # by default, set to an empty string
|
||||
```
|
||||
This is your gitea token. if it isn't set, you cannot run auto-registration. THIS IS A SENSITIVE VALUE, AND SHOULD NOT APPEAR IN CLEAR TEXT IN YOUR REPOSITORY.
|
||||
|
||||
```yaml
|
||||
deploy_gitea_runner_name: gitea-runner # by default, set to gitea-runner
|
||||
```
|
||||
This is the name under which the runner will register itself against your gitea server.
|
||||
|
||||
```yaml
|
||||
deploy_gitea_runner_config: # by default, set to the following
|
||||
log:
|
||||
level: info
|
||||
runner:
|
||||
file: "{{ deploy_gitea_runner_directory }}/.runner" # this HAS TO BE .runner if deploy_gitea_runner_deploy_method is docker
|
||||
capacity: 1
|
||||
timeout: 3h
|
||||
insecure: false
|
||||
fetch_timeout: 5s
|
||||
fetch_interval: 2s
|
||||
labels: []
|
||||
cache:
|
||||
enabled: true
|
||||
dir: "{{ deploy_gitea_runner_directory }}/cache" # this HAS TO BE /cache if deploy_gitea_runner_deploy_method is docker
|
||||
host:
|
||||
port: 0
|
||||
external_server:
|
||||
container:
|
||||
network: ""
|
||||
privileged: false
|
||||
options:
|
||||
workdir_parent:
|
||||
valid_volumes: []
|
||||
docker_host: ""
|
||||
host:
|
||||
workdir_parent:
|
||||
```
|
||||
This is the config file for gitea, put into a variable. The default values are from the default config.yaml generated when running `act_runner generate-config`. Some of the values, like `cache.dir` and `runner.file` have to be set to specific values in case you're running this role with `deploy_gitea_runner_deploy_method` set to `docker`. The rest is configurable according to the standard documentation.
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
|
||||
None.
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
|
@ -4,6 +4,7 @@ deploy_gitea_runner_version: latest
|
||||
deploy_gitea_runner_deploy_method: host # deployment method, either host or docker.
|
||||
deploy_gitea_runner_directory: /opt/gitea-actions
|
||||
deploy_gitea_runner_timezone: "Europe/Paris"
|
||||
deploy_gitea_runner_register: false
|
||||
deploy_gitea_runner_start_service: false
|
||||
deploy_gitea_runner_server_url: https://git.example.com
|
||||
deploy_gitea_runner_server_token: ""
|
||||
@ -12,7 +13,7 @@ deploy_gitea_runner_config:
|
||||
log:
|
||||
level: info
|
||||
runner:
|
||||
file: .runner
|
||||
file: "{{ deploy_gitea_runner_directory }}/.runner" # this HAS TO BE .runner if deploy_gitea_runner_deploy_method is docker
|
||||
capacity: 1
|
||||
timeout: 3h
|
||||
insecure: false
|
||||
@ -21,16 +22,16 @@ deploy_gitea_runner_config:
|
||||
labels: []
|
||||
cache:
|
||||
enabled: true
|
||||
dir:
|
||||
host:
|
||||
port: 0
|
||||
dir: "{{ deploy_gitea_runner_directory }}/cache" # this HAS TO BE /cache if deploy_gitea_runner_deploy_method is docker
|
||||
host: 127.0.0.1
|
||||
port: 9898
|
||||
external_server:
|
||||
container:
|
||||
network: ""
|
||||
privileged: false
|
||||
options:
|
||||
options: ""
|
||||
workdir_parent:
|
||||
valid_volumes: []
|
||||
docker_host: ""
|
||||
docker_host: "-"
|
||||
host:
|
||||
workdir_parent:
|
@ -5,16 +5,16 @@
|
||||
daemon_reload: true
|
||||
listen: "systemctl-daemon-reload"
|
||||
|
||||
- name: "Enable gitea-runnner service"
|
||||
- name: "Enable gitea-runner service"
|
||||
ansible.builtin.service:
|
||||
name: gitea-runnner
|
||||
name: gitea-runner
|
||||
enabled: true
|
||||
listen: "systemctl-enable-gitea-runnner"
|
||||
listen: "systemctl-enable-gitea-runner"
|
||||
|
||||
- name: "Start gitea-runnner service"
|
||||
- name: "Start gitea-runner service"
|
||||
ansible.builtin.service:
|
||||
name: gitea-runnner
|
||||
name: gitea-runner
|
||||
state: restarted
|
||||
listen: "systemctl-restart-gitea-runnner"
|
||||
listen: "systemctl-restart-gitea-runner"
|
||||
throttle: 1
|
||||
when: deploy_gitea_runner_start_service
|
||||
|
7
molecule/with_docker_host/converge.yml
Normal file
7
molecule/with_docker_host/converge.yml
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
- name: Converge
|
||||
hosts: all
|
||||
tasks:
|
||||
- name: "Include ednxzu.deploy_gitea_runner"
|
||||
ansible.builtin.include_role:
|
||||
name: "ednxzu.deploy_gitea_runner"
|
36
molecule/with_docker_host/group_vars/all.yml
Normal file
36
molecule/with_docker_host/group_vars/all.yml
Normal file
@ -0,0 +1,36 @@
|
||||
---
|
||||
deploy_gitea_runner_version: latest
|
||||
deploy_gitea_runner_deploy_method: host # deployment method, either host or docker.
|
||||
deploy_gitea_runner_directory: /opt/gitea-actions
|
||||
deploy_gitea_runner_timezone: "Europe/Paris"
|
||||
deploy_gitea_runner_register: true
|
||||
deploy_gitea_runner_start_service: true
|
||||
deploy_gitea_runner_server_url: https://git.example.com
|
||||
deploy_gitea_runner_server_token: ""
|
||||
deploy_gitea_runner_name: gitea-runner
|
||||
deploy_gitea_runner_config:
|
||||
log:
|
||||
level: info
|
||||
runner:
|
||||
file: "{{ deploy_gitea_runner_directory }}/.runner" # this HAS TO BE .runner if deploy_gitea_runner_deploy_method is docker
|
||||
capacity: 1
|
||||
timeout: 3h
|
||||
insecure: false
|
||||
fetch_timeout: 5s
|
||||
fetch_interval: 2s
|
||||
labels: ["ubuntu-latest"]
|
||||
cache:
|
||||
enabled: true
|
||||
dir: "{{ deploy_gitea_runner_directory }}/cache" # this HAS TO BE /cache if deploy_gitea_runner_deploy_method is docker
|
||||
host: 127.0.0.1
|
||||
port: 9898
|
||||
external_server:
|
||||
container:
|
||||
network: ""
|
||||
privileged: false
|
||||
options: ""
|
||||
workdir_parent:
|
||||
valid_volumes: []
|
||||
docker_host: "-"
|
||||
host:
|
||||
workdir_parent:
|
37
molecule/with_docker_host/molecule.yml
Normal file
37
molecule/with_docker_host/molecule.yml
Normal file
@ -0,0 +1,37 @@
|
||||
---
|
||||
dependency:
|
||||
name: galaxy
|
||||
options:
|
||||
requirements-file: ./requirements.yml
|
||||
driver:
|
||||
name: docker
|
||||
platforms:
|
||||
- name: instance
|
||||
image: geerlingguy/docker-${MOLECULE_TEST_OS}-ansible
|
||||
command: ""
|
||||
volumes:
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup
|
||||
cgroupns_mode: host
|
||||
privileged: true
|
||||
pre_build_image: true
|
||||
provisioner:
|
||||
name: ansible
|
||||
config_options:
|
||||
defaults:
|
||||
remote_tmp: /tmp/.ansible
|
||||
verifier:
|
||||
name: ansible
|
||||
scenario:
|
||||
name: with_docker_host
|
||||
test_sequence:
|
||||
- dependency
|
||||
- cleanup
|
||||
- destroy
|
||||
- syntax
|
||||
- create
|
||||
- prepare
|
||||
- converge
|
||||
- idempotence
|
||||
- verify
|
||||
- cleanup
|
||||
- destroy
|
19
molecule/with_docker_host/verify.yml
Normal file
19
molecule/with_docker_host/verify.yml
Normal file
@ -0,0 +1,19 @@
|
||||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: "Test: file /etc/hosts"
|
||||
block:
|
||||
- name: "Stat file /etc/hosts"
|
||||
ansible.builtin.stat:
|
||||
path: "/etc/hosts"
|
||||
register: stat_etc_hosts
|
||||
|
||||
- name: "Verify file /etc/hosts"
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- stat_etc_hosts.stat.exists
|
||||
- stat_etc_hosts.stat.isreg
|
||||
- stat_etc_hosts.stat.pw_name == 'root'
|
||||
- stat_etc_hosts.stat.gr_name == 'root'
|
@ -2,27 +2,14 @@
|
||||
# task/configure file for deploy_adguard
|
||||
- name: "Copy gitea-runnner.service file"
|
||||
ansible.builtin.template:
|
||||
src: "gitea-runnner.service.j2"
|
||||
dest: "/etc/systemd/system/gitea-runnner.service"
|
||||
src: "gitea-runner.service.j2"
|
||||
dest: "/etc/systemd/system/gitea-runner.service"
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify:
|
||||
- systemctl-daemon-reload
|
||||
|
||||
- name: "Configure docker-compose deployment"
|
||||
block:
|
||||
- name: "Copy docker-compose.yml template"
|
||||
ansible.builtin.template:
|
||||
src: "docker-compose.yml.j2"
|
||||
dest: "{{ deploy_gitea_runner_directory }}/docker-compose.yml"
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0600'
|
||||
notify:
|
||||
- systemctl-enable-gitea-runnner
|
||||
- systemctl-restart-gitea-runnner
|
||||
|
||||
- name: "Copy config.yaml"
|
||||
ansible.builtin.template:
|
||||
src: "config.yaml.j2"
|
||||
@ -32,4 +19,5 @@
|
||||
mode: '0600'
|
||||
when: deploy_gitea_runner_config != {}
|
||||
notify:
|
||||
- systemctl-restart-gitea-runnner
|
||||
- systemctl-enable-gitea-runner
|
||||
- systemctl-restart-gitea-runner
|
||||
|
@ -1,2 +1,14 @@
|
||||
---
|
||||
# task/install_docker file for deploy_gitea_runner
|
||||
- name: "Configure docker-compose deployment"
|
||||
block:
|
||||
- name: "Copy docker-compose.yml template"
|
||||
ansible.builtin.template:
|
||||
src: "docker-compose.yml.j2"
|
||||
dest: "{{ deploy_gitea_runner_directory }}/docker-compose.yml"
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0600'
|
||||
notify:
|
||||
- systemctl-enable-gitea-runner
|
||||
- systemctl-restart-gitea-runner
|
||||
|
@ -46,6 +46,8 @@
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0755'
|
||||
notify:
|
||||
- systemctl-restart-gitea-runner
|
||||
|
||||
- name: "Update version file"
|
||||
ansible.builtin.copy:
|
||||
|
@ -8,3 +8,8 @@
|
||||
|
||||
- name: "Import configure.yml"
|
||||
ansible.builtin.include_tasks: configure.yml
|
||||
|
||||
- name: "Import register.yml"
|
||||
ansible.builtin.include_tasks: register.yml
|
||||
when: deploy_gitea_runner_register
|
||||
and deploy_gitea_runner_deploy_method == 'host'
|
||||
|
@ -15,10 +15,11 @@
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0755'
|
||||
when: deploy_gitea_runner_deploy_method == "docker"
|
||||
|
||||
- name: "Create gitea_actions/cache directory"
|
||||
ansible.builtin.file:
|
||||
path: "{{ deploy_gitea_runner_directory }}/cache"
|
||||
path: "{{ deploy_gitea_runner_config['cache']['dir'] if deploy_gitea_runner_deploy_method == 'host' else deploy_gitea_runner_directory + '/data' }}"
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
|
28
tasks/register.yml
Normal file
28
tasks/register.yml
Normal file
@ -0,0 +1,28 @@
|
||||
---
|
||||
# task/register file for deploy_gitea_runner
|
||||
- name: "Verify runner isnt already register"
|
||||
ansible.builtin.stat:
|
||||
path: "{{ deploy_gitea_runner_directory }}/.runner"
|
||||
register: stat_gitea_runner_file
|
||||
|
||||
- name: "Register gitea-runner"
|
||||
when: not stat_gitea_runner_file.stat.exists and
|
||||
not deploy_gitea_runner_deploy_method == 'docker' and
|
||||
not deploy_gitea_runner_server_token == ''
|
||||
block:
|
||||
- name: "Register gitea-runner"
|
||||
ansible.builtin.command: "{{ deploy_gitea_runner_path }} register --no-interactive --instance $GITEA_URL --token $GITEA_TOKEN --name $GITEA_RUNNER_NAME --config $CONFIG_FILE"
|
||||
environment:
|
||||
GITEA_URL: "{{ deploy_gitea_runner_server_url }}"
|
||||
GITEA_TOKEN: "{{ deploy_gitea_runner_server_token }}"
|
||||
GITEA_RUNNER_NAME: "{{ deploy_gitea_runner_name }}"
|
||||
CONFIG_FILE: "{{ deploy_gitea_runner_directory }}/config.yaml"
|
||||
changed_when: false
|
||||
register: register_gitea_runner
|
||||
|
||||
- name: "Ensure registration is successful"
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- register_gitea_runner.rc == 0
|
||||
success_msg: "Runner {{ deploy_gitea_runner_name }} registered correctly !"
|
||||
fail_msg: "Runner {{ deploy_gitea_runner_name }} Did not register correctly: {{ register_gitea_runner.stderr }}"
|
@ -1,2 +1,2 @@
|
||||
# {{ ansible_managed }}
|
||||
{{ deploy_gitea_runner_config | to_nice_yaml }}
|
||||
{{ deploy_gitea_runner_config | to_yaml }}
|
||||
|
@ -3,7 +3,7 @@ version: '3.9'
|
||||
|
||||
services:
|
||||
runner:
|
||||
image: gitea/act_runner:latest
|
||||
image: gitea/act_runner:{{ deploy_gitea_runner_version }}
|
||||
configs:
|
||||
- source: config_yaml
|
||||
target: /config.yaml
|
||||
|
29
templates/gitea-runner.service.j2
Normal file
29
templates/gitea-runner.service.j2
Normal file
@ -0,0 +1,29 @@
|
||||
{% if deploy_gitea_runner_deploy_method == 'docker' %}
|
||||
[Unit]
|
||||
Description=Act runner is a runner for Gitea based on Gitea fork of act.
|
||||
After=docker.service
|
||||
Requires=docker.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=/bin/bash -c "docker-compose -f {{ deploy_gitea_runner_directory }}/docker-compose.yml up --detach"
|
||||
ExecStop=/bin/bash -c "docker-compose -f {{ deploy_gitea_runner_directory }}/docker-compose.yml down"
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
{% elif deploy_gitea_runner_deploy_method == 'host' %}
|
||||
[Unit]
|
||||
Description=Act runner is a runner for Gitea based on Gitea fork of act.
|
||||
After=network.target
|
||||
Requires=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
EnvironmentFile=-{{ deploy_gitea_runner_directory }}/gitea-runner.env
|
||||
WorkingDirectory={{ deploy_gitea_runner_directory }}
|
||||
ExecStart={{ deploy_gitea_runner_path }} daemon
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
{% endif %}
|
@ -1,13 +0,0 @@
|
||||
[Unit]
|
||||
Description=Act runner is a runner for Gitea based on Gitea fork of act.
|
||||
After=docker.service
|
||||
Requires=docker.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=/bin/bash -c "docker-compose -f {{ deploy_gitea_runner_directory }}/docker-compose.yml up --detach"
|
||||
ExecStop=/bin/bash -c "docker-compose -f {{ deploy_gitea_runner_directory }}/docker-compose.yml down"
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
Loading…
Reference in New Issue
Block a user