CI / CD sebagai perkhidmatan: 10 alat untuk penyatuan dan penghantaran berterusan di awan

Cloud dan integrasi berterusan (CI) adalah padanan semula jadi. Walaupun awan membebaskan kita dari keperitan memasang dan mengekalkan pelayan fizikal, integrasi berterusan mengotomatisasi banyak kesakitan membina, menguji, dan menggunakan kod kita. Sekiranya kedua-duanya bertujuan untuk mengambil tugas dari pasukan pembangunan, masuk akal untuk menggabungkan mereka dan menghilangkan lebih banyak lagi kekalahan dengan satu langkah.

Terdapat banyak perkhidmatan integrasi berterusan dan semuanya melakukan perkara yang sama, sekurang-kurangnya dalam arti abstrak. Mereka bermula dengan senarai tugas seperti menyusun atau menguji yang mesti dilaksanakan sebelum dunia dapat menghargai kejeniusan dalam perisian baru anda. Apabila anda menggunakan garis kod anda, alat itu mula berfungsi melalui senarai semak sehingga mereka menemui sekatan jalan raya. Sekiranya tidak ada sekatan jalan raya, semua orang gembira.

Sesiapa sahaja boleh menggunakan integrasi berterusan untuk mana-mana projek pembangunan perisian, tetapi kelebihan terbesar dinikmati oleh pasukan, lebih baik pasukan besar yang bekerja sama, blok kod yang saling berkaitan. Pelaksanaan integrasi berterusan yang paling teliti membina dan membina semula kod sebelum menguji dan menguji semula, semuanya mencari kesilapan dan ketidaksesuaian baru yang mungkin telah dibuat ketika ahli pasukan yang berbeza memeriksa kod mereka. Pelayan integrasi berterusan menyegerakkan kerja semua pengaturcara dan membantu pasukan mengesan sebarang masalah. 

Beberapa senarai tugas untuk pelayan CI diakhiri dengan ujian, tetapi akhir-akhir ini semakin banyak pasukan memperluas senarai untuk memasukkan penyebaran kod baru, suatu proses yang kadang-kadang dijuluki "penerapan berterusan." Penyebaran automatik sepenuhnya membuat beberapa orang gugup dan mereka akan sering menambahkan beberapa jeda manual dalam proses tersebut. Menambah sedikit pertanggungjawaban dan jaminan manusia membolehkan mereka berehat sedikit. Mereka akan memanggil pendekatan hibrid ini sebagai "penyampaian berterusan" kerana memberikan kod ke beberapa kumpulan pementasan atau pengujian di mana ia akan menunggu manusia membuat dorongan terakhir untuk pengeluaran. 

Sekiranya integrasi berterusan sangat bagus di ruang pelayan di lorong, ia akan menjadi lebih baik di awan di mana terdapat peluang besar untuk penghantaran lebih cepat dan kecekapan yang lebih tinggi. Dalam kes terbaik, awan dapat memecah kerja dan menjalankan tugas secara selari. Perkhidmatan bermula dengan banyak perkakasan dan kemudian membaginya di antara banyak pasukan. Selagi semua orang tidak menekan kod mereka pada masa yang sama, binaan dan ujian akan berjalan lebih cepat. Membeli rak perkakasan besar yang sama untuk saat-saat ketika pembangun ingin menjalankan semua ujian adalah sesuatu yang melarang, tetapi jika pasukan berkongsi rak, mereka semua dapat menikmati ledakan kepantasan.

Terdapat bahaya dan kebimbangan, dan yang terbesar adalah hilangnya kawalan. Semua perkhidmatan awan memerlukan penyerahan kod anda kepada pihak ketiga, pilihan yang mungkin terasa membebaskan bagi sesetengah pihak tetapi menakutkan orang lain. Semua perkhidmatan cloud berusaha keras untuk menekankan keselamatan, tetapi entah bagaimana rasanya berbeza ketika kodnya berada di bawah bumbung anda sendiri.

Sebagai tambahan kepada sokongan yang luas untuk semua bahasa utama, perkhidmatan ini merangkumi sebilangan kecil yang mengejutkan dan lebih daripada beberapa yang benar-benar aneh dan tidak biasa. Ini lebih merupakan hasil keputusan seni bina yang baik pada awalnya daripada usaha berani para pemaju. Senarai tugas hampir selalu dikodkan sebagai perintah untuk beberapa shell atau baris perintah, jadi alat integrasi berterusan terus mengeluarkan perintah sehingga senarai habis atau sekatan jalan raya yang tidak dapat diatasi muncul. Sebilangan bahasa seperti Java menawarkan pilihan yang lebih canggih tetapi sebahagian besar alat dapat mencapai apa sahaja yang dapat anda lakukan dengan baris perintah. 

Berikut adalah 10 pilihan berbeza untuk melakukan integrasi berterusan di cloud.

CloudBees

CloudBees Core dimulakan dengan Jenkins, projek sumber terbuka yang terkenal untuk penyatuan berterusan, kemudian menambahkan ujian, sokongan, dan beberapa jaminan bahawa kod itu akan berjalan. Syarikat ini memperoleh semua plugin eksperimen, menambahkan beberapa plugin mereka sendiri, dan kemudian menggilap yang tepat sehingga mereka berfungsi seperti yang diharapkan apabila anda memerlukannya.

CloudBees masih menggunakan 80 peratus pasukan pembangunan Jenkins dan mereka sering menyumbang kod ke projek sumber terbuka, jadi anda pasti mereka mempunyai pemahaman yang baik tentang platform dominan ini. Untuk mempercepat, CloudBees juga menambahkan paralelisasi yang luas serta instrumen untuk mengesan proses pengembangan anda.

CloudBees menawarkan pelbagai harga yang merangkumi dari peringkat percuma hingga "starter kit" selama setahun penuh perkhidmatan. Syarikat itu juga memberikan sokongan untuk Jenkins untuk sesiapa sahaja yang memerlukan bantuan dengan alat tersebut tetapi tidak memerlukan atau menginginkan pengkomputeran awan.

Talian Kod AWS

Alat Amazon untuk penyatuan dan penyebaran berterusan, AWS CodePipeline, dioptimumkan untuk menghantar kod ke pelayan AWS sambil tetap terbuka untuk laluan yang lebih rumit untuk kod dan data anda. Alat asas ini menawarkan pilihan persekitaran binaan pra-konfigurasi yang bagus untuk bahasa utama (Java, Python, Node.js, Ruby, Go, Android,. Net Core untuk Linux) dan kemudian membuang hasilnya dalam keranjang S3 sebelum menghantarnya pergi ke pelayan untuk mula berjalan.

Terdapat sebilangan besar lapisan dengan nama yang sedikit berbeza. CodeBuild meraih jenius terbaru anda dari CodeCommit apabila dicetuskan oleh CodePipeline dan kemudian menyerahkan hasilnya kepada CodeDeploy. Sekiranya terlalu banyak perkara Kod untuk anda konfigurasikan, anda boleh melompat terus ke CodeStar, yang menawarkan lapisan automasi yang lain. Kalaulah ada CodeBugEraserStar untuk menghapuskan semua kesalahan kita secara automatik juga. Perlu diingat bahawa anda tidak secara teknikal membayar sebarang lapisan Kod ini. Amazon menagih anda hanya untuk pengiraan dan sumber penyimpanan yang digunakan sepanjang perjalanan. Ia tidak betul-betul percuma, walaupun terasa seperti itu.

Saluran Paip Bitbucket

Atlassian, pemaju papan penjejak pekerjaan yang popular, Jira, dan repositori kod, Bitbucket, memutuskan untuk memanfaatkan aliran kerja kami dengan membuat Bitbucket Pipelines, alat penyatuan berterusan di awan Bitbucket. Sos rahsia lebih banyak penyatuan, dalam hal ini dalam bentuk hubungan antara mekanisme binaan dan alat Atlassian yang lain. Paling tidak secara kosmetik, Pipeline bukanlah perkara yang terpisah. Ini hanyalah pilihan menu lain untuk setiap projek di Bitbucket. Pilihan menu lain menunjukkan penggunaan, yang membolehkan anda memilih di mana binaan akhirnya.

Sambungan adalah berkat dan batasan. Sekiranya anda memilih salah satu templat yang sudah ditentukan untuk bahasa utama (Java, JavaScript, Python, PHP, .Net, dll.), Anda boleh membuat dan menggunakan kod anda dalam beberapa klik. Tetapi jika anda menjauhkan diri dari standard, anda akan mula mendapati bahawa pilihannya tidak ada. Atlassian mendorong pasaran aplikasi yang nampaknya merupakan campuran carta dan kaitan web ke perkhidmatan lain. Aplikasi teratas pada carta ketika saya menulis ini akan menghubungkan Bitbucket dengan Jenkins, mungkin untuk melakukan sesuatu yang tidak dapat dilakukan dengan cepat di dalam dinding.

Kelebihan prinsip Pipeline adalah kepantasan. Atlassian telah membuat pra-rekayasa sebahagian besar jalan utama dari kod hingga menjalankan penyebaran dan anda boleh mengikuti jejak syarikat dengan hanya beberapa dolar. Sukar untuk membandingkan kos penggunaan Bitbucket kerana binaannya berharga dalam beberapa minit, seperti kebanyakan model tanpa pelayan, tetapi pasukan sering mendedikasikan sekumpulan contoh untuk menangani binaan Jenkins. Walaupun anda mematikannya pada malam dan hujung minggu, jam akan bertambah.

GitLab CI / CD

Salah satu pesaing terbesar untuk Atlassian adalah GitLab, syarikat lain yang ingin menangani setiap langkah proses antara jari anda dan menjalankan penggunaan. Mekanisme pembangunan, pengujian, dan penerapan GitLab juga dihubungkan langsung ke repositori Gitnya sehingga dapat dipicu pada komitmen. Prosesnya sebahagian besarnya dibina di sekitar kontena Docker dan cache ini dapat mempermudah beberapa kerja konfigurasi yang mesti dilakukan di sekitar binaan Jenkins.

Tugas membina boleh menyasarkan bahasa apa pun tetapi mesti dicetuskan oleh GitLab Runner, alat penskalaan automatik yang ditulis dalam Go yang siap untuk kebanyakan platform. Fleksibiliti ini bermaksud anda boleh mencetuskan kerja rawak pada mesin lain, sesuatu yang mungkin berguna dengan seni bina yang rumit yang lebih banyak daripada sekadar memberikan perkhidmatan mikro.

Harga digabungkan dengan pelbagai peringkat untuk memenuhi keperluan. Kumpulan peringkat emas, misalnya, memperoleh semua ciri terbaik seperti papan pemuka keselamatan dan 50,000 minit membina kluster mesin yang dikongsi. Tidak ada bayaran untuk menggunakan mesin anda sendiri untuk sebahagian proses atau memisahkan keadaan di beberapa awan lain.

BulatanCI

Banyak alat integrasi berterusan memfokuskan pada kod yang boleh dibina di persekitaran Linux. CircleCI membina dan menyampaikan di dunia Linux, tetapi ia juga menawarkan produk yang akan membina aplikasi Android dan apa sahaja yang keluar dari Xcode Apple (untuk iOS, MacOS, tvOS, atau watchOS). Sekiranya anda mengusahakan pasukan yang menghasilkan aplikasi untuk platform ini, anda boleh membuat kod anda dan membiarkan CircleCI menegakkan beberapa disiplin ujian pada semua genius pasukan anda yang berbeza.

Senarai tugas dinyatakan dalam fail YAML. CircleCI menggunakan Docker, dalam semua kemuliaan berlapis-lapisnya, untuk mengkonfigurasi persekitaran ujian untuk kod tersebut. Binaan bermula dengan bekas yang segar dan begitu juga dengan semua ujian. Kerja Mac dijalankan dalam mesin maya yang mempunyai jangka hayat yang hampir sama. Ini mengelakkan beberapa masalah dengan konfigurasi kerana persekitaran yang bersih tidak memiliki sisa-sisa bit. (Oleh itu, jika masalah anda disebabkan oleh berlakunya flotsam digital, itu salah anda.)

Harga difokuskan pada berapa banyak CPU yang anda buat. Bilangan pengguna dan bilangan repositori tidak terhad. Walau bagaimanapun, bilangan minit dan kontena yang membina bangunan ini diukur. Bekas pertama adalah percuma dan anda boleh menjalankan satu binaan di dalamnya. Sekiranya anda mahukan lebih banyak paralelisme atau lebih banyak hasil, CircleCI mendapat banyak wang. Pengguna Mac tidak mendapat tawaran percuma yang sama, tetapi ada rancangan pengenalan untuk sesiapa sahaja yang menguji perkhidmatan ini.

Travis CI

Sekiranya binaan anda menghasilkan kod yang perlu diuji pada kotak Windows, maka Travis CI menawarkan anda satu hentian. Syarikat itu telah menawarkan pilihan MacOS dan Linux untuk beberapa waktu tetapi baru saja melancarkan pilihan Windows, menjadikannya lebih mudah untuk menghasilkan kod yang berjalan di lebih banyak tempat.

Senarai tugas juga dinyatakan dalam YAML dan pekerjaan dijalankan dalam mesin maya bersih dengan konfigurasi yang agak standard. Kod Linux mendapat beberapa versi asas Ubuntu, kod Mac dijalankan dalam salah satu daripada selusin kombinasi OS X dan Xcode dan JDK. Kod Windows hanya boleh berakhir dalam satu versi Windows Server (1803) buat masa ini. Travis CI menawarkan senarai panjang 30 bahasa dan peraturan membina yang telah dikonfigurasikan dan siap untuk dijalankan.

Harga berdasarkan pada berapa banyak pekerjaan serentak yang dapat dilaksanakan sekaligus tetapi tidak ada batasan formal pada jumlah minit yang dapat dilakukan oleh bangunan ini. Sepertinya anda mendapat sejumlah contoh khusus untuk kerja anda dan mereka sentiasa siap. Tidak ada pilihan percuma untuk pekerjaan proprietari, tetapi projek sumber terbuka "selalu percuma" - jadi itu mungkin kaedah termudah untuk mencuba Travis CI.

Saluran Saluran Azure

Sekiranya anda tertanya-tanya apakah Microsoft moden mempunyai sikap "Tidak diciptakan di sini", tidak perlu mencari Azure Pipelines. Literatur penjualan mengatakan, "Bahasa apa pun, platform apa pun." Walaupun ini hampir pasti sedikit hiperbola dan Azure mungkin tidak banyak menawarkan programmer ENIAC, ia menawarkan jalan Microsoft, Linux, dan MacOS dengan jelas untuk kod anda. Sudut Apple hanya mensasarkan binaan MacOS, bukan iOS atau tvOS atau watchOS, tetapi jangan pilih-pilih. Ini adalah gelas yang lebih daripada separuh penuh.

Secara abstrak, sistem ini serupa dengan yang lain. Terdapat ejen yang melaksanakan binaan untuk menghasilkan artifak. Sebahagian daripadanya boleh dihoskan sendiri sekiranya pilihan itu membantu. Tumpukan merangkumi bekas Docker sepenuhnya dan perkakasan Azure siap digunakan untuk anda. Semua butiran ini dapat diklik bersama-sama dengan pereka visual yang dibina di laman web, atau ditentukan dengan YAML jika anda lebih suka tinggal di dunia baris perintah.

Harga disertakan dengan "kerja selari" percuma dengan masa pembinaan 1800 minit. Sekiranya anda mahukan lebih banyak paralelisme atau lebih banyak masa yang dibina, anda mula membayar. Rancangan ini merangkumi tahap percuma yang besar untuk projek sumber terbuka, sekali lagi menekankan keinginan Microsoft untuk mengambil bahagian dalam komuniti sumber terbuka umum. Tetapi jika Microsoft akan membelanjakan $ 7.5 bilion untuk membeli tempat duduk di meja dengan memperoleh GitHub, baik, itu masuk akal. Di mana semua kod ini akan dijalankan? Pipa Saluran Azure dengan senang hati akan memindahkannya dengan lancar ke perkakasan Azure.