Saya memerlukan beberapa klarifikasi tentang tanggung jawab Build Script dan Build Server.
Saya membaca beberapa artikel di internet tentang integrasi dan pembangunan berkelanjutan. Termasuk
- Kunci F5 Bukan Proses Bangun
- The Build Server: Monitor Jantung Proyek Anda
- Build Harian Adalah Teman Anda
Dan saya berbicara dengan penasihat saya tentang proses pembuatan perangkat lunak kami. Karena dia sangat berpengalaman, saya memercayai pernyataannya, tetapi saya bingung.
Seperti yang saya pahami, dari penelitian saya (dan tolong perbaiki saya di sini, karena itu yang saya tanyakan) idealnya adalah sebagai berikut:
- setiap proyek memiliki skrip build-nya
- skrip ini membangun proyek
- skrip ini memastikan dependensi dibangun sebelumnya
Karena dependensi bisa menjadi proyek lain, dengan skrip build mereka sendiri hierarki mirip pohon muncul. Mungkin ada skrip build teratas yang membangun semua proyek dan aplikasi.
Namun tanggung jawab Build Server adalah:
- lihat repositori
- memicu membangun
- tes pemicu dan alat QA lainnya
- membuat artefak tersedia
Ini dapat dipicu secara manual, setiap malam atau kapan pun repositori berubah
Tujuan penasihat saya adalah, seperti yang saya pahami, bahwa satu skrip pembuatan adalah cara yang tidak fleksibel dan tidak dapat dipertahankan (Selain fakta bahwa akan sangat lama untuk membuatnya untuk basis kode legacy kami). Build Server juga harus memelihara dependensi, misalnya untuk menggunakan dependensi yang lebih lama ketika membuatnya baru gagal. Dan khusus karena Ant
seperti subjek konkret, tidak dapat membangun semua jenis teknologi berbeda yang digunakan dalam basis kode, dan tidak dapat mempertahankan dependensi.
Bisakah Anda menjelaskan tujuan, dan menjelaskan tanggung jawabnya?
sumber
Jawaban:
Hal-hal ini bersifat orthogonal:
The membangun script adalah mekanisme yang, setelah doa di pohon sumber baru diperiksa-out, menghasilkan membangun lengkap target diperlukan dan dependensi. Ini bisa berupa 'buat semua' jika Anda punya makefile, atau permintaan yang sesuai dari MSBuild, Ant, Maven atau Scons. Jika Anda memiliki hierarki dependensi yang kompleks atau proyek terkait, 'skrip pembuatan' Anda mungkin merupakan file tingkat atas yang memanggil masing-masing dari mereka, memeriksa keberhasilan saat Anda melanjutkan.
Skrip build adalah hanya satu skrip yang mungkin banyak - checkout, build, test, package - tetapi Anda bisa memiliki mekanisme all-in-one yang dikontrol oleh par baris perintah - tergantung pada lingkungan Anda.
Build server , atau lebih tepatnya server integrasi kontinu , adalah mekanisme otomatisasi yang bertanggung jawab untuk penjadwalan / pemicu, pemantauan dan pelaporan checkout -> build -> test -> package -> stage -> deploy pipeline. Anda dapat menggunakan cron / Penjadwal Tugas jika Anda tidak memiliki yang lebih canggih, tetapi ada banyak alat luar biasa sekarang seperti Jenkins, Cruise Control, TeamCity, dll.
Penting bahwa Anda dapat memohon build tanpa menggunakan server CI, dalam hal sibuk / offline / tidak dapat dijangkau / tidak tersedia, jadi oleh karena itu logika untuk mendapatkan build / test / apa pun yang dilakukan perlu berada di luar Sistem CI, tetapi tidak dapat dimasuki olehnya, diparameterisasi berdasarkan cabang / tipe bangunan / versi / arsitektur, dll.
sumber