将 GitHub 仓库一键迁移至 CNB,支持迁移代码和 Release。
git push --mirror 镜像推送所有分支和标签除在流水线中使用外,也可以通过 docker run 直接调用本插件:
docker run --rm \
-e TZ=Asia/Shanghai \
-e PLUGIN_CNB_TOKEN='cnb_xxxx' \
-e PLUGIN_GITHUB_REPO='owner/repo' \
-e PLUGIN_CNB_SLUG='your-cnb-org-slug' \
-e PLUGIN_GITHUB_TOKEN='ghp_xxxx' \
-e PLUGIN_CNB_REPO_NAME='your-cnb-repo-name' \
-e PLUGIN_MIGRATE_RELEASES='true' \
-e PLUGIN_VISIBILITY='private' \
docker.cnb.cool/dailybo/github2cnb:latest
注意:
cnb_token为必填参数,需包含repo-contents:r和repo-code:rw权限。对于公开仓库,github_token可省略。
在 .cnb.yml 流水线配置中使用:
main:
push:
- stages:
- name: migrate-to-cnb
image: docker.cnb.cool/your-org/github-to-cnb:latest
settings:
github_repo: owner/repo
cnb_slug: your-cnb-org-slug
# cnb_token: cnb_xxxx # 可选,跨组织操作时需提供
# github_token: ghp_xxxx # 可选,私有仓库必填
# cnb_repo_name: custom-name # 可选,默认使用 GitHub 仓库名
# migrate_releases: true # 可选,默认 true
# visibility: private # 可选,默认 private
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
github_repo | string | 是 | - | GitHub 仓库地址,格式 owner/repo |
cnb_slug | string | 是 | - | CNB 组织 slug |
cnb_token | string | Docker 必填 | 流水线自动提供 | CNB 访问令牌,跨组织操作时需指定 |
github_token | string | 私有仓库必填 | - | GitHub Personal Access Token |
cnb_repo_name | string | 否 | GitHub 仓库名 | CNB 仓库名称 |
migrate_releases | boolean | 否 | true | 是否迁移 Release |
visibility | string | 否 | private | 仓库可见性 |
owner/repo。示例:
settings:
github_repo: "octocat/hello-world"
示例:
settings:
cnb_slug: "my-org"
CNB_TOKENrepo-contents:r 和 repo-code:rw 权限。流水线中自动提供,无需手动指定;Docker 直接运行时必填;跨组织操作时需提供具有目标组织权限的 Token。示例:
settings:
cnb_token: "cnb_xxxxxxxxxxxx"
示例:
settings:
github_token: "ghp_xxxxxxxxxxxx"
示例:
settings:
cnb_repo_name: "my-custom-repo"
示例:
settings:
migrate_releases: false
private 或 public。仅在创建新仓库时生效,已有仓库不会被修改。示例:
settings:
visibility: "public"
迁移完成后,会输出以下流水线变量:
##[set-output github2cnb-repo-url=https://cnb.cool/my-org/my-repo]
##[set-output github2cnb-repo-slug=my-org/my-repo]
可在后续步骤中通过 @{github2cnb-repo-url} 和 @{github2cnb-repo-slug} 引用。
main:
push:
- stages:
- name: migrate-to-cnb
image: docker.cnb.cool/your-org/github-to-cnb:latest
settings:
github_repo: octocat/hello-world
cnb_slug: my-org
migrate_releases: true
visibility: public
exports:
github2cnb-repo-url: GITHUB2CNB_REPO_URL
github2cnb-repo-slug: GITHUB2CNB_REPO_SLUG
- name: echo result
script:
- echo "GITHUB2CNB_REPO_URL $GITHUB2CNB_REPO_URL"
- echo "GITHUB2CNB_REPO_SLUG $GITHUB2CNB_REPO_SLUG"
git clone --bare + git push --mirror 镜像推送代码遇到 API 错误或参数缺失时,插件会退出并返回非零状态码,导致流水线失败。
MIT License