Gitlab 实现push自动推送镜像
本博客系统是基于Hexo+NexT主题构建的,
并且内容托管于自建的Gitlab,
生成的文档等静态页面通过Pages进行展示,
为了加速每次的发布速度,
我自己构建了一个基于Hexo并且应用NexT主题的Docker镜像
chowrex/hexo-blog
- Docker Image | Docker Hub
因为Gitlab默认支持通过编写.gitlab-ci.yml文件实现自动CI/CD功能,
因此记录一下
创建DockerHub的AccessToken
使用个人账号登录DockerHub, 点击Account Settings,
左侧tab页切换到Security,
然后点击New Access Token, 创建私钥
填写名称, 权限建议RW即可
成功后如下图, 复制该Token, 如果页面关闭, 该Token将无法展示, 只能重新创建
获取CI模板
此处建议使用官方推荐的模板进行修改
lib/gitlab/ci/templates · master · GitLab.org / GitLab FOSS · GitLab
1 | # To contribute improvements to CI/CD templates, please follow the Development guide at: |
如上代码, 可见其中对于登录, 使用到了如下变量信息:
| 变量 | 描述 |
|---|---|
| CI_REGISTRY_USER | DockerHub的登录用户名, 我这里是chowrex |
| CI_REGISTRY_PASSWORD | DockerHub的密码/AccessToken, 上一节提取的结果 |
| CI_REGISTRY | DockerHub的目标仓库名称, 默认就是DockerHub, 可以不指定 |
| CI_REGISTRY_IMAGE | DockerHub的目标镜像名称, 我这里是chowrex/hexo-blog |
为Gitlab仓库添加变量
进入Gitlab的Web页面,
依次点击设置->CI/CD->变量->展开
点击添加变量
依次添加上面的各项变量, 密码记得勾选隐藏变量, 如下图
添加.gitlab-ci.yml文件
依次点击CI/CD->流水线, 右侧样例中,
找到Docker, 并点击使用模板
直接点击提交更改测试一下CI是否正常
点击CI/CD->作业->Status,
查看当前执行情况
提示构建失败
因为我的默认构建是运行在共享runner中, 即Docker Container中构建Docker image, 因此需要一些设置
修改.gitlab-ci.yml文件
1 | # This file is a template, and might need editing before it works on your project. |
增加CI_BUILD_ARGS变量, 并添加到Gitlab仓库中,
我这里是指定远程服务器链接
再次尝试, 任务可以正确执行完毕. 登录DockerHub, 镜像已更新