Apa itu alat build?

130

Selama 4 tahun terakhir, saya telah memprogram dengan Eclipse (untuk Java), dan Visual Studio Express (untuk C #). IDE yang disebutkan sepertinya selalu menyediakan setiap fasilitas yang mungkin diminta oleh programmer (terkait dengan pemrograman, tentu saja).

Akhir-akhir ini saya telah mendengar tentang sesuatu yang disebut "alat membangun". Saya mendengar mereka digunakan hampir di semua jenis perkembangan dunia nyata. Apa sebenarnya mereka? Masalah apa yang mereka dirancang untuk dipecahkan? Kenapa saya tidak pernah membutuhkannya dalam empat tahun terakhir? Apakah mereka semacam garis perintah yang dilucuti IDE?

Gaurang Agrawal
sumber

Jawaban:

117

Apa itu alat bangun?

Alat Bangun adalah program yang mengotomatiskan pembuatan aplikasi yang dapat dieksekusi dari kode sumber (mis. .Apk untuk aplikasi android). Bangunan menggabungkan kompilasi, menautkan dan mengemas kode menjadi bentuk yang dapat digunakan atau dieksekusi.

Pada dasarnya membangun otomatisasi adalah tindakan scripting atau otomatisasi berbagai tugas yang dilakukan pengembang perangkat lunak dalam kegiatan sehari-hari mereka seperti:

  1. Mengunduh dependensi.
  2. Kompilasi kode sumber menjadi kode biner.
  3. Kemasan kode biner itu.
  4. Menjalankan tes.
  5. Penempatan ke sistem produksi.

Mengapa kami menggunakan alat bangun atau otomasi bangunan?

Dalam proyek kecil, pengembang akan sering secara manual meminta proses pembuatan. Ini tidak praktis untuk proyek yang lebih besar, di mana sangat sulit untuk melacak apa yang perlu dibangun, dalam urutan apa dan dependensi apa yang ada dalam proses pembangunan. Menggunakan alat otomasi memungkinkan proses pembangunan menjadi lebih konsisten.

Berbagai alat pembuatan tersedia (Penamaan hanya sedikit):

  1. Untuk java - Ant, Maven, Gradle.
  2. Untuk .NET framework - NAnt
  3. c # - MsBuild.

Untuk bacaan lebih lanjut, Anda dapat merujuk tautan berikut:

1. Membangun otomatisasi

2. Daftar perangkat lunak otomasi bangunan

Terima kasih.

Ritesh Gune
sumber
17

Bangun alat adalah alat untuk mengelola dan mengatur bangunan Anda, dan sangat penting di lingkungan di mana ada banyak proyek, terutama jika mereka saling terhubung. Mereka melayani untuk memastikan bahwa di mana berbagai orang bekerja di berbagai proyek, mereka tidak merusak apa pun. Dan untuk memastikan bahwa ketika Anda membuat perubahan, itu juga tidak merusak apa pun.

Alasan Anda belum pernah mendengarnya sebelumnya adalah karena Anda belum pernah bekerja di lingkungan komersial sebelumnya. Ada banyak hal yang mungkin belum Anda temui di lingkungan komersial, terutama jika Anda bekerja di rumah peranti lunak.

Seperti yang dikatakan orang lain, Anda telah menggunakannya, tetapi Anda tidak harus mempertimbangkannya, karena Anda mungkin telah bekerja dengan cara yang berbeda dengan cara kerja komersial yang biasa.

Schroedingers Cat
sumber
10

Alat Bangun biasanya dijalankan pada baris perintah, baik di dalam IDE atau benar-benar terpisah darinya.

Idenya adalah untuk memisahkan pekerjaan kompilasi dan pengemasan kode Anda dari pembuatan, debugging, dll.

Alat bangun dapat dijalankan pada perintah atau di dalam IDE, keduanya dipicu oleh Anda. Mereka juga dapat digunakan oleh alat integrasi berkesinambungan setelah memeriksa kode Anda dari repositori dan ke mesin build yang bersih.

make adalah alat perintah awal yang digunakan di lingkungan * nix untuk membangun C / C ++.

Sebagai pengembang Java, alat bangun yang paling populer adalah Ant dan Maven. Keduanya dapat dijalankan dalam IDE seperti IntelliJ atau Eclipse atau NetBeans. Mereka juga dapat digunakan oleh alat integrasi terus menerus seperti Cruise Control atau Hudson.

Duffymo
sumber
6
Sekarang, Gradle juga digunakan secara luas
asura
Bukan dari tempat saya duduk. Saya tidak mengetahui Gradle, jadi terima kasih atas referensi.
duffymo
@duffymo Bisakah Anda jelaskan pada baris terakhir. Apa itu Integrasi Berkelanjutan? Bagaimana mereka terkait dengan alat membangun?
Quazi Irfan
4

Bangun alat umumnya untuk mengubah kode sumber menjadi binari - itu mengatur kode sumber, mengatur bendera kompilasi, mengelola dependensi ... beberapa dari mereka juga mengintegrasikan dengan menjalankan unit test, melakukan analisis statis, membuat dokumentasi.

Eclipse atau Visual Studio juga membangun sistem (tetapi lebih dari sebuah IDE), dan untuk studio visual itu adalah msbuild yang mendasari untuk mengurai file proyek studio visual di bawah tenda.

Asal usul semua sistem build sepertinya seperti 'make' yang terkenal.

Ada sistem bangun untuk berbagai bahasa:

  1. C ++: make, cmake, premake
  2. Java: semut + ivy, maven, gradle
  3. C #: msbuild

Biasanya, membangun sistem baik menggunakan bahasa khusus domain hak milik (make, cmake), atau xml (semut, maven, msbuild) untuk menentukan membangun. Tren saat ini adalah menggunakan bahasa skrip nyata untuk menulis skrip build, seperti lua untuk premake, dan asyik untuk gradle, keuntungan menggunakan skrip adalah ia jauh lebih fleksibel, dan juga memungkinkan Anda untuk datang dengan seperangkat standar API (seperti build DSL).

Baiyan Huang
sumber
1

Proses Bangun adalah Proses mengkompilasi kode sumber Anda untuk kesalahan menggunakan beberapa alat membangun dan membuat membangun (yang merupakan versi proyek yang dapat dieksekusi). Kami (terutama pengembang) melakukan beberapa modifikasi dalam kode sumber dan memeriksa kode tersebut agar proses pembuatan terjadi. Setelah proses build itu memberikan dua hasil: 1. Baik membangun PASSES dan Anda mendapatkan versi proyek Anda yang dapat dieksekusi (Build sudah siap). 2. Gagal dan Anda mendapatkan kesalahan tertentu dan build tidak dibuat.

Ada berbagai jenis proses pembuatan seperti: 1. Build Nightly 2. Build gated 3. Build integrasi berkelanjutan dll.

Alat Bangun membantu dan mengotomatiskan proses pembuatan bentukan.

* Jadi dalam Short Build adalah Versi Perangkat Lunak dalam format pra-rilis yang digunakan oleh tim Pengembang atau Pengembangan untuk mendapatkan kepercayaan diri terhadap hasil akhir dari Produk mereka dengan terus memantau Produk mereka dan menyelesaikan masalah apa pun lebih awal selama proses pengembangan. *

Prakash
sumber
Bisakah Anda ceritakan sedikit lebih banyak tentang membangun Nightly, Gated, dan Continuous Integration?
Quazi Irfan
@iamcreasy Saya telah menambahkan jawaban lain sehubungan dengan pertanyaan Anda untuk penjelasan tentang build yang berbeda. Anda dapat menemukan penjelasan di bawah ini. Saya juga menambahkan beberapa tautan untuk membantu Anda memahami proses pembuatan dengan cara yang lebih baik.
Prakash
1

Ini adalah berbagai jenis proses yang digunakan untuk menyelesaikan pembangunan.

1. Membangun Integrasi Berkelanjutan:Dalam hal ini sebagian besar pengembang melakukan check-in kode mereka dan tepat setelah check-in mereka membangun inisiat untuk membuat perubahan baru-baru ini, jadi kita harus tahu apakah perubahan yang dilakukan oleh pengembang telah bekerja atau tidak tepat setelah check-in dilakukan. Ini lebih disukai untuk proyek yang lebih kecil atau komponen proyek. Dalam kasus di mana banyak tim dikaitkan dengan proyek atau ada no besar. pengembang yang mengerjakan proyek yang sama skenario ini menjadi sulit untuk ditangani seolah-olah ada 'n' tidak. check-in dan build gagal pada titik-titik tertentu menjadi sangat sulit untuk dilacak apakah semua kerusakan telah terjadi karena satu masalah atau dengan beberapa masalah sehingga jika masalah yang lebih lama tidak ditangani dengan benar maka menjadi sangat sulit untuk melacak nanti cacat yang terjadi setelah perubahan itu.

2. Gated check-in builds: Dalam jenis check in build dimulai tepat setelah check in dilakukan menjaga perubahan dalam set rak. Dalam hal ini jika build berhasil daripada check-in shelve-set dilakukan, jika tidak maka tidak akan dilakukan ke Team Foundation Server. Ini memberikan gambaran yang sedikit lebih baik dari pembangunan integrasi berkelanjutan karena hanya check-in yang sukses yang diizinkan untuk berkomitmen.

3. Bangun malam: Ini juga disebut sebagai Bangun terjadwal. Dalam hal ini kami menjadwalkan build untuk berjalan pada waktu tertentu untuk membangun perubahan. Semua perubahan yang sebelumnya tidak dikomit dari build terakhir dibangun selama proses build ini. Ini dilakukan ketika kita ingin check-in berkali-kali tetapi tidak ingin build setiap kali kita memeriksa kode kita sehingga kita dapat memiliki waktu atau periode yang tetap di mana kita dapat memulai pembangunan untuk membangun kode check-in.

Rincian lebih lanjut tentang bangunan ini dapat ditemukan di lokasi di bawah ini.

Gated-check in Builds

Membangun Integrasi Berkelanjutan

Nightly Builds

Prakash
sumber
0

Anda telah menggunakannya - IDE adalah alat bantu pembuatan. Untuk baris perintah Anda dapat menggunakan hal-hal seperti make.

Orang-orang menggunakan alat-alat baris perintah untuk hal-hal seperti membangun malam - jadi di pagi hari dengan mabuk, programmer telah menyadari bahwa kode yang dia mainkan dengan perpustakaan terbaru tidak berfungsi!

Ed Heal
sumber
11
Biasanya IDE bukan alat build, melainkan diintegrasikan dengan / memanggil alat build. Misalnya Visual Studio normaly memanggil MSBuild.
Justin
-1

"... sangat sulit untuk melacak apa yang perlu dibangun" - Alat Bangun tidak membantu dengan itu semua. Anda perlu tahu apa yang ingin Anda bangun. (Dikutip dari jawaban Ritesh Gun)

"Saya dengar mereka digunakan hampir di semua jenis pengembangan dunia nyata" - Untuk beberapa alasan, pengembang perangkat lunak suka bekerja di perusahaan besar. Mereka tampaknya memiliki arahan kerja yang lebih tidak jelas untuk setiap individu yang bekerja di sana.

"Kenapa saya tidak pernah membutuhkannya dalam empat tahun terakhir". Mungkin karena Anda adalah programmer yang terampil.

Semu, meta. Saya pikir alat membangun tidak memberikan manfaat nyata sama sekali. Itu hanya ada di sana untuk menambah rasa aman yang timbul dari praktik perusahaan yang buruk, kurangnya arah - kepemimpinan arsitektur perangkat lunak yang buruk mengarah pada pengetahuan aktual yang buruk tentang proyek. Anda tidak harus menggunakan alat bangun (untuk pengujian) dalam proyek Anda. Untuk melakukan pengujian acak dengan kurangnya pengetahuan tentang proyek perangkat lunak tidak memberikan bantuan sama sekali.

Anda seharusnya tidak pernah menambahkan sesuatu ke proyek tanpa mengetahui tujuannya, dan bagaimana itu akan bekerja dengan komponen lainnya. Komponen dapat berfungsi secara terpisah, tetapi tidak bekerja bersama. (Ini adalah tanggung jawab arsitek perangkat lunak yang saya asumsikan).

Bagaimana jika 4-5 komponen ditambahkan ke proyek. Anda menambahkan komponen ke-6. Bersama dengan komponen tambahan pertama, itu mungkin mengacaukan segalanya. Tidak ada otomatis yang akan membantu mendeteksi itu.

Tidak ada jalan pintas selain berpikir berpikir.

Lalu ada unduhan otomatis dari repositori. Mengapa Anda ingin melakukan itu? Anda perlu tahu apa yang Anda unduh, apa yang Anda tambahkan ke proyek. Bagaimana Anda mendeteksi perubahan dalam versi repositori? Kamu harus tahu. Anda tidak dapat "otomatis" apa pun.

Bagaimana jika kita menguji sepeda dan kereta bayi ditutup matanya dengan tongkat dan dipukul secara acak dengannya. Itu tampaknya menjadi gagasan pengujian alat bangun.

Maaf, tidak ada pintasan https://en.wikipedia.org/wiki/Scientific_method dan https://en.wikipedia.org/wiki/Analysis

Leo
sumber
Jawaban Anda sangat bias dari sudut pandang C di mana ini merupakan masalah besar. Build tools sangat penting untuk hal yang lebih kompleks daripada menjalankan compiler (meskipun begitu, gcc adalah b-word yang masif) dan manajemen dependensi dengan deklarasi dependensi yang ketat adalah anugerah. Hanya karena Anda tidak menggunakannya tidak berarti ini adalah konsep yang buruk. Jika Anda hanya menggunakan skrip bash untuk membangun barang, itu juga alat bangun - hanya saja bukan yang sangat bagus. Jika Anda mengkompilasi dengan tangan atau melalui ide secara eksklusif maka semoga tuhan bersama Anda untuk membangun kompleks dan berulang di berbagai sistem.
RecursiveExceptionException