Gitflow Branch与 Docker Image Tag 命名冲突怎么办?

开发 开发工具
在前公司,我根据主流的git flow 给团队搭建了一套devops流程,运行在 docker & k8s上。在现代devops流程中,一般推荐使用git分支名或者git tag作为镜像的tag名。

[[431613]]

本文转载自微信公众号「精益码农」,作者有态度的马甲。转载本文请联系精益码农公众号。

在前公司,我根据主流的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]编程啊。

01脚本替换

在Gitlab-ci流程中,我们使用shell脚本将特殊字符替换:

  1. docker build . -t image_name:$CI_COMMIT_REF_NAME | sed 's/[^a-zA-Z0-9]/-/g'
  1. CI_COMMIT_REF_NAME: The branch or tag name for which project is built. 

02gitlab-ci内置变量CI_COMMIT_REF_SLUG

可能Gitlab-ci早就关注到这个问题, 在9.0 给出了一个CI_COMMIT_REF_SLUG变量。

  1. 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[2] 是最优解,完美规避了gitflow branch和Docker image tag的命名冲突。

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

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

 

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

 

责任编辑:武晓燕 来源: 精益码农
相关推荐

2024-10-18 09:55:50

RedisHash数据

2024-10-09 17:06:52

RedisHash哈希表

2021-12-09 11:46:53

DockerIPLinux

2020-12-18 09:23:41

KubernetesDocker

2010-05-24 18:32:16

SVN中tag bra

2021-01-04 10:02:17

DockerLoaded plug操作系统

2019-10-12 09:50:46

Redis内存数据库

2018-01-28 20:39:39

戴尔

2022-07-05 11:48:47

MySQL死锁表锁

2020-12-03 06:18:04

磁盘Docker容器

2009-11-03 08:56:02

linux死机操作系统

2024-04-22 08:17:23

MySQL误删数据

2022-05-19 08:01:49

PostgreSQL数据库

2017-02-21 13:11:43

SDN网络体系SDN架构

2022-12-19 11:31:57

缓存失效数据库

2010-05-24 18:15:34

SVN中Branch和

2019-05-23 10:13:03

ARM华为芯片

2010-08-18 10:07:37

NATPAT

2015-10-22 09:09:59

BAT投资VC

2010-04-20 08:56:53

点赞
收藏

51CTO技术栈公众号