git runner自动注入

This commit is contained in:
GuanYuankai 2025-11-11 13:28:16 +08:00
parent fe9ae61200
commit 04a59176f0
1 changed files with 35 additions and 20 deletions

View File

@ -15,29 +15,44 @@ jobs:
# 适用于 Runner 无法访问外网,但可以访问 Gitea 实例的场景
- name: Manual Checkout
run: |
echo "正在手动检出代码..."
echo "当前工作目录 (pwd):"
pwd
# 1. 清理 Runner 的工作目录 (以防万一)
# '|| true' 确保在目录为空时命令不会失败
echo "清理工作目录..."
echo "清理工作目录..."
rm -rf * .gitea .git || true
# 2. 构造带有身份验证的 Git URL
# 我们将使用您用于 Docker 登录的 gitea.actor 和 secrets.cicd
gitea.repository_url = http://192.168.0.75:3000/guanyuankai/bonus-edge-proxy
# 转换后 = http://guanyuankai:YOUR_SECRET@192.168.0.75:3000/guanyuankai/bonus-edge-proxy.git
echo "构造 Git URL..."
REPO_URL_WITH_CREDS=$(echo "${{ gitea.repository_url }}" | sed "s|://|://${{ gitea.actor }}:${{ secrets.cicd }}@|").git
# ------------------------------------------------------------------
# 步骤 2: 构造 Git URL (使用环境变量)
# ------------------------------------------------------------------
# Gitea Runner 会自动将 gitea.repository_url 等上下文变量
# 注入为 $GITEA_REPOSITORY_URL 这样的环境变量。
# 这种方式比使用 ${{ ... }} 表达式更兼容、更健壮。
# 3. 执行 Git Clone
# gitea.ref_name = "cicd-testing" (即您的分支名)
# --branch 指定分支, '.' 表示克隆到当前目录
echo "开始克隆分支: ${{ gitea.ref_name }}"
git clone --quiet --branch ${{ gitea.ref_name }} $REPO_URL_WITH_CREDS .
# 打印变量以供调试
echo "GITEA_REPOSITORY_URL = $GITEA_REPOSITORY_URL"
echo "GITEA_ACTOR = $GITEA_ACTOR"
echo "GITEA_REF_NAME = $GITEA_REF_NAME"
# 检查关键变量是否已设置
if [ -z "$GITEA_REPOSITORY_URL" ] || [ -z "$GITEA_ACTOR" ] || [ -z "$GITEA_REF_NAME" ]; then
echo "::error::一个或多个 Gitea 环境变量未设置!"
echo "::error::(GITEA_REPOSITORY_URL, GITEA_ACTOR, GITEA_REF_NAME)"
echo "::error::请检查您的 Gitea Runner 配置。"
exit 1
fi
# 构造认证 URL
# 1. 替换协议 (注意: ${{ secrets.cicd }} 是安全的Runner 会正确处理它)
REPO_URL_AUTH=$(echo "$GITEA_REPOSITORY_URL" | sed "s|://|://${GITEA_ACTOR}:${{ secrets.cicd }}@|")
# 2. 拼接 .git 后缀 (修复了之前的语法错误)
REPO_URL_WITH_CREDS="${REPO_URL_AUTH}.git"
echo "构造的克隆 URL (已隐藏密码):"
echo "$GITEA_REPOSITORY_URL" | sed "s|://|://${GITEA_ACTOR}:***@|"
# ------------------------------------------------------------------
# 步骤 3: 执行 Git Clone
# ------------------------------------------------------------------
echo "开始克隆分支: $GITEA_REF_NAME"
git clone --quiet --branch $GITEA_REF_NAME $REPO_URL_WITH_CREDS .
echo "代码检出成功。当前目录内容:"
ls -la