From a5badeaad0cc04a29392185159b39c65f58fc37b Mon Sep 17 00:00:00 2001 From: "gitea_1-h.cc" Date: Wed, 29 Apr 2026 16:33:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20docker-compose.runner.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [skip ci] Signed-off-by: gitea_1-h.cc --- docker-compose.runner.yaml | 121 +++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 docker-compose.runner.yaml diff --git a/docker-compose.runner.yaml b/docker-compose.runner.yaml new file mode 100644 index 0000000..c834d68 --- /dev/null +++ b/docker-compose.runner.yaml @@ -0,0 +1,121 @@ +--- +# 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: \ No newline at end of file