2

我們在Jenkins下面有一個評估過的Groovy腳本: - ;使用Jenkins評估Groovy腳本EnvInject錯誤

但是構建失敗,出現錯誤[EnvInject] - [ERROR] - [EnvInject] - [ERROR] - 將env vars作爲構建包裝注入時發生問題:null 17:04:06 Finished:FAILURE。 另外我怎樣才能從詹金斯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

回答

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")並不在我的環境中工作,即使存在一個作業取代「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

謝謝尼克!

我添加了下面的「執行系統groovyscript」詹金斯作爲工作的一部分,它的工作: 進口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)`