SOURCE_URL:来源 GitHub 组织/用户地址,默认
https://github.com/kubernetes-loong64
SOURCE_REPO:来源仓库名称
DEST_USER:目标 gitlab 认证用户名,默认
gitlab-ci-token
DEST_TOKEN:目标 gitlab 认证 token(需在 CI/CD 变量中配置)
DEST_HOST:目标 gitlab 实例域名
DEST_GROUP:目标 gitlab 接收代码的命名空间
DEST_REPO:目标仓库名称,默认与
SOURCE_REPO相同,可单独指定(如.github→github)
下方代码利用了锚点,复制
sync-buildxjob,并修改 job 名称和该 job 下的SOURCE_REPO即可。如需源与目标仓库名不同,额外指定DEST_REPO
stages:
- sync
.sync-template:
stage: sync
image: $SYNC_IMAGE
variables:
SYNC_IMAGE: registry.cn-qingdao.aliyuncs.com/kubernetesloong64/git-loong64:v2.54.0-debian
SOURCE_URL: https://github.com/kubernetes-loong64
DEST_USER: gitlab-ci-token
DEST_HOST: gitlab.xuxiaowei.com.cn
DEST_GROUP: kubernetes-loong64
before_script:
- git config --global user.name "${GITLAB_USER_NAME:-CI Sync Bot}"
- git config --global user.email "${GITLAB_USER_EMAIL:-ci-sync@xuxiaowei.com.cn}"
- export DEST_REPO="${DEST_REPO:-$SOURCE_REPO}"
script:
- |
echo "==> Syncing ${SOURCE_REPO} -> ${DEST_REPO}"
git clone --mirror "${SOURCE_URL}/${SOURCE_REPO}.git"
cd "${SOURCE_REPO}.git"
git push --mirror "https://${DEST_USER}:${DEST_TOKEN}@${DEST_HOST}/${DEST_GROUP}/${DEST_REPO}.git"
echo "==> Done: ${SOURCE_REPO} -> ${DEST_REPO}"
tags:
- 3A5000-docker
sync-buildx:
extends: .sync-template
variables:
SOURCE_REPO: buildx-loong64
sync-github:
extends: .sync-template
variables:
SOURCE_REPO: .github
DEST_REPO: github