Files
act-runner-example/docker-compose.runner.yaml
gitea_1-h.cc a5badeaad0 添加 docker-compose.runner.yaml
[skip ci]

Signed-off-by: gitea_1-h.cc <i@oo1.dev>
2026-04-29 16:33:38 +08:00

121 lines
4.0 KiB
YAML

---
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
x-runner-env: &runner-env
TZ: Asia/Shanghai
MAX_PARALLEL_JOBS: "1"
GITEA_RUNNER_JOB_CONTAINER_FORCE_PULL: "true"
ACT_CACHE_SERVER_EXTERNAL_URL: "http://gitea-runner-cache-server.oo1.dev:9999/"
# CACHE_EXTERNAL_SECRET: "${CACHE_EXTERNAL_SECRET:?set CACHE_EXTERNAL_SECRET}"
CACHE_EXTERNAL_SECRET: 7990850f9cffc2a8504d629b401ca0667d26adf6d648ac29496fffd3f70282a5
x-runner-command: &runner-command
- -ec
- |
arch=$$(uname -m)
if [ "$$arch" = "x86_64" ]; then
arch="amd64"
elif [ "$$arch" = "aarch64" ]; then
arch="arm64"
else
echo "unknown arch: $$arch"
exit 1
fi
labels="$${GITEA_RUNNER_LABELS:-}"
if [ -z "$$labels" ]; then
labels="ubuntu-latest:docker://gitea/runner-images:ubuntu-latest"
labels="$$labels,ubuntu-$$arch:docker://gitea/runner-images:ubuntu-latest"
fi
if [ -z "$${GITEA_RUNNER_NAME:-}" ]; then
country=$$(wget -qO- https://ipinfo.io/country 2>/dev/null || true)
ip=$$(wget -qO- https://ipv4.icanhazip.com 2>/dev/null || true)
memTotal=$$(awk '/MemTotal/ {printf "%.2f", $$2 / 1024 / 1024}' /proc/meminfo)
country="$${country:-XX}"
ip="$${ip:-unknown-ip}"
GITEA_RUNNER_NAME="$$country-$$ip-$$arch-$$(nproc)C$${memTotal}G-$${RUNNER_INSTANCE_NAME}"
fi
{
printf '%s\n' 'log:'
printf '%s\n' ' level: info'
printf '%s\n' ''
printf '%s\n' 'runner:'
printf '%s\n' ' file: /data/.runner'
printf ' capacity: %s\n' "$${MAX_PARALLEL_JOBS}"
printf '%s\n' ' labels:'
old_ifs="$$IFS"
IFS=','
set -- $$labels
IFS="$$old_ifs"
for label in "$$@"; do
printf ' - "%s"\n' "$$label"
done
printf '%s\n' ''
printf '%s\n' 'cache:'
printf '%s\n' ' enabled: true'
printf '%s\n' ' dir: /data/cache/server'
printf ' external_server: "%s"\n' "$${ACT_CACHE_SERVER_EXTERNAL_URL}"
printf ' external_secret: "%s"\n' "$${CACHE_EXTERNAL_SECRET}"
printf '%s\n' ''
printf '%s\n' 'container:'
printf ' force_pull: %s\n' "$${GITEA_RUNNER_JOB_CONTAINER_FORCE_PULL}"
} >/tmp/runner-config.yaml
if [ ! -s /data/.runner ]; then
act_runner --config /tmp/runner-config.yaml register --no-interactive \
--instance "$${GITEA_INSTANCE_URL}" \
--token "$${GITEA_RUNNER_REGISTRATION_TOKEN}" \
--name "$${GITEA_RUNNER_NAME}" \
--labels "$$labels"
fi
exec act_runner --config /tmp/runner-config.yaml daemon
x-runner-common: &runner-common
# image: docker.io/gitea/act_runner:v0.6.0
image: docker.io/gitea/act_runner:nightly
restart: unless-stopped
# pull_policy: always
stop_signal: SIGINT
stop_grace_period: 30s
labels:
com.centurylinklabs.watchtower.enable: "true"
working_dir: /data
entrypoint: ["/sbin/tini", "--", "/bin/sh"]
command: *runner-command
services:
runner-yanhao_ren: # ❗️1️⃣
<<: *runner-common
container_name: gitea_runner_yanhao_ren # ❗️2️⃣
environment:
<<: *runner-env
RUNNER_INSTANCE_NAME: yanhao_ren # ❗️3️⃣
GITEA_INSTANCE_URL: "https://git.yanhao.ren" # ❗️4️⃣
GITEA_RUNNER_REGISTRATION_TOKEN: # ❗️5️⃣
volumes:
- gitea_runner_yanhao_ren_data:/data # ❗️6️⃣
- /var/run/docker.sock:/var/run/docker.sock:ro
- /etc/localtime:/etc/localtime:ro
runner-git.1-h.cc: # ❗️1️⃣
<<: *runner-common
container_name: gitea_runner_git.1-h.cc # ❗️2️⃣
environment:
<<: *runner-env
RUNNER_INSTANCE_NAME: git.1-h.cc # ❗️3️⃣
GITEA_INSTANCE_URL: "https://git.1-h.cc" # ❗️4️⃣
GITEA_RUNNER_REGISTRATION_TOKEN: # ❗️5️⃣
volumes:
- gitea_runner_git.1-h.cc_data:/data # ❗️6️⃣
- /var/run/docker.sock:/var/run/docker.sock:ro
- /etc/localtime:/etc/localtime:ro
volumes:
gitea_runner_yanhao_ren_data:
gitea_runner_git.1-h.cc_data: