Files
xiaoyishu/.gitlab-ci.yml
2026-02-10 16:45:30 +08:00

54 lines
1.9 KiB
YAML

stages:
- sync
sync-to-github:
stage: sync
tags:
- sync
image: ruby:3.3
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG == null'
when: on_success
- when: never
# 关闭浅克隆,拉取完整提交记录
variables:
GIT_DEPTH: 0
script:
# 1. 初始化Git配置,复用提交者信息
- echo "当前提交者信息:$CI_COMMIT_AUTHOR"
- GIT_AUTHOR_NAME=$(echo "$CI_COMMIT_AUTHOR" | cut -d'<' -f1 | xargs)
- GIT_AUTHOR_EMAIL=$(echo "$CI_COMMIT_AUTHOR" | cut -d'<' -f2 | cut -d'>' -f1 | xargs)
- git config --global user.name "$GIT_AUTHOR_NAME"
- git config --global user.email "$GIT_AUTHOR_EMAIL"
- git config --global http.sslVerify false
# 核心新增:禁用HTTP2,强制使用HTTP/1.1(解决HTTP2 framing layer帧层错误)
- git config --global http.version HTTP/1.1
- git config --global http.proxy $PROXY_ADDR
- git config --global https.proxy $PROXY_ADDR
# 2. 构造带PAT的GitHub推送地址
- GITHUB_PUSH_URL="https://$GITHUB_PAT@${GITHUB_REPO_URL#https://}"
- echo "同步目标:GitHub仓库 $GITHUB_REPO_URL"
# 3. 安全处理GitHub远程仓库
- git remote rm github || true
- git remote add github "$GITHUB_PUSH_URL"
# 4. 核心修复:基于分离HEAD创建本地同名分支(解决refspec不匹配问题)
- echo "基于分离HEAD创建本地分支 $CI_COMMIT_BRANCH"
- git checkout -b $CI_COMMIT_BRANCH
# 5. 拉取GitHub远程最新代码(避免冲突,新分支拉取失败不影响)
- git fetch github || true
# 6. 单分支精准推送(GitHub自动创建不存在的分支)
- echo "开始同步GitLab分支 $CI_COMMIT_BRANCH 到GitHub..."
- git push github $CI_COMMIT_BRANCH:$CI_COMMIT_BRANCH -f
retry:
max: 2
when:
- runner_system_failure
- stuck_or_timeout_failure
- api_failure