2017-03-31 21 views
4

在Groovy中編寫/修改* .yaml文件的最佳方法是什麼?在jenkins中使用groovy編寫yaml文件

我想修改我的jenkins管道作業中的yaml文件中維護的版本。隨着readYaml我可以得到的內容,但我怎麼能再寫回來?

我想到的一種方法是在文件上執行sed。但我認爲那不是很準確。

+0

的可能的複製[常規負載YAML文件修改和它在一個文件中寫入(http://stackoverflow.com/questions/34668930/groovy-load-yaml-file-modify-and-write-it在文件中) – Rao

+0

恕我直言,它不是重複的,因爲它不等同於Jenkins插件的readYaml方法 – dhpizza

+0

最近jenkins插件名爲「Pipeline utility steps」,它包含'readYaml'(將yaml文件讀入對象),和'writeYaml',它將一個對象作爲yaml文件寫下來。 –

回答

0

如果您只需要更新yaml文件中的版本,那麼您可以只讀內容,做一個String替換並回寫到您的文件。

舉個例子,這裏有一個單元測試說明了這一點:

假設src/test/resources包含一個文件version.yaml,看起來像:

version: '0.0.1' 

anotherProperty: 'value' 

@Test 
void replaceVersion() { 
    File yaml = new File("src/test/resources/version.yaml") 
    println yaml.text 

    String newVersion = "2.0.0" 
    yaml.text = yaml.text.replaceFirst(/version: '.*'/, "version: '${newVersion}'") 
    println yaml.text 
} 
1

Pipeline Utility Steps插件有readYamlwriteYaml與YAML文件交互的步驟。默認情況下,writeYaml不會覆蓋您的文件,因此您必須先將其刪除。

def filename = 'values.yaml' 
def data = readYaml file: filename 

// Change something in the file 
data.image.tag = applicationVersion 

sh "rm $filename" 
writeYaml file: filename, data: data