Haruskah skrip deploy menjadi artefak dari build?

13

Ini adalah proyek web yang ditulis dalam Java.

Jadi, saya menulis skrip build dan deploy. Untuk membuat build, saya menggunakan semut. Pembangunan berkelanjutan dilakukan dengan Jenkins.

Membangun menghasilkan 3 artefak yang berbeda:

  1. File perang
  2. Zip dengan layout
  3. Zip dengan gambar

Sejauh ini, sangat bagus, tapi sekarang saya perlu menulis skrip deploy, yang seharusnya:

  • Menyebarkan perang (artefak 1) ke kucing jantan yang berjalan di server 1
  • Tempatkan artefak 2 di server 1 dalam direktori tertentu
  • Tempatkan artefak 3 di server 2 dalam direktori tertentu

Jadi saya berbicara dengan kolega saya dan dia berkata bahwa kita juga harus membuat artefak (mungkin deploy.xml ) yang menyebarkan artefak ini ketika ditempatkan di server yang benar.

Jadi akan ada skrip lain, yaitu:

  • Unduh artefak jenkins
  • scp ke setiap server dan letakkan deploy.xml di sana
  • panggil deploy.xml dari jarak jauh

Yang membuat saya sedikit tidak nyaman adalah tindakan memiliki deploy.xml sebagai artefak build. Motivasi di balik ini adalah untuk dapat membuat penyebaran tanpa perlu memiliki akses ke repositori VCS, sehingga membangun akan mandiri, yaitu, setiap bangunan bisa masuk ke produksi hanya dengan apa yang dihasilkan oleh Jenkins.

Di mana skrip penempatan harus ditempatkan? Haruskah mereka hanya di VCS atau haruskah mereka membangun artefak juga?

Edison Gustavo Muenz
sumber
pertanyaan ini bagus / itu membuat kami ingin plus-satu / berharap saya bisa menjawab
amara

Jawaban:

6

Pengalaman saya adalah bahwa segala sesuatu yang dapat diotomatisasi seharusnya. Jika Anda dapat menggambarkannya sebagai langkah 1, langkah 2, .... maka itu harus berupa skrip. Jika skrip dapat dibuat secara otomatis untuk menyertakan info bangunan tertentu (misalnya tag revisi), maka itulah yang harus Anda lakukan. Ini bukan demi menjadi malas, tetapi demi menjadi dapat diprediksi dan direproduksi .

Catatan di bawah: Anda juga harus memiliki skrip pemulihan yang dihasilkan secara otomatis yang dapat digunakan oleh siapa saja di tim jika skrip penyebaran yang dihasilkan secara otomatis menjadi gila dan membuat server produksi terputus.

Peter Rowell
sumber
3

Semua yang ditulis Peter Rowell, benar, selain itu saya akan:

Untuk menyebarkan file skrip

  • jika itu ditulis oleh seseorang, itu harus di kontrol versi.
  • jika itu dibuat dan dapat dihasilkan lagi, biasanya tidak masuk ke kontrol versi.

Untuk proses penyebaran:

  • Jika Anda ingin artefak Anda mandiri dan jika itu dapat dilakukan dengan mudah, maka file tersebut bisa menjadi artefak build, yang berarti itu dikemas dengan hasil build sedemikian rupa sehingga dapat digunakan untuk penyebaran.
  • Di sisi lain, penyebaran menjadi semakin kompleks sehingga cepat atau lambat Anda akan memerlukan program khusus (baca beberapa kode) yang melakukan penyebaran dan pembuatan artefak Jenkins sudah tidak lagi lengkap.

Ini agak tergantung pada proses Anda dan bagaimana Anda ingin menangani penyebaran.

Peter Kofler
sumber