Saya mencoba untuk mengubah alur kerja dasar proyek gaya lama saya menjadi pipa berdasarkan Jenkins. Saat menelusuri dokumen, saya menemukan ada dua sintaks berbeda bernama scripted
dan declarative
. Seperti declarative
rilis sintaks web Jenkins baru-baru ini (akhir 2016). Meskipun ada rilis sintaks baru, Jenkins masih mendukung sintaks skrip juga.
Sekarang, saya tidak yakin dalam situasi apa masing-masing dari kedua tipe ini akan menjadi pertandingan terbaik. Jadi akankah declarative
masa depan saluran pipa Jenkins?
Siapapun yang dapat berbagi pemikiran tentang kedua jenis sintaks ini.
jenkins
continuous-integration
jenkins-pipeline
Nayana Adassuriya
sumber
sumber
Jawaban:
Disalin dari https://jenkins.io/doc/book/pipeline/syntax/#compare
sumber
Hal lain yang perlu dipertimbangkan adalah pipelines deklaratif memiliki langkah script () . Ini dapat menjalankan pipeline skrip apa pun. Jadi, rekomendasi saya adalah menggunakan pipeline deklaratif, dan jika perlu, gunakan
script()
pipeline dengan skrip. Oleh karena itu, Anda mendapatkan yang terbaik dari kedua dunia.sumber
script
blok dalam pipeline deklaratif, Anda harus mempertimbangkan untuk menggunakan pipeline skrip sepenuhnya.Saya beralih ke deklaratif baru-baru ini dari skrip dengan agen kubernetes. Sampai pipeline deklaratif Juli '18 tidak memiliki kemampuan penuh untuk menentukan pod kubernetes. Namun dengan tambahan
yamlFile
langkah tersebut Anda sekarang dapat membaca templat pod Anda dari file yaml di repo Anda.Ini kemudian memungkinkan Anda menggunakan misalnya plugin kubernetes besar vscode untuk memvalidasi template pod Anda, kemudian membacanya ke Jenkinsfile Anda dan menggunakan kontainer dalam langkah-langkah sesuka Anda.
Seperti disebutkan di atas, Anda dapat menambahkan blok skrip. Contoh template pod dengan custom jnlp dan docker.
sumber
deklaratif tampaknya menjadi opsi yang lebih tahan masa depan dan yang direkomendasikan orang. itu satu-satunya yang dapat didukung oleh Visual Pipeline Editor. itu mendukung validasi. dan akhirnya memiliki sebagian besar kekuatan skrip karena Anda dapat kembali ke skrip di sebagian besar konteks. kadang-kadang seseorang muncul dengan kasus penggunaan di mana mereka tidak dapat melakukan apa yang ingin mereka lakukan dengan deklaratif, tetapi ini umumnya adalah orang-orang yang telah menggunakan skrip selama beberapa waktu, dan celah fitur ini kemungkinan besar akan tertutup pada waktunya.
konteks lebih lanjut: https://jenkins.io/blog/2017/02/03/declarative-pipeline-ga/
sumber
Dokumentasi Jenkins menjelaskan dan membandingkan kedua jenis dengan tepat.
Mengutip: "Scripted Pipeline menawarkan fleksibilitas dan ekstensibilitas yang luar biasa untuk pengguna Jenkins. Kurva pembelajaran Groovy biasanya tidak diinginkan untuk semua anggota tim tertentu, jadi Declarative Pipeline dibuat untuk menawarkan sintaks yang lebih sederhana dan lebih beropini untuk menulis Jenkins Pipeline.
Keduanya pada dasarnya adalah sub-sistem Pipeline yang sama di bawahnya. "
Baca lebih lanjut di sini: https://jenkins.io/doc/book/pipeline/syntax/#compare
sumber
Anda juga bisa merujuk ini. Bacaan yang sangat bagus -> https://e.printstacktrace.blog/jenkins-scripted-pipeline-vs-declarative-pipeline-the-4-practical-differences/ @ Szymon.Stepniak https://stackoverflow.com/users/ 2194470 / szymon-stepniak? Tab = profile
sumber
The deklaratif Pipeline jauh lebih unggul dengan Scripted Pipeline . Declarative Pipeline dapat mengeksekusi semua yang dapat dilakukan oleh Scripted Pipeline dengan menggunakan langkah skrip dan memiliki banyak fitur tambahan.
Selanjutnya, Declarative Pipeline memiliki dukungan untuk berbagai teknologi seperti Docker atau Kubernetes (lihat di sini ).
Pipa Deklaratif juga lebih terbukti di masa depan. Ini masih dalam pengembangan dan fitur baru seperti fitur Matrix yang baru diperkenalkan telah ditambahkan baru-baru ini pada akhir 2019.
tl; dr - Declarative Pipeline dapat melakukan apa saja yang dapat dilakukan Scripted Pipeline dan bahkan lebih.
sumber