Wikipedia memberikan ringkasan yang cukup bagus dari sebagian besar istilah ini. Inilah pendapat saya tentang mereka:
Build automation mengotomatiskan bagaimana perangkat lunak dibangun alih-alih menggunakan kompiler secara manual. Ini akan dicapai melalui alat seperti misalnya Make atau Ant .
Otomasi penyebaran mengambil perangkat lunak buatan Anda dan menyebarkan atau menginstalnya pada sistem pengujian atau produksi.
Integrasi berkelanjutan berarti memiliki proses otomatis untuk membangun perangkat lunak Anda secara berkelanjutan saat pengembang memeriksa kode, dan menjalankan tes unit untuk memastikan kode tersebut masih berfungsi. Misalnya, setiap 15 hingga 30 menit server mungkin bangun, pindai VCS untuk check-in baru, lalu perbarui dan bangun proyek jika ada perubahan. Selain melakukan langkah kompilasi, ini juga merupakan peluang besar untuk menjalankan pengujian unit otomatis dan pemeriksaan kualitas kode .
Pengiriman kontinu adalah kombinasi dari semua konsep sebelumnya di mana pembuatan perangkat lunak juga digunakan untuk sistem pengujian, secara opsional dengan pengujian yang dilakukan dan laporan yang dihasilkan.
Paling tidak, Anda harus memiliki otomatisasi pembuatan, yaitu semacam skrip pembuatan. Itu memungkinkan Anda untuk mengklik satu tombol atau mengeluarkan satu perintah untuk membangun proyek Anda. Manfaatnya adalah mengurangi kesalahan dari langkah-langkah yang berjalan secara manual. Lingkungan build yang kompleks mungkin melibatkan pembuatan kode (pikirkan DAO dari konfigurasi, kode antarmuka seperti JAXB ), kompilasi kode, pengemasan, penyesuaian metadata, dll. Dengan banyak hal yang perlu dilakukan, Anda memerlukan daftar periksa: mengapa tidak membuat daftar periksa menjadi: skrip build Anda, dan gunakan alat untuk menjalankannya? Ini mengurangi kesalahan dan memberikan konsistensi.
Selanjutnya adalah CI: ini benar - benar baik tetapi tidak sepenuhnya diperlukan. Ini membantu mengidentifikasi masalah awal. Jika Anda memiliki beberapa pengembang yang memeriksa kode sepanjang hari dan mungkin tidak menyinkronkan ruang kerja mereka sendiri terus-menerus, ada risiko bahwa perubahan mereka akan saling mengganggu. Saya merujuk khusus untuk kesalahan kode statis, bukan konflik kontrol versi. Server pembangun CI akan mengurangi risiko ini.
Akhirnya kami memiliki langkah penyebaran. Idenya di sini adalah untuk menghemat waktu dan mengurangi kesalahan dari penggunaan perangkat lunak secara manual. Sama seperti membangun otomatisasi, ada seratus cara untuk mengacaukan penyebaran perangkat lunak. Saya secara pribadi tinggal lembur di kantor untuk memperbaiki masalah penyebaran manual pada banyak kesempatan ketika kita membutuhkan sistem yang berfungsi untuk pelanggan yang datang di lokasi besok. Mengotomatiskan banyak sistem menimbulkan lebih banyak risiko: alih-alih satu sistem mungkin macet atau mengalami kesalahan aneh, kini kami memiliki banyaksistem yang bisa salah. Namun, risiko itu jauh lebih rendah daripada seseorang yang kehilangan langkah pada daftar periksa atau mengeluarkan perintah yang salah dan mengacaukan penyebaran. Jika Anda beruntung, Anda dapat dengan mudah mengembalikan cadangan DB dan memulai kembali, jika Anda beruntung kesalahan dapat menyebabkan sistem berfungsi dengan tidak benar. Apakah ini cacat perangkat lunak? Apakah teknisi tidak mengatur konfigurasi dengan benar? Ini membutuhkan waktu untuk mendiagnosis, waktu yang mungkin tidak Anda miliki dan waktu yang tidak perlu dikeluarkan jika Anda mengotomatiskan proses.