Gitee Go 流水线构建镜像并推送到阿里云容器镜像服务 ACR

参考:

Gitee Go: https://gitee.com/features/gitee-go

阿里云容器镜像服务(ACR):https://cr.console.aliyun.com/

阿里云容器镜像服务设置

首先是阿里云这边,从 https://cr.console.aliyun.com/ 进去就能看见主页,开通服务后选择一个地区即可,一般是选择离自己最近的地区,这样网络好些,我这里就选择了杭州地区。

【个人版已经够用了,有需求的再考虑企业版】

image-20220811225331513

进入之后首先要做的是新建一个命名空间,这个很重要,后面会提到为什么。

image-20220811225441834

image-20220811225525320

新建的这个命名空间一定得是你 Gitee 的个人空间地址,例如本人的 Gitee 的个人空间地址是 caomeiyouren,那么阿里云这边的命名空间就也是 caomeiyouren!

【关于 Gitee 的个人空间地址从那看,请点击https://gitee.com/profile,然后切换到右边的个人空间地址 tab

image-20220811225750635

关于为什么要这么做,是因为 Gitee Go 的镜像构建存在问题,无法指定命名空间,会将Gitee 的个人空间地址作为阿里云的命名空间使用!

下面就是个失败的案例,会因为没有权限访问而失败。

image-20220811230051643

接下来则是关键一部,设置访问凭证,出于方便起见,设置为固定密码比较简单。

这里要注意的是,虽然登录名称是账号的用户名,但这里的密码并不是账号的主密码,是“容器镜像服务”单独的密码,可以随意设置,够安全即可。

image-20220811230201319

然后可以在终端进行测试,成功登录即为设置成功,失败的话请自行排查原因

sudo docker login --username=xxxxxxxxx registry.cn-hangzhou.aliyuncs.com

Gitee Go 流水线 设置

接下来就是 Gitee 这边的设置了,首先前往凭证管理页面设置Docker Registry凭证,按之前设置的填写即可。

image-20220811230717700

保存好凭证之后,前往项目的流水线配置页面,添加一个镜像构建任务

image-20220811230942898

仓库凭证选择之前填写好的阿里云仓库凭证即可,也可以直接填写账号密码

然后关于镜像 tag 需要重点说下,个人建议设置成NULL:v0.NULL的格式。

或者 NULL:vNULL ,直接用流水线号当版本号

原因是默认的NULLtag 完全无法体现这是哪个仓库的镜像,命名上不太友好。

当然了,后面的版本号就看个人喜好了,因为我这个项目还是开发阶段,所以版本号就设置成0.x了,看自己情况即可。

image-20220811230959937

这里再额外多说一句,不知道为什么,开启 Docker 缓存之后会导致 Gitee Go 没有权限写入缓存,所以这里就不开启缓存了,开启了会报错。

当成功打包之后,就可以在 Gitee Go 里看见参数信息中多了一个GITEE_DOCKER_IMAGE变量,这个就是这次打出来的包的名称,在需要地方直接 pull 下来部署即可

docker pull $GITEE_DOCKER_IMAGE

image-20220811231556155

此时你的阿里云仓库里应该有个同样名字的仓库,检查下版本号即可确认是否成功。

image-20220811231809317