Gitea Action Runner 物理机部署

  • ~2.60K 字
  1. 1. 创建配置目录
  2. 2. 下载
  3. 3. 生成配置
  4. 4. 创建systemd服务
  5. 5. 服务操作

gitea runner 从 1.0.0 版本开始修改仓库名称和软件名称,现脚本同步全部修改

创建配置目录


mkdir -p /etc/gitea-runner

pushd /etc/gitea-runner > /dev/null

下载

#!/usr/bin/env bash
set -euo pipefail

# 版本号
VERSION="1.0.5"

# 安装路径
INSTALL_PATH="/usr/local/bin/gitea-runner"

# 自动识别系统架构
ARCH="$(uname -m)"

case "$ARCH" in
  x86_64 | amd64)
    ARCH="amd64"
    ;;
  aarch64 | arm64)
    ARCH="arm64"
    ;;
  *)
    echo "不支持的架构: $ARCH"
    exit 1
    ;;
esac

# 版本比较:判断是否小于 1.0.0
version_lt_1() {
  [ "$(printf '%s\n' "$VERSION" "1.0.0" | sort -V | head -n1)" = "$VERSION" ] && [ "$VERSION" != "1.0.0" ]
}

if version_lt_1; then
  # 低于 1.0 版本
  PROJECT="act_runner"
  BINARY_NAME="act_runner-${VERSION}-linux-${ARCH}"
  DOWNLOAD_URL="https://gitea.com/gitea/act_runner/releases/download/v${VERSION}/${BINARY_NAME}.xz"
else
  # 高于或等于 1.0 版本
  PROJECT="runner"
  BINARY_NAME="gitea-runner-${VERSION}-linux-${ARCH}"
  DOWNLOAD_URL="https://gitea.com/gitea/runner/releases/download/v${VERSION}/${BINARY_NAME}.xz"
fi

echo "版本: ${VERSION}"
echo "架构: ${ARCH}"
echo "下载地址: ${DOWNLOAD_URL}"

TMP_DIR="$(mktemp -d)"
pushd "$TMP_DIR" > /dev/null

wget "$DOWNLOAD_URL"

xz -d "${BINARY_NAME}.xz"

chmod +x "$BINARY_NAME"

mv "$BINARY_NAME" "$INSTALL_PATH"

echo "安装完成: $INSTALL_PATH"
"$INSTALL_PATH" --version || true

popd

rm -rf "$TMP_DIR"

生成配置


gitea-runner generate-config > config.yaml

gitea-runner --config config.yaml register

创建systemd服务


tee /etc/systemd/system/gitea-runner.service > /dev/null << 'EOF'

[Unit]
Description=Gitea Actions runner
Documentation=https://gitea.com/gitea/runner
After=docker.service

[Service]
Type=exec
ExecStart="/usr/local/bin/gitea-runner" "daemon" "--config" "/etc/gitea-runner/config.yaml"
ExecReload=/bin/kill -s HUP $MAINPID
WorkingDirectory=/etc/gitea-runner/
Restart=always
RestartSec=30
User=root

[Install]
WantedBy=multi-user.target

EOF

systemctl daemon-reload

服务操作


# 开机启动
systemctl enable gitea-runner

# 启动
systemctl start gitea-runner

# 状态
systemctl status gitea-runner

# 重启
systemctl restart gitea-runner

# 停止
systemctl stop gitea-runner