簡體   English   中英

Groovy腳本中的Jenkins變量

[英]Jenkins variable in groovy script

我想將“ $ WORSKPACE”變量用於jenkins腳本調用的常規文件。 但是在SO上找到的所有解決方案都失敗了:

// KO : Wks = build.getEnvironment(listener).get('WORKSPACE')
// KO : Wks = "${WORKSPACE}"
/* KO :
def thr = Thread.currentThread()
def build = thr?.executable
def envVarsMap = build.parent.builds[0].properties.get("WORKSPACE")
*/

// KO : def build = this.getProperty('binding').getVariable('build')
// KO : Wks = "%WORKSPACE%"

我得到的消息:腳本不允許使用groovy.lang.GroovyObject方法setProperty java.lang.String java.lang.Object(JenkinsHelper.name)。 管理員可以決定是批准還是拒絕此簽名。

對設置為允許Jenkins腳本工作的代碼或選項有任何想法嗎?

我的案例:

文件JenkinsHelper.groovy:

    class JenkinsHelper {
     def init(String sln) { 
      Wks = "%WORKSPACE%"
     }
    }
return new JenkinsHelper();

從詹金斯腳本調用:

def helper = load 'C:/.../test.groovy'
helper.init("Mon SLN")

謝謝 :)

您應該使用groovy風格的環境變量格式,而不是Windows風格的格式:

class JenkinsHelper {
 def init(String sln) { 
  Wks = "${WORSKPACE}"
 }
}

這是由Jenkins進程內腳本批准引起的,以保護可能執行的惡意腳本。

如果您是管理員,請在“ 管理Jenkins” >“ 配置系統” >“ 全局管道庫”中注冊管道代碼,以避免這種情況。

參考文獻:

  1. https://jenkins.io/doc/book/pipeline/shared-libraries/#global-shared-libraries-有關編寫庫的詳細信息。
  2. https://jenkins.io/doc/book/managing/script-approval

暫無
暫無

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

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