Menulis file Yaml di pipa skrip Jenkins

Saya memiliki file yaml yang merupakan awal dari skrip-as-kode pengujian kinerja Neoload;

name: TestFile
servers:
- name: myserver
  host: myhost.world.com
  scheme: https

Saya ingin Jenkins membuat file yaml berdasarkan variabel dari langkah/pipa sebelumnya. Saya telah melihat writeYaml dapat melakukan apa yang saya inginkan, dan sepertinya cukup mudah digunakan. Inilah yang saya miliki sejauh ini;

script{
    def map = ['name':'TestFile]
    map.put('name','myserver')
    writeYaml, file: filename, data: map
}

Def berfungsi dengan baik, tetapi saya tidak dapat memahami sintaksis untuk menambahkan bagian 'server' ke objek peta. Dengan apa yang saya miliki di atas, saya hanya mendapatkan nama: server saya di file.

Saya memang mencoba;

map.put("servers", new String[] {"name","myserver"})

Tapi itu tidak dapat dikompilasi ("nama" token tak terduga), saya berasumsi karena saya mencoba menggunakan bahasa yang salah dalam pipa skrip.

Saya juga menghargai bahwa saya bisa melakukan hal yang setara dengan 'menulis baris' ke file untuk menghasilkan YAML, tetapi file ini menjadi jauh lebih rumit jadi saya lebih suka menggunakan pendekatan berbasis objek ini.


person Slimy43    schedule 26.02.2020    source sumber
comment
Apakah Anda tidak melewatkan tanda kutip di def map = ['name':'TestFile]? Bisakah Anda mencoba def map = ['name':'TestFile'] saja?   -  person sumid    schedule 09.06.2021


Jawaban (1)


Mengingat Peta Groovy yang sudah ada dengan pasangan nilai kunci ['name': 'TestFile], Anda dapat menambahkan kunci dan nilai ke Peta ini dalam sintaksis yang berbeda.

Untuk menghasilkan YAML yang Anda inginkan, Anda memerlukan kunci tambahan servers dengan array satu elemen (- menandakan tipe Array di YAML). Elemen anggota array itu harus berupa Map lain dengan semua pasangan nilai kunci Anda.

Anda ingin menambahkan ['servers': [['name': 'myserver', 'host': 'myhost.world.com', 'scheme': 'https']]] ke peta Anda. Ada tiga [] dalam sintaks itu; yang pertama dan ketiga berarti Peta dan yang kedua berarti Daftar. servers adalah kunci di Peta pertama Anda, dan nilainya adalah Daftar. Satu-satunya elemen Daftar adalah peta pasangan nilai kunci. Tiga pasangan nilai kunci membentuk peta dalam elemen Daftar tersebut.

Dengan adanya dua sintaksis umum untuk menambahkan pasangan nilai kunci ke Peta, Anda dapat melakukan salah satu hal berikut:

map['servers'] = [['name': 'myserver', 'host': 'myhost.world.com', 'scheme': 'https']]

or

map.servers = [['name': 'myserver', 'host': 'myhost.world.com', 'scheme': 'https']]

untuk mencapai hasil yang diinginkan.

person Matt Schuchard    schedule 26.02.2020