因为pipeline的方式中,不支持插件来打tag,需要写脚本来打tag。
一开始在不了解git tag的情况下,思考的是想保证源码的一致性,我得获取到git check时的版本号,打tag的时候以这个版本号来打。所以一开始面临的问题:
下载代码的git revision怎么拿(因为同样,如果pileline脚本不是从git中获取,而是在Jenkins直接编写,调用GitSCM插件的话,git系统变量里面就拿不到了。只有作为Jenkinsfile里面下载的时候才能获取到)
备注:后来知道了,本地执行tag命令时,其实可以不带git revision,默认就是本地分支的最新commit。但是获取这个Git revision还是有用的,至少可以在构建通知邮件中展示。
node('master') {
checkout([$class: 'GitSCM', branches: [[name: 'branch1']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CleanBeforeCheckout']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ssh-key', url: 'git@0.0.0.0:test/gradle-ci.git']]])
def BUILD_VERSION = version()
if (BUILD_VERSION) {
echo "Building version ${BUILD_VERSION}"
}
def GIT_REVISION = GIT_Revision()
if (GIT_REVISION) {
echo "GIT_REVISION: ${GIT_REVISION}"
}
stage ('BAT'){
echo "${BUILD_VERSION}"
echo "${GIT_REVISION}"
}
stage ('TAG'){
bat """
git tag -d release-${BUILD_VERSION}.${BUILD_NUMBER}
git config --global user.email "qa-ci@xxx.cn"
git config --global user.name "qa-ci"
git tag -a "release-${BUILD_VERSION}.${BUILD_NUMBER}" -m "CI Autobuild ${BUILD_VERSION}.${BUILD_NUMBER}" ${GIT_REVISION}
git push origin "release-${BUILD_VERSION}.${BUILD_NUMBER}"
"""
}
}
//从源码的VERSION.md中自动获取版本号
您暂时无权查看此隐藏内容!
//需要注意的是,因为获取的文件并非本地文件,所以需要将check代码的步骤放在变量使用处之前。另外,因为check代码的步骤需要独立于stage,这样才能被全局获取到。