通过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

yml
name: Sync to CNB
on: [push]
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
<span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Sync to CNB Repository
    <span class="token key atrule">run</span><span class="token punctuation">:</span> <span class="token punctuation">|</span><span class="token scalar string">
      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</span>


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