簡體   English   中英

Groovy Postbuild 不在 Jenkins 上執行腳本

[英]Groovy Postbuild do not execute scripts on Jenkins

我寫了一個簡單的 groovy 腳本,但我不知道如何在 Jenkins 上執行它。

看看這個簡單的腳本:

String jbN = System.getenv('JOB_NAME')
println  jbN
println "Hello"

除了我至少會重溫“你好”。 劇本一去不復返。 我剛剛收到Build step 'Groovy Postbuild' marked build as failure(or success)

似乎沒有執行腳本。

編輯:

我沒有添加它,但我已經有了可以分析日志的腳本,所以我需要它來在構建后執行它。 問題比我想象的要大。 插件:“Scriptler”或“Groovy Plugin”不打印任何內容。 我試圖打印出的腳本:

String jbN = System.getenv('JOB_NAME')
println  jbN

我找到了解決方案:

腳本已執行但未打印到控制台輸出。 要將結果打印到控制台輸出,您需要編寫: manager.listener.logger.println("Some string")而不是println

為了縮短它,請執行以下操作:

logger = manager.listener.logger.&println // and call like this: logger("test log message")

編輯:添加記錄器示例並描述如何獲取環境變量(以及如何不獲取它們)並希望為人們節省一些調試時間。 . . 這是簡單但尷尬的事情。

要獲得工作區,您可以通過管理器對象。 像這樣:

manager.build.workspace

要獲得 env vars ,這不起作用

String jbN = System.getenv('JOB_NAME')

它顯示 jbN 為空。 這是有道理的,因為 JOB_NAME 不是實際的系統環境變量。

也不適用於獲取環境變量,拋出異常:

${manager.envVars['WORKSPACE']}

這確實可以讓 jenkins 工作“環境變量”,如 WORKSPACE、JOB_NAME、BUILD_NAME:

def build = Thread.currentThread().executable workspace = build.getEnvVars()["WORKSPACE"]

使用示例,您可以像這樣在工作區中調用 groovy 腳本:

evaluate(new File(manager.build.workspace.toString() + "/dirinworkspace/scriptname.groovy"))

在您的情況下,您想使用Groovy 插件而不是Groovy Postbuild 插件

Groovy Postbuild 插件用於更改構建結果( post build)。 Groovy 插件用於您的作業中運行簡單的 Groovy 腳本。

單擊Manage Jenkins --> Script Console

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM