CI/CD Pipeline: Belajar dengan Contoh

Apa yang dimaksud dengan saluran CI/CD?

Pipeline CI/CD mengotomatiskan proses pengiriman perangkat lunak. Itu membuat kode, menjalankan pengujian, dan membantu Anda menerapkan versi perangkat lunak baru dengan aman. Pipeline CI/CD mengurangi kesalahan manual, memberikan umpan balik kepada pengembang, dan memungkinkan iterasi produk dengan cepat.

Pipeline CI/CD memperkenalkan otomatisasi dan pemantauan berkelanjutan di seluruh siklus hidup produk perangkat lunak. Ini melibatkan fase integrasi dan pengujian hingga pengiriman dan penerapan. Praktik yang terhubung ini disebut sebagai saluran CI/CD.

Apa itu Integrasi Berkelanjutan, Pengiriman Berkelanjutan, dan Penerapan Berkelanjutan?

  • Integrasi berkelanjutan adalah metode pengembangan perangkat lunak di mana anggota tim dapat mengintegrasikan pekerjaan mereka setidaknya sekali sehari. Dalam metode ini, setiap integrasi diperiksa oleh build otomatis untuk mencari kesalahan.
  • Pengiriman berkelanjutan adalah metode rekayasa perangkat lunak di mana sebuah tim mengembangkan produk perangkat lunak dalam siklus singkat. Ini memastikan bahwa perangkat lunak dapat dirilis dengan mudah kapan saja.
  • Penyebaran berkelanjutan adalah proses rekayasa perangkat lunak di mana fungsionalitas produk disampaikan menggunakan penerapan otomatis. Ini membantu penguji untuk memvalidasi apakah perubahan basis kode sudah benar, dan stabil atau tidak.

Tahapan pipeline CI/CD

Pipeline CI/CD adalah spesifikasi yang dapat dijalankan dari langkah-langkah yang harus dilakukan oleh pengembang untuk mengirimkan versi baru dari perangkat lunak apa pun. Kegagalan di setiap tahap memicu pemberitahuan melalui email, Slack, atau platform komunikasi lainnya. Hal ini memungkinkan pengembang yang bertanggung jawab untuk mengetahui masalah-masalah penting.

Berikut adalah Tahapan penting dari pipeline CI/CD:

Tahapan pipeline CI/CD
Tahapan pipeline CI/CD

Tahap Sumber

Pada tahap sumber, pipeline CI/CD dipicu oleh repositori kode. Setiap perubahan dalam program memicu pemberitahuan ke alat CI/CD yang menjalankan alur yang setara. Pemicu umum lainnya mencakup alur kerja yang dimulai oleh pengguna, jadwal otomatis, dan hasil dari alur lainnya.

Membangun Tahap

Ini adalah tahap kedua dari CI/CD Pipeline di mana Anda menggabungkan kode sumber dan dependensinya. Hal ini dilakukan terutama untuk membangun perangkat lunak yang dapat dijalankan dan berpotensi dikirimkan ke pengguna akhir.

Program yang ditulis dalam bahasa seperti C++, Java, C, atau bahasa Go harus dikompilasi. Di sisi lain, JavaNaskah, Python, dan program Ruby dapat bekerja tanpa tahap build.

Kegagalan untuk melewati tahap pembangunan berarti ada kesalahan konfigurasi proyek yang mendasar, jadi sebaiknya Anda segera mengatasi masalah tersebut.

Tahap Tes

Tahap Pengujian mencakup pelaksanaan pengujian otomatis untuk memvalidasi kebenaran kode dan perilaku perangkat lunak. Tahap ini mencegah bug yang mudah direproduksi menjangkau klien. Merupakan tanggung jawab pengembang untuk menulis pengujian otomatis.

Tahap Penerapan

Ini adalah tahap terakhir dimana produk Anda ditayangkan. Setelah build berhasil melewati semua skenario pengujian yang diperlukan, build siap untuk diterapkan ke server langsung.

Contoh Pipa CI/CD

Berikut adalah contoh pipeline CI/CD:

  • Kontrol Kode Sumber: Kode host di GitHub sebagai repositori pribadi. Ini akan membantu Anda mengintegrasikan aplikasi Anda dengan layanan dan perangkat lunak utama.
  • Integrasi berkelanjutan: Gunakan integrasi berkelanjutan dan platform pengiriman CircleCI dan melakukan komit pada setiap kode. Saat perubahan diberitahukan, alat ini akan menarik kode yang tersedia di GitHub dan memproses untuk membangun dan menjalankan pengujian.
  • Terapkan kode ke UAT: Konfigurasi CircleCI untuk men-deploy kode Anda ke server AWS UAT.
  • Penerapan ke produksi: Anda harus menggunakan kembali langkah-langkah integrasi berkelanjutan untuk menerapkan kode ke UAT.

Praktik Terbaik saluran CI/CD

Berikut adalah praktik terbaik pipeline CI/CD:

  • Tuliskan proses pengembangan saat ini sehingga Anda dapat mengetahui prosedur yang perlu diubah dan yang dapat dengan mudah diotomatisasi.
  • Mulailah dengan bukti kecil proyek sebelum melanjutkan dan selesaikan seluruh proses pengembangan sekaligus.
  • Siapkan pipeline dengan lebih dari satu tahap yang akan menjalankan pengujian fundamental cepat terlebih dahulu.
  • Mulai setiap alur kerja dari lingkungan yang sama, bersih, dan terisolasi.
  • Jalankan alat sumber terbuka yang mencakup semuanya mulai dari gaya kode hingga pemindaian keamanan.
  • Siapkan hub kode yang lebih baik untuk terus memeriksa kualitas kode Anda dengan menjalankan serangkaian pengujian standar pada setiap cabang.
  • Kode rekan meninjau setiap permintaan tarik untuk memecahkan masalah secara kolaboratif.
  • Anda harus menentukan metrik keberhasilan sebelum memulai transisi ke otomatisasi CD. Ini akan membantu Anda menganalisis perangkat lunak Anda secara konsisten, mengembangkan kemajuan, dan menyempurnakan bila diperlukan.

Keuntungan dari pipeline CI/CD

Berikut kelebihan/manfaat CI/CD Pipeline:

  • Pembuatan dan pengujian dapat dengan mudah dilakukan secara manual.
  • Ini dapat meningkatkan konsistensi dan kualitas kode.
  • Meningkatkan fleksibilitas dan memiliki kemampuan untuk memberikan fungsionalitas baru.
  • Pipa CI/CD dapat menyederhanakan komunikasi.
  • Itu dapat mengotomatiskan proses pengiriman perangkat lunak.
  • Membantu Anda mencapai umpan balik pelanggan lebih cepat.
  • Saluran CI/CD membantu Anda meningkatkan visibilitas produk Anda.
  • Ini memungkinkan Anda untuk menghapus kesalahan manual.
  • Mengurangi biaya dan tenaga kerja.
  • Pipeline CI/CD dapat mempercepat siklus hidup pengembangan perangkat lunak.
  • Ini memiliki penerapan jalur pipa otomatis.
  • Saluran CD memberikan putaran umpan balik yang cepat mulai dari pengembang ke klien.
  • Meningkatkan komunikasi antar karyawan organisasi.
  • Hal ini memungkinkan pengembang untuk mengetahui perubahan apa yang dapat terjadi pada broker dan menghindarinya di masa depan.
  • Pengujian otomatis, bersama dengan beberapa pengujian manual, membantu memperbaiki masalah apa pun yang mungkin timbul.

Alat CI/CD yang penting

Berikut adalah alat CI/CD yang penting:

1) Jenkins

Jenkins adalah server Integrasi Berkelanjutan sumber terbuka yang membantu mencapai proses Integrasi Berkelanjutan (dan tidak hanya) secara otomatis. Jenkins gratis dan sepenuhnya tertulis JavaJenkins adalah aplikasi yang banyak digunakan di seluruh dunia yang memiliki sekitar 300 ribu instalasi dan terus bertambah setiap harinya.

Jenkins

Fitur:

  • Jenkin akan membuat dan menguji kode berkali-kali dalam sehari.
  • Proses pembuatan dan pengujian otomatis, menghemat waktu, dan mengurangi cacat.
  • Kode disebarkan setelah tiap pembuatan dan pengujian berhasil.
  • Siklus pengembangannya cepat.

link: https://www.jenkins.io/download/


2) Bamboo

Bamboo adalah server build integrasi berkelanjutan yang melakukan build, pengujian, dan rilis otomatis di satu tempat. Server ini bekerja dengan lancar dengan perangkat lunak JIRA dan Bitbucket.

Bamboo

Fitur:

  • Jalankan pengujian batch paralel
  • Menyiapkan Bamboo cukup sederhana
  • Fitur izin per lingkungan memungkinkan pengembang dan QA untuk menyebarkan ke lingkungan mereka
  • Percabangan dan alur kerja Git bawaan. Secara otomatis menggabungkan cabang-cabangnya.

link: https://www.atlassian.com/software/bamboo


3) LingkaranCi

LingkaranCi adalah alat CI fleksibel yang berjalan di lingkungan apa pun seperti aplikasi seluler lintas platform, Python Server API, atau kluster Docker. Alat ini mengurangi bug dan meningkatkan kualitas aplikasi.

LingkaranCi

Fitur:

  • Memungkinkan untuk memilih Lingkungan Bangun
  • Mendukung banyak bahasa termasuk C++, JavaSkrip, NET, PHP, Python, dan Rubi
  • Dukungan untuk Docker memungkinkan Anda mengonfigurasi lingkungan yang disesuaikan.
  • Secara otomatis membatalkan build apa pun yang antri atau sedang berjalan ketika build yang lebih baru dipicu.

link: https://circleci.com/

Mengapa Pipeline CI/CD Penting bagi Pemimpin TI?

  • Pipeline CI/CD dapat meningkatkan keandalan.
  • Itu membuat tim TI lebih menarik bagi pengembang.
  • Pipeline CI/CD membantu para pemimpin TI, mengambil kode dari kontrol versi dan menjalankan pembuatan perangkat lunak.
  • Membantu memindahkan kode ke lingkungan komputasi target.
  • Memungkinkan pemimpin proyek mengelola variabel lingkungan dengan mudah dan mengonfigurasi lingkungan target.
  • Manajer proyek dapat mempublikasikan komponen aplikasi push ke layanan seperti layanan web, layanan database, layanan API, dll.
  • Menyediakan data log dan peringatan tentang status pengiriman.
  • Hal ini memungkinkan pemrogram untuk memverifikasi perubahan kode sebelum melanjutkan, sehingga mengurangi kemungkinan terjadinya cacat dalam produksi.

KPI Pipa Ci/CD

  • Siklus atau Waktu Penerapan: Waktu siklus adalah waktu yang dibutuhkan dari tahap pembuatan hingga produksi. Anda dapat memperoleh waktu siklus hidup rata-rata dengan mengukur tahapan proses pengembangan. Metrik ini akan memberikan wawasan tentang hambatan dalam proses Anda dan kecepatan waktu pengembangan secara keseluruhan.
  • Frekuensi Pengembangan: Frekuensi pengembangan memungkinkan Anda menganalisis kemacetan yang Anda temukan selama otomatisasi. Pelepasan yang lebih kecil dan lebih sering akan mengurangi risiko cacat dan memperbaikinya bila ditemukan. Metrik seperti itu adalah ukuran keseluruhan efisiensi tim Anda.
  • Ubah Waktu Pimpin: Ini mengukur waktu mulai dari fase pengembangan hingga penerapan. Metrik ini merupakan indikator keseluruhan proses pengembangan dan seberapa baik tim bekerja sama.
  • Ubah Tingkat Kegagalan: Fokusnya adalah pada berapa kali pengembangan berhasil vs. berapa kali gagal.
  • MTTR vs MTTF: MTTR (Mean Time to Recovery) adalah jumlah waktu yang dibutuhkan tim Anda untuk pulih dari kegagalan. MTTF (Mean Time to Failure) mengukur jumlah waktu antara perbaikan dan pemadaman. Metrik ini mencerminkan kemampuan tim dalam merespons dan memperbaiki masalah.

Kesimpulan

  • Pipeline CI/CD mengotomatiskan proses pengiriman perangkat lunak.
  • Pipeline CI/CD memperkenalkan otomatisasi dan pemantauan berkelanjutan di seluruh siklus hidup produk perangkat lunak.
  • Integrasi berkelanjutan adalah metode pengembangan perangkat lunak di mana anggota tim dapat mengintegrasikan pekerjaan mereka setidaknya sekali sehari.
  • Pengiriman berkelanjutan adalah metode rekayasa perangkat lunak di mana tim mengembangkan produk perangkat lunak dalam siklus singkat.
  • Penerapan berkelanjutan adalah proses rekayasa perangkat lunak di mana fungsionalitas produk disampaikan menggunakan penerapan otomatis.
  • Ada empat tahapan pipeline CI/CD 1) Tahap Sumber, 2) Tahap Pembuatan, 3) Tahap Pengujian, 4) Tahap Penerapan.
  • penting Alat CI/CD adalah Jenkins, Bambo, dan Circle CI.
  • Pipeline CI/CD dapat meningkatkan keandalan.
  • Pipeline CI/CD membuat tim TI lebih menarik bagi pengembang.
  • Waktu siklus adalah waktu yang dibutuhkan dari tahap pembuatan hingga produksi.
  • Frekuensi pengembangan memungkinkan Anda menganalisis kemacetan yang Anda temukan selama otomatisasi.
  • Change Lead Time mengukur waktu mulai dari fase pengembangan hingga penerapan.
  • Tingkat Kegagalan Perubahan berfokus pada berapa kali pengembangan berhasil vs. berapa kali gagal.
  • MTTR (Mean Time to Recovery) adalah jumlah waktu yang dibutuhkan tim Anda untuk pulih dari kegagalan.
  • MTTF (Mean Time to Failure) mengukur jumlah waktu antara perbaikan dan pemadaman.