谷歌还是比必应要好用一点。

在前公司,我根据主流的git flow 给团队搭建了一套devops流程,运行在 docker & k8s上。

在现代devops流程中,一般推荐使用git分支名或者git tag作为镜像的tag名


在实际操作中, 我遇到了一个流程阻塞。

根据git flow的规范,我们一般会打出feature/xxx,fix/issue234,release/x.x.x 这样的分支名, 当然我们还会产生x.y.z 这样的git tag名。

但是docker build -t产生镜像tag的规定,除了-,_,.镜像tag不允许使用其他特殊字符

A tag name must be valid ASCII and may contain lowercase and uppercase letters, digits, underscores, periods and dashes. A tag name may not start with a period or a dash and may contain a maximum of 128 characters

我当时是让团队小伙伴不要打出含有 /的分支名, 如上图中所示的release-1.0.0等,但是我始终觉得不是一个常规操作,因为这破坏了一以贯之的git flow命名规范,而且需要在团队内做技术性约束。


当git flow分支命名与docker image tag分支有冲突,该怎么办?

面向谷歌编程,面向Stackoverflow编程啊。

策略1: 脚本手动替换

在Gitlab-ci中,我们使用:

docker build . -t image_name:$CI_COMMIT_REF_NAME | sed 's/[^a-zA-Z0-9]/-/g')

CI_COMMIT_REF_NAME: The branch or tag name for which project is built.

策略2: gitlab-ci内置变量CI_COMMIT_REF_SLUG

CI_COMMIT_REF_SLUG :CI_COMMIT_REF_NAME in lowercase, shortened to 63 bytes, and with everything except 0-9 and a-z replaced with -. No leading / trailing -. Use in URLs, host names and domain names.

很明显,**CI_COMMIT_REF_SLUG **是正解,后续在devops中针对git branch/git tag 可采用此ci变量。

本文基本没啥技能点, 单纯记录在Devops路上的一个小插曲,前人栽树后人乘凉;

顺便表明一个态度,希望在流畅、自然的开发流程上深耕。

后续大家有意的话,可以结合 《基于容器和K8s的 Devops 探索和落地实践》 了解一个常规/有效/可落地的Devops流程。

引用链接

[1] Stackoverflow: https://stackoverflow.com/questions/62905914/turning-a-git-branch-name-into-a-valid-docker-image-tag

[2] CI_COMMIT_REF_SLUG: https://docs.gitlab.com/ee/ci/variables/predefined_variables.html

[3] 基于容器和K8s的 Devops 探索和落地实践: https://www.cnblogs.com/JulianHuang/p/13676065.html

最新文章

  1. TJI读书笔记15-持有对象
  2. MAC OS VPN使用指南
  3. 【C语言】pragma
  4. 安装SqlServer2008时相关问题
  5. maven,spring,mybatis集成错误
  6. Hibernate整合Struts2时报错
  7. 【C++ Primer每天刷牙】一间 迭代器
  8. CentOS6.4安装go环境
  9. oracle 建表空间->创建用户并把表空间分配给用户->给用户授权->导库
  10. iOS中 项目开发易错知识点总结 韩俊强的博客
  11. [C++]数组指针,数组引用,函数指针
  12. 浅谈Linux下CPU利用率和CPU负载【转】
  13. mpvue构建小程序(步骤+地址)
  14. MDC的使用(Mapped Diagnostic Context)的使用
  15. B样条
  16. 如何获取ABBYY FineReader 12注册码-激活码-序列号
  17. Jmeter响应中中文乱码解决办法
  18. hive 定时加载分区
  19. 解决 openpyxl 垂直分页符和水平分页符同时添加的问题
  20. oracle基础教程oracle客户端详解

热门文章

  1. 分组概念&贪婪与懒惰
  2. 教你搞懂Jenkins安装部署!
  3. url传参和解决中文乱码
  4. symfony中模板生成路径两种方式
  5. video.js视频播放插件
  6. 深入HTML5第二天
  7. 一文让你掌握软件测试工程师SQL面试题
  8. 一文让你彻底理解SQL关联子查询
  9. layui左右移动tab标签模版
  10. windows中抓包命令,以及保存为多个文件的方法