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