v0.3.0-1
This commit is contained in:
87
config.yaml
Normal file
87
config.yaml
Normal file
@@ -0,0 +1,87 @@
|
||||
# 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: 1
|
||||
# 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: ["fedora:host"]
|
||||
|
||||
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: 0
|
||||
# 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: []
|
||||
# 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: ""
|
||||
# Pull docker image(s) even if already present
|
||||
force_pull: false
|
||||
|
||||
host:
|
||||
# The parent directory of a job's working directory.
|
||||
# If it's empty, $HOME/.cache/act/ will be used.
|
||||
workdir_parent:
|
||||
31
gitea-act-runner-setup
Executable file
31
gitea-act-runner-setup
Executable file
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
INSTANCE="${1:?Usage: gitea-act-runner-setup <instance-name>}"
|
||||
RUNNER_DIR="/var/lib/gitea/runners/${INSTANCE}"
|
||||
CONFIG="/etc/gitea/runners/${INSTANCE}.yaml"
|
||||
|
||||
if [ ! -f "$CONFIG" ]; then
|
||||
echo "Config not found: $CONFIG"
|
||||
echo "Copy /etc/gitea/runners/runner1.yaml to $CONFIG first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$RUNNER_DIR"
|
||||
chown gitea-runner:gitea-runner "$RUNNER_DIR"
|
||||
|
||||
mkdir -p "$RUNNER_DIR"
|
||||
chown gitea-runner:gitea-runner "$RUNNER_DIR"
|
||||
|
||||
# Enable rootless podman socket (once per user, idempotent)
|
||||
RUNNER_HOME=$(getent passwd gitea-runner | cut -d: -f6)
|
||||
SOCKET_WANTS="${RUNNER_HOME}/.config/systemd/user/sockets.target.wants"
|
||||
PODMAN_SOCKET="/usr/lib/systemd/user/podman.socket"
|
||||
if [ -f "$PODMAN_SOCKET" ] && [ ! -L "${SOCKET_WANTS}/podman.socket" ]; then
|
||||
mkdir -p "$SOCKET_WANTS"
|
||||
ln -s "$PODMAN_SOCKET" "${SOCKET_WANTS}/podman.socket"
|
||||
chown -R gitea-runner:gitea-runner "${RUNNER_HOME}/.config"
|
||||
fi
|
||||
|
||||
cd "$RUNNER_DIR"
|
||||
sudo -u gitea-runner gitea-act-runner register -c "$CONFIG"
|
||||
2
gitea-act-runner.sysusers
Normal file
2
gitea-act-runner.sysusers
Normal file
@@ -0,0 +1,2 @@
|
||||
# Type Name ID GECOS Home directory Shell
|
||||
u gitea-runner - "Gitea Act Runner" /var/lib/gitea/runners /sbin/nologin
|
||||
85
gitea-act_runner.spec
Normal file
85
gitea-act_runner.spec
Normal file
@@ -0,0 +1,85 @@
|
||||
Name: gitea-act_runner
|
||||
Version: 0.3.0
|
||||
Release: 1%{?dist}
|
||||
Summary: Gitea act runner service.
|
||||
License: MIT
|
||||
Group: System Environment/Base
|
||||
URL: http://gitea.infomaas.com/rpms-fedora-free/gitea-act_runner
|
||||
|
||||
Source0: https://dl.gitea.com/act_runner/%{version}/act_runner-%{version}-linux-amd64
|
||||
Source1: https://dl.gitea.com/act_runner/%{version}/act_runner-%{version}-linux-arm64
|
||||
Source10: gitea-act_runner@.service
|
||||
Source11: config.yaml
|
||||
Source12: gitea-act-runner-setup
|
||||
Source13: gitea-act-runner.sysusers
|
||||
|
||||
BuildRequires: systemd-rpm-macros
|
||||
Requires: shadow-utils
|
||||
%{?systemd_requires}
|
||||
|
||||
ExclusiveArch: x86_64 aarch64
|
||||
|
||||
%description
|
||||
Act runner is a runner for Gitea based on Gitea fork of act.
|
||||
|
||||
This package includes official binaries and runs act_runner natively on the host.
|
||||
|
||||
%install
|
||||
%{__rm} -rf %{buildroot}
|
||||
|
||||
install -d -m 755 %{buildroot}%{_bindir}
|
||||
%ifarch x86_64
|
||||
install -m 755 %{SOURCE0} %{buildroot}%{_bindir}/gitea-act-runner
|
||||
%endif
|
||||
|
||||
%ifarch aarch64
|
||||
install -m 755 %{SOURCE1} %{buildroot}%{_bindir}/gitea-act-runner
|
||||
%endif
|
||||
|
||||
install -p -D -m 644 %{SOURCE10} %{buildroot}%{_unitdir}/gitea-act_runner@.service
|
||||
install -p -D -m 644 %{SOURCE13} %{buildroot}%{_sysusersdir}/gitea-act-runner.conf
|
||||
|
||||
install -d -m 750 %{buildroot}%{_sysconfdir}/gitea/runners
|
||||
install -m 640 %{SOURCE11} %{buildroot}%{_sysconfdir}/gitea/runners/runner1.yaml
|
||||
install -m 755 %{SOURCE12} %{buildroot}%{_bindir}/gitea-act-runner-setup
|
||||
|
||||
install -d -m 750 %{buildroot}%{_sharedstatedir}/gitea/runners
|
||||
|
||||
%post
|
||||
%sysusers_create_package gitea-act-runner %{SOURCE13}
|
||||
|
||||
if [ $1 -eq 1 ]; then
|
||||
loginctl enable-linger gitea-runner || :
|
||||
fi
|
||||
|
||||
if ! grep -q "gitea-runner" /etc/subuid; then
|
||||
LAST_ID=$(tail -n 1 /etc/subuid | cut -d: -f2)
|
||||
[ -z "$LAST_ID" ] && START_ID=100000 || START_ID=$((LAST_ID + 65536))
|
||||
|
||||
echo "gitea-runner:$START_ID:65536" >> /etc/subuid
|
||||
echo "gitea-runner:$START_ID:65536" >> /etc/subgid
|
||||
fi
|
||||
|
||||
%systemd_post gitea-act_runner@.service
|
||||
|
||||
%preun
|
||||
%systemd_preun gitea-act_runner@.service
|
||||
|
||||
%postun
|
||||
%systemd_postun gitea-act_runner@.service
|
||||
|
||||
%clean
|
||||
%{__rm} -rf %{buildroot}
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
|
||||
%{_bindir}/gitea-act-runner
|
||||
%{_bindir}/gitea-act-runner-setup
|
||||
%{_unitdir}/gitea-act_runner@.service
|
||||
%{_sysusersdir}/gitea-act-runner.conf
|
||||
|
||||
%defattr(-,gitea-runner,gitea-runner,750)
|
||||
%dir %{_sysconfdir}/gitea
|
||||
%dir %{_sysconfdir}/gitea/runners
|
||||
%config(noreplace) %{_sysconfdir}/gitea/runners/runner1.yaml
|
||||
23
gitea-act_runner@.service
Normal file
23
gitea-act_runner@.service
Normal file
@@ -0,0 +1,23 @@
|
||||
[Unit]
|
||||
Description=Act runner is a runner for Gitea
|
||||
After=network.target
|
||||
ConditionPathExists=/var/lib/gitea/runners/%I/.runner
|
||||
StartLimitIntervalSec=60
|
||||
StartLimitBurst=3
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=gitea-runner
|
||||
|
||||
StateDirectory=gitea/runners/%i
|
||||
StateDirectoryMode=0750
|
||||
WorkingDirectory=/var/lib/gitea/runners/%I
|
||||
Environment=HOME=/var/lib/gitea/runners/%I
|
||||
|
||||
ExecStart=/usr/bin/gitea-act-runner daemon -c /etc/gitea/runners/%I.yaml
|
||||
|
||||
Restart=on-failure
|
||||
RestartSec=5s
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Reference in New Issue
Block a user