2017-03-31 45 views
4

Groovyで* .yamlファイルを作成/変更する最良の方法は何ですか?groovyを使用したjenkinsのyamlファイルを作成する

私のjenkinsパイプラインジョブ内のyamlファイルに保持されているバージョンを変更したいと思います。 readYamlでコンテンツを手に入れることができますが、もう一度書き直すにはどうすればいいですか?

私の頭に浮かぶのは、ファイルにsedをすることです。しかし、私はそれほど正確ではないと思う。

+0

可能な複製([グルーヴィーな負荷YAMLファイルを変更し、ファイルに書き込む] http://stackoverflow.com/questions/34668930/groovy-load-yaml-file-modify-and-write-it -in-a-file) – Rao

+0

IMHO JenkinsプラグインのreadYamlメソッド – dhpizza

+0

と同じではないので、重複していません。 "パイプラインユーティリティステップ"という名前の最近のjenkinsプラグインには、 'readYaml'(yamlファイルをオブジェクトに読み込む) 'writeYaml'はオブジェクトをとり、yamlファイルとして書き出します。 –

答えて

0

yamlファイルのバージョンを更新するだけであれば、コンテンツを読み込み、文字列を置き換えてファイルに書き戻すことができます。 src/test/resourcesがどのように見えるファイルversion.yaml含まれているとし

:例として

は、ここにこれを示しユニットテストだPipeline Utility StepsプラグインがreadYamlを持って

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

はと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 
関連する問題