在Groovy中編寫/修改* .yaml文件的最佳方法是什麼?在jenkins中使用groovy編寫yaml文件
我想修改我的jenkins管道作業中的yaml文件中維護的版本。隨着readYaml
我可以得到的內容,但我怎麼能再寫回來?
我想到的一種方法是在文件上執行sed
。但我認爲那不是很準確。
在Groovy中編寫/修改* .yaml文件的最佳方法是什麼?在jenkins中使用groovy編寫yaml文件
我想修改我的jenkins管道作業中的yaml文件中維護的版本。隨着readYaml
我可以得到的內容,但我怎麼能再寫回來?
我想到的一種方法是在文件上執行sed
。但我認爲那不是很準確。
如果您只需要更新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
}
的Pipeline Utility Steps插件有readYaml
和writeYaml
與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
的可能的複製[常規負載YAML文件修改和它在一個文件中寫入(http://stackoverflow.com/questions/34668930/groovy-load-yaml-file-modify-and-write-it在文件中) – Rao
恕我直言,它不是重複的,因爲它不等同於Jenkins插件的readYaml方法 – dhpizza
最近jenkins插件名爲「Pipeline utility steps」,它包含'readYaml'(將yaml文件讀入對象),和'writeYaml',它將一個對象作爲yaml文件寫下來。 –