我们在Jenkins中有一个评估过的Groovy脚本: - ;
但是构建失败并出现错误[EnvInject] - [ERROR] - [EnvInject] - [ERROR] - 注入env变量作为构建换行时出现问题:null 17:04:06完成:失败。 另外,如何从Jenkins shell脚本调用变量以获取上次成功的构建日期。 -Thanks
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 env variable
答案 0 :(得分:1)
简单的答案是,在第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")
行在我的环境中无效,甚至取代了#34; 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)
}
希望你能找到这方面的帮助,虽然我发现自你发布问题已经有一段时间了。
亲切的问候
答案 1 :(得分:1)
谢谢Nick !!
我添加了以下"执行系统groovyscript"作为Jenkins工作的一部分,它起作用了: import jenkins.model.Jenkins
`。 def item = Jenkins.instance.getItem(" Job")
def ff=item.getLastSuccessfulBuild()
println ff.getTime().format("yyyy-MM-dd")
def temp = ff.getTime().format("yyyy-MM-dd")
import hudson.model.*
def build = Thread.currentThread().executable
def pa = new ParametersAction([
new StringParameterValue("LAST_BUILD_DATE",temp)
])
build.addAction(pa)`