有这么一种场景,Jenkins 打包成docker镜像,镜像 tag 是根据 git commit id 为 tag 的。有时候开发没提交代码,只是更改了公共的组件包。Jenkins 构建发布到 k8s 的时候。k8s 并没有发布,可能是镜像的 ID,也就是k8s的 yaml 文件没有变更。shell 执行 kubectl 去发布的时候不会发布。还是原来的pod。这样有啥好办法解决呢?
通过Jenkins 内置变量 BUILD_NUMBER 加上构建次数即可解决。
env.GIT_COMMIT = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim()
#获取git commit id
env.COMMIT_MSG = sh(script: "git log -1 --pretty=%B", returnStdout: true).trim()
#获取git 提交信息
env.imageTag = env.GIT_COMMIT + env.BUILD_NUMBER
#env.GIT_COMMIT + env.BUILD_NUMBER 赋值给 env.imageTag
docker build -t xxxx:${imageTag} .
#引用imageTag
感谢 I.G.V、DLY