Integrasi berkelanjutan sebagai istilah mengacu pada dua gagasan berbeda.
Yang pertama adalah alur kerja: alih-alih semua orang dalam tim bekerja di cabang mereka sendiri dan kemudian setelah beberapa minggu pemrograman mencoba untuk menggabungkan perubahan mereka ke dalam arus utama, perubahan itu terintegrasi (hampir) terus menerus. Ini memungkinkan masalah muncul lebih awal, dan menghindari perubahan yang tidak kompatibel. Namun, itu mensyaratkan bahwa kita dapat dengan mudah memeriksa apakah suatu perubahan “berfungsi”.
Di sinilah ide kedua masuk, yang ternyata jauh lebih populer. Server CI adalah lingkungan yang bersih tempat perubahan diuji secepat mungkin. Lingkungan bersih diperlukan agar bangunan dapat direproduksi. Jika berhasil sekali, itu harus selalu berhasil. Ini menghindari masalah "tetapi berhasil pada mesin saya". Secara khusus, server CI berharga ketika perangkat lunak Anda berjalan pada sistem yang berbeda atau dalam konfigurasi yang berbeda dan Anda perlu memastikan semuanya berfungsi.
Kurangnya langkah pembangunan tidak relevan. Namun, CI hanya masuk akal jika Anda memiliki test suite. Paket tes ini harus otomatis, dan tidak boleh gagal. Jika pengujian gagal, pengembang yang sesuai harus mendapatkan notifikasi sehingga mereka dapat memperbaiki masalah yang mereka perkenalkan (“melanggar build”, bahkan ketika tidak ada build sebagai kompilasi).
Ternyata server semacam itu berharga untuk lebih dari sekadar pengujian. Bahkan, sebagian besar perangkat lunak CI benar-benar jelek dalam menjalankan tes dalam berbagai konfigurasi, tetapi pandai mengelola semua jenis pekerjaan. Misalnya selain tes unit "terus menerus", mungkin ada tes penuh sebagai bangunan malam. Perangkat lunak ini dapat diuji dengan beberapa versi Python, versi pustaka yang berbeda. Situs web dapat diuji untuk tautan mati. Kita dapat menjalankan analisis statis, pemeriksa gaya, alat cakupan uji, dll. Di atas kode. Dokumentasi dapat dihasilkan. Ketika semua suite tes lulus, proses pengemasan dapat dimulai sehingga Anda siap untuk merilis perangkat lunak Anda. Ini berguna dalam pengaturan yang gesit di mana Anda menginginkan produk yang dapat digunakan (dan dapat didemonstrasikan) setiap saat. Dengan maraknya aplikasi web, ada juga gagasan penyebaran berkelanjutan: Jika semua tes lulus, kami dapat secara otomatis mendorong perubahan ke produksi. Tentu saja, ini mengharuskan Anda benar-benar percaya diri dalam test suite Anda (jika tidak, Anda memiliki masalah yang lebih besar).