1 环境介绍

  • 私有部署 jenkins 2.121.2
  • 私有部署 GitLab 2.3.0

2 前提知识

本教程不会详细介绍构建参数,适合有一定构建基础的同学来看。

3 Jenkins构建参数

3.1 设置源码管理Name属性

  1. 在Name中输入一个字符串,例如demo
  2. 如果你看不到Name字段,那么应该点击高级按钮,默认该字段是隐藏的

图片描述

3.2 增加构建步骤执行shell

如果不配置git email 和 name, 下一步向GitLab的对应仓库中创建标签时,会报错。

git config --global user.email "your email"
git config --global user.name "your name"

图片描述

3.3 增加构建后的步骤:Git Publisher

如果没有Git Publisher,那么你需要安装该插件。

  • 勾选 Push Only If Build Successds
  • 勾选 Force Push
  • Tag to push 我一般会设置和docker镜像一样的标签,这样如果要创建hotfix分支,只需要知道镜像标签,就可以知道Git中对应的Tag号是什么。
  • Taget remote name 要和源码管理中的Name字段值一样即可

图片描述

3.4 GitLab中查看结果

可以看到,tag已经创建成功。

图片描述

4 总结

Jenkins构建镜像成功后,镜像的标签和GitLab中该仓库的标签可以一一对应。

这样一个项目可以不用太多的分支,如果线上项目需要立即上线一个hotfix,那么就可以从镜像的的tag追溯到GitLab中的tag, 然后可以很方便的从该tag上创建hotfix分支。

之前我也尝试过在docker构建过程中,将本次构建的commitId写入docker环境变量中。但是每次构建commitId一般都是不一样的,这一层构建基本上都没办法使用缓存,而且由于机器性能不足,每次构建十分耗时。

索性,我就不把commmitId写入Docker镜像中。Docker构建的镜像tag写入GitLab还有个好处,即使Jenkins挂了,构建历史还是会安稳的保存在GitLab中。

如果安装了Build+Timestamp+Plugin插件,可以在git tag 的message填入。"$BUILD_TIMESTAMP $BUILD_DISPLAY_NAME", 那么tag就会带有Jenkins构建事件。


端端
3.8k 声望1.1k 粉丝