Saya mencoba menambahkan Integrasi Berkelanjutan ke proyek.
Menurut Wikipedia , salah satu bagian utama CI adalah pembuatan otomatis. Namun, saya bingung tentang apa, tepatnya, artinya, karena CI dan artikel otomasi tampaknya tidak setuju.
Titik-titik kebingungan khusus: apa yang dimaksud dengan "bangunan otomatis" dalam konteks:
- proyek menggunakan bahasa yang ditafsirkan, seperti Python atau Perl?
- membangun dari sumber pada mesin pengguna akhir?
- aplikasi yang memiliki dependensi yang tidak dapat dengan mudah dikompilasi dan didistribusikan, seperti database di RDBMS lokal ke mesin pengguna?
builds
danbuild
karena saya tidak tahu mana yang harus digunakan.Jawaban:
Anda benar dalam mencatat bahwa, untuk beberapa teknologi, langkah kompilasi tidak diperlukan. Namun, saya sarankan Anda mengambil pandangan yang lebih luas ketika menafsirkan istilah "build automation". Pikirkan tentang "membangun" dengan memasukkan dua komponen utama berikut:
Otomasi, dengan demikian, hanya merujuk pada membuat operasi otomatis apa pun - jika tidak semua - (yaitu, tidak memerlukan intervensi manual). Ini mungkin termasuk berbagai langkah, tergantung pada teknologi Anda:
Langkah transformasi:
Langkah-langkah jaminan kualitas:
Saat ini, alat CI yang baik akan memungkinkan Anda mengatasi semua masalah ini. Awalnya, sebagian besar toko tertarik untuk mengotomatiskan kompilasi kode mereka, karena itu adalah sumber masalah pertama dan paling terlihat dalam pengembangan perangkat lunak konvensional.
sumber
Build otomatis adalah deskripsi proses yang harus mencakup dasar-dasar berikut:
5.1 Kompilasi Berhasil, Tes unit berhasil
Ini adalah proses lepas tangan yang harus dijalankan tanpa intervensi manual.
sumber
Menurut saya, build otomatis adalah sesuatu yang
Tujuannya adalah untuk memiliki proses penyebaran yang dapat diulang - baca: diuji - sehingga pada saat Anda menyebar ke produksi, Anda memiliki tingkat kepastian yang adil bahwa segala sesuatu tidak akan salah. Semakin sedikit interaksi manusia dalam proses build dan deploy, semakin aman rilis Anda.
Jika Anda memiliki bahasa yang tidak dikompilasi, Anda masih dapat membangun situs dan men-zipnya untuk membuat satu artefak.
Alat CI yang baik akan memungkinkan Anda untuk skrip banyak tugas ke dalam proses pembuatan, termasuk menjalankan unit test. Itu juga akan menyimpan catatan bangunan Anda yang berhasil dan tidak berhasil, cakupan pengujian, dll. Tapi tidak ada yang merupakan bagian dari apa yang saya definisikan sebagai bangunan otomatis. (mis. Proses build otomatis yang baik memiliki hal-hal ini, tetapi yang buruk tidak gagal disebut "build otomatis" karena tidak memiliki hal-hal itu.)
Saya menyarankan agar tes integrasi / regresi dijalankan sebagai bagian dari proses penerapan, bukan proses pembangunan (meskipun, jika Anda memiliki lingkungan yang nyaman, Anda dapat menggunakan setiap bangunan).
sumber
Dalam kasus bahasa yang ditafsirkan, hal-hal dapat dipukul atau dilewatkan. Beberapa bahasa interpenetrasi memiliki kompiler tetapi lebih sering daripada tidak ada kemungkinan tidak banyak kebutuhan untuk menggunakannya. Dalam hal ini, saya biasanya hanya memindai kode untuk sintaks dan kesalahan parsing di tempat kompilasi atau langsung melompat untuk menjalankan tes pada kode.
Bagi saya ini berarti bahwa Anda dapat memberikan perintah tunggal yang dapat dijalankan oleh pengguna akhir untuk mendapatkan versi terbaru dari program, kompilasi, konfigurasikan, dan sebarkan sesuai kebutuhan.
Ini akan berada di bawah bagian pengujian integrasi berkelanjutan karena Anda dapat secara otomatis menghancurkan dan merekonstruksi basis data untuk memastikan bahwa skrip benar dan bahwa program mengujinya dengan benar.
sumber
Apa yang Anda diskusikan dalam pertanyaan Anda sebenarnya adalah 3 konsep berbeda:
Integrasi berkelanjutan pada intinya adalah membuat perubahan kecil dan sering menyinkronkan perubahan itu dengan "kebenaran global". Alih-alih melakukan checkout dan menahannya selama seminggu, seorang pengembang harus mengerjakan tugas-tugas yang dapat diselesaikan dalam satu hari sehingga kodenya tidak pernah terlalu tidak sinkron dengan repositori utama.
Untuk mencapai ini tanpa menyebabkan rasa sakit timnya (yaitu memeriksa sumber yang tidak membangun atau merusak fungsi yang ada). Pengembang harus memverifikasi bahwa kodenya tidak "merusak build". Jika dilakukan secara manual, ini menambah overhead tambahan ke proses pengembangan (bayangkan sebuah proyek yang membutuhkan waktu lama untuk membangun dan / atau memiliki banyak saling ketergantungan di mana perubahan pada satu baris kode dapat memengaruhi aplikasi dengan cara yang tidak terduga).
Untuk mengurangi situasi ini, kami menggunakan teknik lain untuk menghapus overhead ini.
Kami menggunakan build otomatis untuk checkout sumber dan membangunnya opsional menjalankan tes otomatis yang memverifikasi aplikasi berfungsi sebagaimana mestinya (langkah ini hanya berguna seperti test suite).
Langkah lebih lanjut pengiriman berkelanjutan mengatasi masalah Anda dengan database dan masalah lainnya. Idenya di sini adalah untuk menyediakan beberapa tingkat versi untuk database dan faktor-faktor lain dari lingkungan sehingga kami dapat mengkonfirmasi secepat mungkin bahwa aplikasi bekerja di lingkungan yang sedekat mungkin dengan produksi .
sumber
"Automated build" berarti Anda dapat beralih dari kontrol sumber ke paket yang dapat dikirim dengan satu tindakan (dapat dijadwalkan) (biasanya skrip shell atau file batch).
Apa sebenarnya yang dimaksud dengan membangun, dalam konteks ini, sangat tergantung pada apa sebenarnya yang Anda kirim, bagaimana pengirimannya, dan langkah-langkah mana yang diperlukan untuk berbagai bagian tumpukan pengembangan Anda, tetapi dalam hal apa pun, Anda mulai dengan apa yang ada di kontrol sumber, dan Anda berakhir dengan produk yang dapat dikirim (atau pesan kesalahan dan manajer proyek yang marah).
Untuk proyek Python sederhana, build otomatis mungkin hanya terdiri dari dua langkah - memeriksa sumber, dan menyalin file yang relevan ke direktori yang benar. Untuk proyek yang lebih kompleks, mungkin melibatkan hal-hal seperti:
sumber