2017-03-31 1 views
4

Groovy에서 * .yaml 파일을 쓰거나 수정하는 가장 좋은 방법은 무엇입니까?groovy로 jenkins에 yaml 파일 작성

제 젠킨스 파이프 라인 작업 내에서 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 플러그인에는 yaml 파일을 오브젝트로 읽는 readYaml과 그리고 객체를 가져 와서 yaml 파일로 쓰는'writeYaml'. –

답변

0

yaml 파일에서 버전을 업데이트하기 만하면 내용을 읽고 문자열을 바꾸고 파일에 다시 쓸 수 있습니다.

한다고 가정 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