#!/bin/bash
# Gitea Actions runner 容器入口（在 node:20-bookworm 镜像内执行）。
# NAS compose 的 ci-runner 服务启动时从公开产物仓 curl 本脚本执行——
# 改本文件 + 发版 + 重启 ci-runner 容器即可更新 runner 逻辑。
# /data 是持久卷：Go 工具链、模块/构建缓存、act_runner 注册状态都在里面，
# 容器重建不丢。需要环境变量 RUNNER_REG_TOKEN（仅首次注册时使用）。
set -e

# runner v1.x 要求 go>=1.26；1.26 向下兼容编译 go.mod 1.25 的项目
GO_VERSION=1.26.4
# v1.x 起模块改名 gitea.com/gitea/runner（旧名 act_runner 装不上），二进制名也是 runner
RUNNER_VERSION=v1.0.8

export GOPATH=/data/gopath
export GOMODCACHE=/data/gomod
export GOCACHE=/data/gocache
export GOPROXY=https://goproxy.cn,direct
export PATH=/data/go/bin:$GOPATH/bin:$PATH

if [ ! -x /data/go/bin/go ]; then
  echo "[ci-runner] downloading go $GO_VERSION ..."
  curl -fsSL -o /tmp/go.tgz "https://mirrors.aliyun.com/golang/go${GO_VERSION}.linux-amd64.tar.gz"
  tar -C /data -xzf /tmp/go.tgz
  rm /tmp/go.tgz
fi

if [ ! -x "$GOPATH/bin/runner" ]; then
  echo "[ci-runner] installing gitea runner $RUNNER_VERSION ..."
  go install "gitea.com/gitea/runner@${RUNNER_VERSION}"
fi

mkdir -p /data/runner
cd /data/runner
if [ ! -f .runner ]; then
  echo "[ci-runner] registering ..."
  runner register --no-interactive \
    --instance https://git.xindiegaming.top \
    --token "$RUNNER_REG_TOKEN" \
    --name nas-runner \
    --labels nas:host
fi

echo "[ci-runner] daemon up"
exec runner daemon
