Tanggung jawab Build Script dan Build Server


12

Saya memerlukan beberapa klarifikasi tentang tanggung jawab Build Script dan Build Server.

Saya membaca beberapa artikel di internet tentang integrasi dan pembangunan berkelanjutan. Termasuk

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 Antseperti 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?


4
Sebanyak ini adalah pertanyaan yang bagus, dan akan dijawab (saya akan nanti ketika saya punya waktu, dan itu belum dijawab): Anda harus benar-benar kembali dan mendapatkan klarifikasi dari penasihat Anda. Bingung setelah bercakap-cakap dengan seseorang yang akan mengevaluasi kinerja Anda adalah resep untuk bencana, dan indikasi bahwa mereka tidak berkomunikasi secara memadai dengan Anda (atau Anda tidak mendengarkan secara aktif, tetapi tampaknya bukan itu masalahnya) sini).
Steven Evers

2
@ Angelo.Hannes Saya pikir Anda telah mencapai semua poin utama. Bisakah Anda mengklarifikasi dengan lebih spesifik apa yang membuat Anda bingung?
M. Dudley

@SteveEvers Nah, seperti yang baru saja membaca beberapa pengantar untuk topik ini, saya ingin memperluas pengetahuan saya tentang itu. Saya kemudian akan mengambil topik ini lagi. Karena itu saya sangat menghargai jawaban Anda.
Angelo.Hannes

@ M.Dudley Seperti yang saya katakan, saya tidak yakin tanggung jawab mana yang pergi ke mana. Dan apakah skrip pembuatan untuk seluruh perangkat lunak adalah cara yang tepat untuk dilakukan.
Angelo.Hannes

Jawaban:


14

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.