Jenkins使用Dynamic Choice Parameter Groovy脚本定期构建失败

时间:2015-03-25 13:22:53

标签: groovy jenkins jenkins-plugins

我正在尝试使用Dynamic Choice Parameter插件在Jenkins中设置参数化构建。参数应该是作业工作目录(即/var/lib/jenkins/workspace/JobName/dirToScan/)目录中某些目录的名称。

可以通过以下方式完成下拉菜单中的项目:

def list = ['ls', "/path/to/dirToScan/"].execute().text.tokenize()

要访问正确的目录,我需要作业的名称,因为与执行作业时相反,执行此操作的目录不是/var/lib/jenkins/workspace/[Job Name]/目录,而是根目录{{ 1}}。 动态选择参数插件允许执行Groovy脚本来填充选择参数。使用提供的答案here我能够检索作业名称。所以我在Jenkins的参数化构建菜单中构建下拉菜单的最终代码如下所示:

/

单击Jenkins作业中的Build with Parameters链接将打开包含下拉菜单的页面(我将其命名为Restore),并且实际建筑效果也很好!

但现在我的问题出现了: 如果将作业设置为定期构建,则构建将失败,并显示以下控制台输出:

def build = Thread.currentThread().toString()
def regexp= ".+?/job/([^/]+)/.*"
def match = build  =~ regexp
def jobName = match[0][1]

def list = ['ls', "/var/lib/jenkins/workspace/" << jobName << "/dirToScan"].execute().text.tokenize()

如果我只是以“正常”方式填充下拉菜单,就不会发生这种情况,例如:Started by timer Building in workspace /var/lib/jenkins/workspace/JobName FATAL: Null value not allowed as an environment variable: Restore java.lang.IllegalArgumentException: Null value not allowed as an environment variable: Restore at hudson.EnvVars.put(EnvVars.java:356) at hudson.model.StringParameterValue.buildEnvironment(StringParameterValue.java:56) at hudson.model.ParametersAction.buildEnvVars(ParametersAction.java:88) at hudson.model.AbstractBuild.getEnvironment(AbstractBuild.java:929) at hudson.plugins.mercurial.MercurialSCM.checkout(MercurialSCM.java:533) at hudson.scm.SCM.checkout(SCM.java:484) at hudson.model.AbstractProject.checkout(AbstractProject.java:1270) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:531) at hudson.model.Run.execute(Run.java:1750) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:89) at hudson.model.Executor.run(Executor.java:240) Finished: FAILURE

这可能是插件中的错误,或者如果Jenkins自己启动作业,则无法执行Groovy代码。这个问题只发生在定期构建中,而不是我自己开始构建它并且它独立于下拉菜单中的所选选项。有没有人知道如何解决这个问题?

0 个答案:

没有答案