我们在 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/