2015-07-20 113 views
5

我有幾個參數設置的jenkins作業,我在工作區中有一個JSON文件,必須使用通過jenkins傳遞的參數進行更新。使用Jenkins在工作區中寫入json文件

例子:

我有我會不會從用戶誰觸發作業輸入以下參數:

  • 環境(考慮用戶選擇「ENV2」)
  • 文件名(考慮用戶保持默認值)

我下奔跑在我的工作區中的JSON文件/ job.json具有以下內容:

{ 
    environment: "ENV1", 
    filename: "abc.txt" 
} 

現在無論用戶在觸發作業之前給出的值是否必須在job.json中被替換。

因此,當用戶觸發作業時,job.json文件應該是:

{ 
    environment: "ENV2", 
    filename: "abc.txt" 
} 

請注意,其中有要更新的JSON的環境價值。我試過https://wiki.jenkins-ci.org/display/JENKINS/Config+File+Provider+Plugin插件。但是我無法找到任何有關參數化值的幫助。

請提出配置此插件或建議任何其他可以滿足我的目的的插件。

回答

7

配置文件提供程序插件不允許您將參數傳遞給配置文件。你可以用任何腳本語言解決你的問題。我最喜歡的方法是使用Groovy plugin。打了一個複選框「執行系統Groovy腳本」並粘貼以下腳本:

import groovy.json.* 

// read build parameters 
env = build.getEnvironment(listener) 
environment = env.get('environment') 
filename = env.get('filename') 

// prepare json 
def builder = new JsonBuilder() 
builder environment: environment, filename: filename 
json = builder.toPrettyString() 

// print to console and write to a file 
println json 
new File(build.workspace.toString() + "\\job.json").write(json) 

輸出樣本:

{ 
    "environment": "ENV2", 
    "filename": "abc.txt" 
} 
+0

對我來說似乎很好。讓我試一試。 –

+0

它對我真的很好。感謝分享。 –

0

我會保持簡單。 Windows批處理文件或shell腳本(取決於操作系統)將讀取環境值並打開JSON文件並進行更改。

+0

我有一個在我的腦海。但希望看到一個最簡單和更好的方法。 –