这个项目提供了一套工具,用于将 Docker 镜像、GitHub 仓库和 GitHub Releases 同步到 CNB (Cloud Native Builder) 平台。
CNB 平台的 API 需要通过 MY_CNB_TOKEN 或 CNB_TOKEN 进行访问授权。你可以在 CNB 个人中心 - 访问令牌 创建新的访问令牌,并在流水线或本地导出环境变量,例如:
export MY_CNB_TOKEN="your_token_here"
或者
export CNB_TOKEN="your_token_here"
推荐优先使用
MY_CNB_TOKEN,脚本会自动优先读取该变量。
以下权限是保证所有同步功能正常运行的最小授权,请在创建令牌时勾选:
repo-code:读写(推拉 Git 仓库)repo-basic-info:读写(查询或修改仓库基础信息)repo-manage:读写(新建或修改仓库设置)repo-contents:读写(管理分支、标签、提交、Release 信息)group-resource:读写(创建或管理组织、子组织)group-manage:读写(管理组织成员及组织设置)docker.cnb.cool)python sync_git.py --github-repo <GitHub仓库> --cnb-repo-path <CNB仓库路径> [选项]
参数说明:
--github-repo: GitHub 仓库路径,例如 AlistGo/docs--cnb-repo-path: CNB 完整仓库路径,例如 gither/Mirrors/AlistGo/docs--description: 仓库描述(可选)--license: 许可证名称,默认为 "MIT"(可选)--visibility: 仓库可见性,可选值为 "public" 或 "private",默认为 "public"--push-mode: 推送模式,可选值为 "safe" 或 "mirror",默认为 "mirror"
--mirror 完整镜像推送示例:
# 基本用法
python sync_git.py --github-repo AlistGo/docs --cnb-repo-path gither/Mirrors/AlistGo/docs
# 设置私有仓库
python sync_git.py --github-repo AlistGo/docs --cnb-repo-path gither/Mirrors/AlistGo/docs --visibility private --description "Mirror of AlistGo docs"
# 使用安全推送模式
python sync_git.py --github-repo AlistGo/docs --cnb-repo-path gither/Mirrors/AlistGo/docs --push-mode safe
python clean_docker.py --repo <CNB仓库路径> --session <CNBSESSION> --csrfkey <CSRFKEY> [--tag <标签名>] [--filter <过滤模式>]
参数说明:
--repo: CNB 仓库路径,例如 gither/mirrors/debian--session: CNB 会话 Cookie(CNBSESSION)--csrfkey: CNB CSRF 密钥--tag: 要删除的具体标签名称(与 --filter 互斥)--filter: 用于批量删除的标签过滤模式(与 --tag 互斥)--yes: 跳过确认提示,直接执行删除操作(谨慎使用)示例:
# 删除单个标签
python clean_docker.py --repo gither/mirrors/debian --session <your-session> --csrfkey <your-csrfkey> --tag latest
# 批量删除匹配模式的标签
python clean_docker.py --repo gither/mirrors/debian --session <your-session> --csrfkey <your-csrfkey> --filter "-amd64"
# 跳过确认直接删除标签
python clean_docker.py --repo gither/mirrors/debian --session <your-session> --csrfkey <your-csrfkey> --tag latest --yes
注意:
--yes 参数可以跳过确认提示,直接执行删除操作,请谨慎使用python sync_docker.py --image <镜像名称> --cnb-repo <CNB仓库路径> [选项]
参数说明:
--image: 要同步的 Docker 镜像,例如 library/debian--cnb-repo: CNB 仓库路径,例如 gither/mirrors/debian(也可通过环境变量 CNB_REPO_SLUG 设置)--limit: 要同步的标签数量,默认为 3--platforms: 要同步的平台列表,默认为 ["linux/amd64", "linux/arm64", "linux/386"]--workers: 最大并行下载数,默认为 4示例:
python sync_docker.py --image library/debian --cnb-repo gither/mirrors/debian --limit 5
python sync_release.py --github-repo <GitHub仓库> --cnb-repo <CNB仓库路径> [选项]
参数说明:
--github-repo: GitHub 仓库路径,例如 tdp/paper-editor--cnb-repo: CNB 仓库路径,例如 tdp/paper-editor--limit: 要同步的最新 release 数量(可选)--workers: 最大并行下载数,默认为 4--only-latest-tag: 仅同步最新的标签(可选)功能特点:
示例:
# 同步指定数量的最新 release
python sync_release.py --github-repo tdp/paper-editor --cnb-repo tdp/paper-editor --limit 10
# 仅同步最新的 release
python sync_release.py --github-repo tdp/paper-editor --cnb-repo tdp/paper-editor --only-latest-tag
# 使用更多并行下载线程
python sync_release.py --github-repo tdp/paper-editor --cnb-repo tdp/paper-editor --workers 8
CNB_REPO_SLUG: CNB 仓库路径(用于 Docker 镜像同步)CNB_TOKEN: CNB API 访问令牌(用于 GitHub Releases 同步和 GitHub 仓库同步)CNB_DOMAIN: CNB 域名,默认为 "cnb.cool"项目包含 .cnb.yml 配置文件,用于设置 VSCode 开发环境。该配置定义了基于 Docker 的开发环境,包括所需的服务和启动任务。
GitHub 仓库同步流程:
Docker 镜像清理流程:
--yes 参数跳过确认)Docker 镜像同步流程:
GitHub Releases 同步流程: