jenkins - 使用 Jenkins 评估 Groovy 脚本时出现 EnvInject 错误

标签 jenkins groovy environment-variables jenkins-plugins jenkins-pipeline

我们在 Jenkins 中有一个经过评估的 Groovy 脚本,如下:- ;

但是构建失败并出现错误 [EnvInject] - [错误] - [EnvInject] - [错误] - 将环境变量作为构建包装注入(inject)时出现问题:null 17:04:06 完成:失败。 另外,我如何从 Jenkins shell 脚本调用变量来获取上次成功的构建日期。 -谢谢

def env = System.getenv()
def item = Jenkins.instance.getItem("")
 def  f=item.getLastFailedBuild()

 println f.getTime()

 def  ff=env['item.getLastSuccessfulBuild()]
  println ff.getTime().format("YYYY-MMM-dd HH:MM:SS")
  println ff.getTime().format("dd-MM-yyyy")

  def pa = new ParametersAction([new          StringParameterValue('PARAMETER_NAME', ff)]);

Thread.currentThread().executable.addAction(pa) println '脚本完成!\n环境变量

最佳答案

简单的答案是,在第 7 行,这里没有结束报价:

def ff=env['item.getLastSuccessfulBuild()]

但是,这并不是您的最后一个问题:

  • 我认为您不想使用 ff = env['item.getLastSuccessfulBuild()]']而只是一个简单的ff = item.getLastSuccessfulBuild()

  • 您需要包含以下导入行才能使用关联的类: import jenkins.model.Jenkins import hudson.model.ParametersAction import hudson.model.StringParameterValue

  • 线路 item = Jenkins.instance.getItem("Fastlane_Test")在我的环境中不起作用,甚至用现有的作业替换“FaSTLane_Test”。
    我已将其替换为 item = Jenkins.instance.getItemByFullName("Fastlane_Test") .

  • 此外,为了安全起见,您应该进行测试以确保 item为空

  • 最后,你错过了Thread.currentThread().executable.addAction(pa)吗?出线是有原因的吗?您需要使用它来将新参数添加到运行环境中。

以下代码应该是一个合理的起点,但请注意,我已经删除了行 def env = System.getenv()因为 env 没有在代码中的其他地方使用:

import jenkins.model.Jenkins
import hudson.model.ParametersAction
import hudson.model.StringParameterValue

def item = Jenkins.instance.getItemByFullName("Fastlane_Test")

if (item) {
    def  f=item.getLastFailedBuild()

    println f.getTime()

    def  ff=item.getLastSuccessfulBuild()
    println ff.getTime().format("YYYY-MMM-dd HH:MM:SS")
    println ff.getTime().format("dd-MM-yyyy")

    def pa = new ParametersAction([new StringParameterValue("LAST_GOOD", ff.getTime().toString())])
    Thread.currentThread().executable.addAction(pa)
}

希望您能找到帮助,尽管我发现您发布问题已经有一段时间了。

亲切的问候

关于jenkins - 使用 Jenkins 评估 Groovy 脚本时出现 EnvInject 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44058718/

相关文章:

docker - Dockerfile 中带有双星号的环境变量

jenkins - bitbucket-build-status-notifier-plugin 使用凭据和管道

jenkins - 如何获取 Jenkins Pipeline 构建以显示特定分支的更改历史记录(更改)

java - Maven - 在 Windows 7 上测试结束前陷入困境

Groovy GPars,启动的每个线程都需要索引

bash - 如何扩展包含文本和其他变量混合的变量?

java - 成功创建项目构建后,Jenkins 显示错误

jenkins - 使用 groovy 向 jenkins 作业添加附加参数

grails - 域类变量

kubernetes - 使用 Configmap 设置一组环境变量