博主头像
Wood Chen

万事如意

  • 累计撰写 252 篇文章
  • 累计创建 213 个标签
  • 累计收到 12 条评论

目 录CONTENT

把github项目同步到cnb, 构建国内可拉取docker image

wood
2025-09-19 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

通过github actions把仓库同步到cnb, 然后在cnb构建docker镜像, 这样国内机器拉取很快, 30几M的总体命令执行速度大概10s
Pasted image 20250919084228.png

通过本教程, 可以在一次配置的情况下, 之后全部自动同步代码, 自动构建. 并且代码在github和cnb都有, github适合做为主备份, 避免因cnb导致代码丢失. 是比较稳妥的方案.

CNB方

先新建cnb账号

https://cnb.cool/

可以微信登录

登录后, 可以新建组织, 不像github默认把用户名作为个人组织, 这里可以自定义.

不过需要注意, 目前只能添加两个组织, 如果是短的, 还需要验证相关域名, 来表示你真的和这个域名有关, 比如com, cn, org, net这些后缀的域名都是可以的.

新建一个cnb仓库

跟github同名就行了. 新建完不用初始化.

新建cnb的token

https://cnb.cool/profile/token

如图一样配置就行了.

Pasted image 20250919082802.png

记下token

Github方

github添加一个github actions

我命名为sync-cnb.yml

name: Sync to CNB
on: [push]

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      
      - name: Sync to CNB Repository
        run: |
          docker run --rm \
            -v ${{ github.workspace }}:${{ github.workspace }} \
            -w ${{ github.workspace }} \
            -e PLUGIN_TARGET_URL="https://cnb.cool/组织名/仓库名.git" \
            -e PLUGIN_AUTH_TYPE="https" \
            -e PLUGIN_USERNAME="cnb" \
            -e PLUGIN_PASSWORD=${{ secrets.GIT_PASSWORD }} \
            -e PLUGIN_FORCE="true" \
            tencentcom/git-sync

Pasted image 20250919083021.png

github添加密钥

就是上面在cnb生成的token

名称: GIT_PASSWORD
值: {token}

Pasted image 20250919083105.png

本地

新建一个.cnb.yml

这是告诉cnb需要怎么构建

同名非同名 二选一即可, 我一般用同名.

Pasted image 20250919085103.png

main:
  push:
    - services:
        - docker
      stages:
        # 同名镜像构建&推送
        - name: docker build
          script: docker build -t ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}:latest .
        - name: docker push
          script: docker push ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}:latest
        # 非同名镜像构建&推送
        - name: docker build
          script: docker build -t ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/<image_name>:latest .
        - name: docker push
          script: docker push ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/<image_name>:latest

把代码推送到github

本地推送
⬇️
sync-cnb.yml运行
⬇️
代码推送到cnb
⬇️
cnb构建docker镜像

Pasted image 20250919083636.png

Pasted image 20250919083658.png

Pasted image 20250919083717.png

Pasted image 20250919083733.png

拉取cnb docker镜像

新建token(私有仓库)

拉取也比较简单, 我这是私有仓库, 所以新建一个token, 全权限.

Pasted image 20250919083843.png

配置拉取

如此即可

Pasted image 20250919083946.png

评论区