更新 .github/workflows/buidl_and_push_ghcr.yml
All checks were successful
Build with Kaniko (Clean & Fixed) / build (push) Successful in 1m3s

This commit is contained in:
2025-12-18 15:40:20 +00:00
parent a134d2d58f
commit 130877efe6

View File

@@ -1,4 +1,4 @@
name: Build with Kaniko (Debug & Base64) name: Build with Kaniko (Clean & Fixed)
on: on:
push: push:
@@ -19,42 +19,16 @@ jobs:
args: >- args: >-
-c -c
" "
# === 1. 变量准备 === HOST='gitea-http.gitea.svc.cluster.local:3000';
# 定义域名(硬编码,排除 DNS 干扰) RAW_USER='${{ gitea.actor }}';
HOST='gitea-http.gitea.svc.cluster.local:3000' LOWER_USER=$(echo $RAW_USER | tr '[:upper:]' '[:lower:]');
# 获取用户名并强制转为小写 (Docker 严格要求小写) PASS='${{ secrets.PACKAGES_TOKEN }}';
RAW_USER='${{ gitea.actor }}'
LOWER_USER=$(echo \"$RAW_USER\" | tr '[:upper:]' '[:lower:]')
PASS='${{ secrets.PACKAGES_TOKEN }}'
echo \"构建用户: $RAW_USER (转换为: $LOWER_USER)\" echo \"DEBUG: Host=\$HOST User=\$LOWER_USER\";
echo \"目标仓库: $HOST\"
# === 2. 生成标准 Base64 Auth === AUTH_STR=$(echo -n \"${RAW_USER}:${PASS}\" | base64 | tr -d '\n');
# 这是 Docker config.json 最原始的格式,兼容性最强
# echo -n 非常重要,不能有多余换行符
AUTH_STR=$(echo -n \"${RAW_USER}:${PASS}\" | base64 | tr -d '\n')
# 写入 config.json echo \"{\\\"auths\\\":{\\\"\$HOST\\\":{\\\"auth\\\":\\\"\$AUTH_STR\\\"}}}\" > /kaniko/.docker/config.json;
echo \"{\\\"auths\\\":{\\\"$HOST\\\":{\\\"auth\\\":\\\"$AUTH_STR\\\"}}}\" > /kaniko/.docker/config.json
echo '认证文件已生成。' /kaniko/executor --context=. --dockerfile=Dockerfile --destination=\$HOST/\$LOWER_USER/my-docs:latest --destination=\$HOST/\$LOWER_USER/my-docs:${{ github.sha }} --insecure --skip-tls-verify --cache=true
# === 3. 连接性预检 (Pre-flight Check) ===
echo '正在进行 API 权限预检...'
# 尝试模拟 Docker Login 的行为访问 v2 接口
# 如果这里返回 401说明 Token 绝对有问题或者 Gitea 没开 Registry
wget -q --spider --header \"Authorization: Basic $AUTH_STR\" http://$HOST/v2/ || echo '⚠️ 警告: 根路径连接测试失败 (可能是正常的 404/401继续尝试)'
# === 4. 执行 Kaniko ===
echo '启动 Kaniko...'
/kaniko/executor \
--context=. \
--dockerfile=Dockerfile \
# 注意:镜像名路径必须全小写
--destination=$HOST/$LOWER_USER/my-docs:latest \
--destination=$HOST/$LOWER_USER/my-docs:${{ github.sha }} \
--insecure \
--skip-tls-verify \
--cache=true
" "