moh*_*het 3 git groovy git-tag jenkins-groovy jenkins-pipeline
要从 获取最新提交branchName,我们运行以下代码:
treeMapData = git(branch: branchName, credentialsId: credential, url: "${gitLabServer}/${projectName}/${repo}.git")
Run Code Online (Sandbox Code Playgroud)
根据我们的工作流程,确保每次提交有一个标签
我们想要构建代码,只有当提交被标记时。
如何检索最新提交的标签名称?
我们可以从 repo 中获取标签,以防 Jenkins 还没有。
git fetch --tags
Run Code Online (Sandbox Code Playgroud)
我们需要找到指向特定提交或HEAD在我们的例子中的标签。幸运的是,git 中有一个方便的命令可以让我们做到这一点。
git tag --points-at HEAD
Run Code Online (Sandbox Code Playgroud)
使用awk我们可以将其转换为 groovy 可以伪造的输出。
awk NF
Run Code Online (Sandbox Code Playgroud)
所以我们,首先我们检查推送的分支是否是 master
if (env.BRANCH_NAME == 'master') {
Run Code Online (Sandbox Code Playgroud)
把它锁起来
lock('publish master') {
Run Code Online (Sandbox Code Playgroud)
执行git tag shell脚本并赋值给TAG
TAG = sh (
returnStdout: true,
script: 'git fetch --tags && git tag --points-at HEAD | awk NF'
).trim()
Run Code Online (Sandbox Code Playgroud)
如果标签存在,做点什么!
if (TAG) {
stage('Deploy Prod') {
echo "Deploying to Prod ${TAG}"
}
}
Run Code Online (Sandbox Code Playgroud)
希望这能回答你的问题,或者至少会让你走上正轨。