Berikut adalah kutipan dari konten integrasi berkelanjutan saat ini :
... proses penggabungan salinan kode kerja pengembang ke basis kode bersama sering untuk mencegah atau meminimalkan masalah integrasi.
OK, saya mengerti. Tapi kemudian ada juga pengiriman terus-menerus dan penyebaran terus-menerus , dan di situlah saya terus-menerus tersesat:
- Bagaimana integrasi berkelanjutan terkait dengan pengiriman dan / atau penyebaran berkelanjutan , dengan asumsi bahwa di suatu tempat di sepanjang garis (s) melalui
integration
Anda berakhirdelivering
di lingkungan target di mana semuanya akan beradadeployed
. - Apa perbedaan antara pengiriman berkelanjutan dan penerapan berkelanjutan ?
Dulu, sebelum DevOps disebut DevOps, kami menggunakan terminologi yang mungkin dapat membantu untuk memahami istilah-istilah DevOps baru ini, seperti:
- mempromosikan ke (atau menurunkan dari) beberapa target pra-produk, secara opsional dikombinasikan dengan beberapa jenis proses regenerasi (kompilasi, ikatan, dll) untuk mengemas semua komponen terkait bersama-sama dalam hal-hal yang dapat dieksekusi. Itu yang harus mirip / dekat dengan integrasi berkelanjutan , atau tidak?
- mendistribusikan ke beberapa lingkungan target, menggunakan sesuatu seperti FTP (jika salinan standar tidak dapat menjembatani kesenjangan), tetapi belum mengaktifkannya di target. Itu yang harus mirip / dekat dengan pengiriman terus menerus , atau tidak?
- instal (atau aktifkan ) di beberapa lingkungan target, dikombinasikan dengan hal-hal seperti mengikat, menghentikan / memulai operasi, dll. Itu yang harus serupa / dekat dengan penyebaran berkelanjutan , atau tidak?
_markdown_
untuk memudahkan pembacaanJawaban:
Pengiriman berkelanjutan dan penyebaran berkelanjutan keduanya mengambil integrasi berkelanjutan satu langkah lebih jauh, dengan menambahkan langkah 'penyebaran ke produksi' ke proses. Perbedaan antara pengiriman kontinu dan penyebaran adalah bahwa untuk pengiriman langkah ini dilakukan secara manual dan untuk penerapannya adalah otomatis.
Perbedaan antara Continuous Integration, Continuous Delivery dan Continuous Deployment. Gambar disalin dari codeproject.com
Apakah Anda melakukan pengiriman terus-menerus atau penerapan terus-menerus merupakan pilihan implementasi. Jika Anda melakukan penyebaran berkelanjutan, perubahan kode akan digunakan secara otomatis setelah tes penerimaan berlalu. Ini mungkin atau mungkin tidak diinginkan untuk produk Anda. Dengan pengiriman terus-menerus, orang dapat membuat pilihan apakah perubahan kode tertentu digunakan atau tidak (dan mungkin di mana tepatnya kode itu digunakan).
Karena perbedaan antara pengiriman dan penyebaran kontinu kecil dan banyak orang tidak menyadari perbedaan yang tepat, kedua istilah ini kadang-kadang digunakan secara bergantian.
sumber
Pengiriman terus menerus dan penerapan berkelanjutan (CD) kurang lebih sama *. Setiap kali perubahan dianggap 'baik untuk pergi' (diuji / diverifikasi) itu harus segera dirilis. Anda dapat melakukan ini beberapa kali sehari karena ada pekerjaan yang selesai.
Integrasi berkelanjutan (CI) hanya mengacu pada penggabungan kode bersama sering untuk memastikan bahwa cabang fitur tidak membelok terlalu jauh dari cabang 'master' utama Anda, dan juga agar Anda tahu dengan sangat cepat jika ada masalah dengan kode dari sebuah perspektif integrasi - yaitu, Apakah Anda melanggar fungsi apa pun saat mengubah hal-hal.
Sejauh bagaimana mereka berhubungan satu sama lain, CI sangat membantu untuk memverifikasi kode sehingga dapat dirilis dengan cepat (CD). Anda masih dapat mencapai CD tanpa CI (dan sebaliknya), tetapi Anda akan menemukan bahwa sering kali membuat hidup Anda lebih mudah untuk mengintegrasikan kode Anda lebih awal dan seringkali menemukan masalah lebih cepat, yang pada gilirannya akan memungkinkan Anda untuk memperbaiki masalah tersebut dengan lebih cepat, dan akhirnya memberikan fitur Anda lebih cepat!
* Sunting: di sini ada artikel yang membahas perbedaannya. https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff Pengiriman terus-menerus tidak selalu berarti benar-benar melakukan penyebaran ke produksi setiap saat, tetapi itu berarti penyebaran yang konstan ke lingkungan seperti produksi , dengan keyakinan bahwa perubahan itu dapat masuk ke produksi kapan saja setelah bisnis siap. Dalam praktiknya, kebanyakan orang mengacaukan istilah-istilah ini.
sumber
Versi tertentu dari produk perangkat lunak harus terlebih dahulu menyelesaikan tahap integrasi sebelum dapat dikirim atau digunakan.
Untuk kontinyu pengiriman / penyebaran berkelanjutan integrasi adalah suatu keharusan. Jika tidak, jika integrasi acara selesai terlalu jauh untuk memenuhi syarat untuk atribut "kontinu" maka begitu juga kemungkinan pengiriman / penyebaran (hanya sebagian dari versi terintegrasi yang biasanya memenuhi syarat untuk pengiriman / penyebaran).
Pembaruan: Jawaban saya hanya menggarisbawahi ketergantungan (hubungan) antara CI dan (keduanya) CD, terminologi tercakup dengan baik oleh jawaban THelper.
Satu-satunya komentar yang saya miliki adalah tentang penggunaan (kelebihan beban)
deployment
. Penyebaran di lingkungan non-produksi adalah hal yang nyata. Mereka bahkan dapat terjadi cukup sering - dilakukan, misalnya, sebagai bagian dari berbagai tahap pengujian selama pengiriman terus menerus. Tapi itu tidak membuat penyebaran seperti itucontinuous deployments
. Penyebaran berkelanjutan mengacu secara khusus pada penyebaran di lingkungan produksi.sumber
Pada dasarnya, integrasi berkelanjutan adalah bagian dari pengiriman berkelanjutan dan penyebaran berkelanjutan, kecuali bahwa rilis terjadi secara otomatis. Anda juga dapat menganggap pengiriman kontinu sebagai langkah logis berikutnya dari integrasi berkelanjutan dan berfungsi di semua lingkungan. Integrasi berkelanjutan juga membantu dengan verifikasi artefak sehingga dapat digunakan lebih cepat. Meskipun tidak mungkin untuk memiliki penyebaran berkelanjutan tanpa integrasi berkelanjutan dan jauh lebih mudah untuk menangkap bug dengan integrasi berkelanjutan. Semua "hal-hal yang berkelanjutan" ini pada akhirnya tentang menghilangkan tindakan yang tidak perlu dalam alur kerja pengembangan. Yang paling penting, CI / CD penting dari perspektif teknis dan bisnis. Perusahaan yang gagal untuk mengadopsi prinsip-prinsip DevOps ini berisiko mengambil jalan dinosaurus. Dalam lingkungan TI yang serba cepat saat ini, itu jugaDevOps atau mati.
sumber