为了从branchName获取最新的提交,我们运行以下代码:
branchName
treeMapData = git(branch: branchName, credentialsId: credential, url: "${gitLabServer}/${projectName}/${repo}.git")
根据我们的工作流程,确保每次提交都有一个标记我们希望构建代码,只有当提交被标记。如何检索最新提交的标记名称?
qyyhg6bp1#
我们可以去仓库拿标签以防Jenkins还没拿到。
git fetch --tags
我们需要找到一个指向特定commit的标签,在我们的例子中是HEAD。幸运的是,git中有一个方便的命令可以让我们这样做。
HEAD
git tag --points-at HEAD
使用awk,我们可以将其转换为groovy可以伪造的输出。
awk
awk NF
因此,我们首先检查推入的分支是否为master分支
if (env.BRANCH_NAME == 'master') {
封锁
lock('publish master') {
执行git标记shell脚本并将其分配给TAG
TAG = sh ( returnStdout: true, script: 'git fetch --tags && git tag --points-at HEAD | awk NF' ).trim()
如果存在标记,请执行某些操作!
if (TAG) { stage('Deploy Prod') { echo "Deploying to Prod ${TAG}" } }
希望这能回答你的问题,或者至少能让你走上正确的轨道。
dfddblmv2#
以防万一有人需要这个(像我一样):你需要从一个标记而不是从一个提交来构建。2然后env.TAG_NAME就可以使用了,你可以写这样的代码:
if(env.TAG_NAME) { ... }
2条答案
按热度按时间qyyhg6bp1#
我们可以去仓库拿标签以防Jenkins还没拿到。
我们需要找到一个指向特定commit的标签,在我们的例子中是
HEAD
。幸运的是,git中有一个方便的命令可以让我们这样做。使用
awk
,我们可以将其转换为groovy可以伪造的输出。因此,我们首先检查推入的分支是否为master分支
封锁
执行git标记shell脚本并将其分配给TAG
如果存在标记,请执行某些操作!
希望这能回答你的问题,或者至少能让你走上正确的轨道。
dfddblmv2#
以防万一有人需要这个(像我一样):你需要从一个标记而不是从一个提交来构建。2然后env.TAG_NAME就可以使用了,你可以写这样的代码: