Add github CI runner for gitea
This commit is contained in:
99
containers/act_runner/tasks.yml
Normal file
99
containers/act_runner/tasks.yml
Normal file
@@ -0,0 +1,99 @@
|
||||
---
|
||||
- hosts: all
|
||||
name: Gitea web server
|
||||
tasks:
|
||||
- name: Get containers UID
|
||||
ansible.builtin.command: "id -u containers"
|
||||
register: uid_containers
|
||||
changed_when: uid_containers.rc != 0
|
||||
|
||||
- name: Stop running containers
|
||||
become_user: containers
|
||||
become: true
|
||||
ansible.builtin.systemd:
|
||||
scope: user
|
||||
name: container-{{ item }}.service
|
||||
state: stopped
|
||||
loop:
|
||||
- act_runner
|
||||
failed_when: false
|
||||
|
||||
- name: Create podman volumes
|
||||
containers.podman.podman_volume:
|
||||
state: present
|
||||
name: "{{ item }}"
|
||||
become_user: containers
|
||||
become: true
|
||||
loop:
|
||||
- act_runner
|
||||
|
||||
- name: Pull container images
|
||||
become_user: containers
|
||||
become: true
|
||||
containers.podman.podman_image:
|
||||
name: docker.io/{{ item }}
|
||||
loop:
|
||||
- gitea/act_runner:latest
|
||||
|
||||
- name: Change permission to act_runner folder
|
||||
become_user: root
|
||||
become: true
|
||||
ansible.builtin.file:
|
||||
path: /etc/act_runner
|
||||
owner: containers
|
||||
group: containers
|
||||
mode: "0700"
|
||||
state: directory
|
||||
|
||||
- name: Copy config directory
|
||||
become_user: root
|
||||
become: true
|
||||
ansible.builtin.template:
|
||||
src: "templates/{{ item }}.j2"
|
||||
dest: "/etc/act_runner/{{ item }}"
|
||||
owner: containers
|
||||
group: containers
|
||||
mode: "0600"
|
||||
loop:
|
||||
- configuration.yml
|
||||
|
||||
- name: Create act_runner instance
|
||||
become_user: containers
|
||||
become: true
|
||||
containers.podman.podman_container:
|
||||
name: act_runner
|
||||
image: gitea/act_runner:latest
|
||||
state: present
|
||||
security_opt:
|
||||
# - label=type:container_runtime_t
|
||||
- label=disable
|
||||
device:
|
||||
- /dev/fuse
|
||||
publish:
|
||||
- "8088:8088"
|
||||
volume:
|
||||
- act_runner:/data:Z
|
||||
- /etc/act_runner:/config:Z
|
||||
- /run/user/{{ uid_containers.stdout }}/podman/podman.sock:/var/run/docker.sock:z
|
||||
env:
|
||||
GITEA_INSTANCE_URL: "{{ vault_act_runner_host }}"
|
||||
GITEA_RUNNER_REGISTRATION_TOKEN: "{{ vault_act_runner_token }}"
|
||||
GITEA_RUNNER_NAME: "{{ inventory_hostname_short }}"
|
||||
CONFIG_FILE: "/config/configuration.yml"
|
||||
generate_systemd:
|
||||
path: /home/containers/.config/systemd/user/
|
||||
restart_policy: on-failure
|
||||
names: true
|
||||
new: true
|
||||
|
||||
- name: Start containers at boot
|
||||
become_user: containers
|
||||
become: true
|
||||
ansible.builtin.systemd:
|
||||
scope: user
|
||||
name: container-{{ item }}.service
|
||||
enabled: true
|
||||
state: started
|
||||
daemon_reload: true
|
||||
loop:
|
||||
- act_runner
|
||||
85
containers/act_runner/templates/configuration.yml.j2
Normal file
85
containers/act_runner/templates/configuration.yml.j2
Normal file
@@ -0,0 +1,85 @@
|
||||
# Example configuration file, it's safe to copy this as the default config file without any modification.
|
||||
|
||||
# You don't have to copy this file to your instance,
|
||||
# just run `./act_runner generate-config > config.yaml` to generate a config file.
|
||||
|
||||
log:
|
||||
# The level of logging, can be trace, debug, info, warn, error, fatal
|
||||
level: info
|
||||
|
||||
runner:
|
||||
# Where to store the registration result.
|
||||
file: .runner
|
||||
# Execute how many tasks concurrently at the same time.
|
||||
capacity: {{ vault_act_runner_capacity }}
|
||||
# Extra environment variables to run jobs.
|
||||
#envs:
|
||||
# Extra environment variables to run jobs from a file.
|
||||
# It will be ignored if it's empty or the file doesn't exist.
|
||||
#env_file: .env
|
||||
# The timeout for a job to be finished.
|
||||
# Please note that the Gitea instance also has a timeout (3h by default) for the job.
|
||||
# So the job could be stopped by the Gitea instance if it's timeout is shorter than this.
|
||||
timeout: 3h
|
||||
# Whether skip verifying the TLS certificate of the Gitea instance.
|
||||
insecure: false
|
||||
# The timeout for fetching the job from the Gitea instance.
|
||||
fetch_timeout: 5s
|
||||
# The interval for fetching the job from the Gitea instance.
|
||||
fetch_interval: 2s
|
||||
# The labels of a runner are used to determine which jobs the runner can run, and how to run them.
|
||||
# Like: ["macos-arm64:host", "ubuntu-latest:docker://node:16-bullseye", "ubuntu-22.04:docker://node:16-bullseye"]
|
||||
# If it's empty when registering, it will ask for inputting labels.
|
||||
# If it's empty when execute `deamon`, will use labels in `.runner` file.
|
||||
labels: [linux,self-hosted]
|
||||
|
||||
cache:
|
||||
# Enable cache server to use actions/cache.
|
||||
enabled: true
|
||||
# The directory to store the cache data.
|
||||
# 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: 8088
|
||||
# The external cache server URL. Valid only when enable is true.
|
||||
# If it's specified, act_runner will use this URL as the ACTIONS_CACHE_URL rather than start a server by itself.
|
||||
# The URL should generally end with "/".
|
||||
external_server: ""
|
||||
|
||||
container:
|
||||
# Specifies the network to which the container will connect.
|
||||
# Could be host, bridge or the name of a custom network.
|
||||
# If it's empty, act_runner will create a network automatically.
|
||||
network: ""
|
||||
# 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:
|
||||
# Volumes (including bind mounts) can be mounted to containers. Glob syntax is supported, see https://github.com/gobwas/glob
|
||||
# You can specify multiple volumes. If the sequence is empty, no volumes can be mounted.
|
||||
# For example, if you only allow containers to mount the `data` volume and all the json files in `/src`, you should change the config to:
|
||||
# valid_volumes:
|
||||
# - data
|
||||
# - /src/*.json
|
||||
# If you want to allow any volume, please use the following configuration:
|
||||
# valid_volumes:
|
||||
# - '**'
|
||||
valid_volumes: [build_cache]
|
||||
# overrides the docker client host with the specified one.
|
||||
# If it's empty, act_runner will find an available docker host automatically.
|
||||
# If it's "-", act_runner will find an available docker host automatically, but the docker host won't be mounted to the job containers and service containers.
|
||||
# If it's not empty or "-", the specified docker host will be used. An error will be returned if it doesn't work.
|
||||
docker_host: "-"
|
||||
|
||||
host:
|
||||
# The parent directory of a job's working directory.
|
||||
# If it's empty, $HOME/.cache/act/ will be used.
|
||||
workdir_parent:
|
||||
Reference in New Issue
Block a user