Jenkins从另一个版本推送git标签

时间:2018-09-13 08:46:23

标签: git jenkins jenkins-plugins git-tag jenkins-groovy

我的挑战是这样的: 我有一个以“ A1”作业开头的管道。

管道在作业“ A5”处结束测试。

“ A6”作业不是管道的一部分。它将A1的工件部署到生产中。 A6具有A1内部版本号的参数。 我希望它使用A1内部版本号从A1中获取GIT_COMMIT env变量,然后使用A6内部版本号将git标签添加到提交中,以便我可以使用git监视部署的工件的所有变化。

现在,我使用以下常规脚本设法解决了A1的GIT_COMMIT:

import hudson.model.AbstractBuild
import hudson.model.FreeStyleProject
import hudson.model.ParametersAction
import hudson.model.StringParameterValue
import hudson.util.StreamTaskListener
import jenkins.model.Jenkins

buildNumber = build.buildVariableResolver.resolve("buildNumber") //Take the parameter for A1 build number
FreeStyleProject job = Jenkins.instance.getItem("A1")
a1build = job.getBuild(buildNumber) //Take the A1 build object
a1Variables = a1build.getEnvironment(new StreamTaskListener())
gitCommit = a1Variables.get("GIT_COMMIT")
println "A1 Git commit: $gitCommit"

但是后来我被困住了。我想到了两种解决方案:

  1. 使用groovy进行标记-看起来太复杂了。找不到如何从groovy脚本中使用作业git凭据,或者如何从脚本中执行git命令。

  2. 将GIT_COMMIT从A1导出到A6上的新环境变量,以供另一个git插件或shell脚本使用。

我尝试通过两种方式执行此操作,但结果为null:

第一:

AbstractBuild myBuild = Thread.currentThread().executable
myBuild.environments.add(0, Environment.create(new EnvVars("A1_GIT_COMMIT", gitCommit)))

第二:

AbstractBuild myBuild = Thread.currentThread().executable
def pa = new ParametersAction([
        new StringParameterValue("A1_GIT_COMMIT", gitCommit)
])
myBuild.addAction(pa)

很高兴能以普通的方式或其他方式解决问题的任何解决方案。

0 个答案:

没有答案