CI/CD dan Dokumentasi
A. CI/CD
CI/CD adalah istilah yang sering digunakan dalam mengembangkan suatu aplikasi. Seperti yang sudah diketahui, biasanya dalam pembuatan aplikasi seorang developer cukup kesulitan dalam menjalankan testing, penyatuan code, hingga deployment secara manual. Kehadiran CI/CD berguna untuk meringankan beban kerja developer dengan cara mengotomatisasi proses pengembangan. Penggunaan CI/CD cenderung lebih efisien, karena tidak terlalu memakan banyak waktu dalam penggunaannya.
Pada dasarnya CI/CD merupakan rangkaian metode pengembangan aplikasi atau software secara otomatis untuk menerapkan sejumlah perubahan. Otomatisasi yang dimaksud berlangsung dari proses awal coding, testing, dan deployment. Continuous integration (CI) adalah pengintegrasian kode ke dalam repositori kode kemudian menjalankan pengujian secara otomatis, cepat, dan sering. Kamu dapat melakukan CI ini dengan menggunakan perintah commit. Continuous delivery atau continuous deployment (CD) adalah praktik yang dilakukan setelah proses CI selesai dan seluruh kode berhasil terintegrasi, sehingga aplikasi bisa dibangun lalu dirilis secara otomatis.
Ada beberapa manfaat dari penerapan CI/CD dalam produksi, di antaranya yaitu sebagai berikut:
● Mendapat feedback lebih cepat
Dalam penggunaan CI/CD pipeline, source code akan diuji coba secara otomatis. Uji coba dilakukan dengan CI tool. Tanggapan atau error yang terjadi juga bisa didapatkan lebih cepat sehingga developer pun dapat langsung menindaklanjuti feedback tersebut secepat mungkin.
● Deteksi bug lebih awal
Seperti yang dikatakan sebelumnya, CI/CD ini bekerja dengan melakukan pengujian secara otomatis, sehingga jika ada bug yang muncul pada software yang dikembangkan maka akan langsung terdeteksi oleh CI tool. Sehingga developer dapat dengan mudah menemukan dan memperbaiki bug tersebut.
● Mempercepat proses rilis software
Proses rilis dari suatu aplikasi dapat mungkin dapat dipercepat. Hal itu disebabkan kode-kode yang terus digabungkan dan diterapkan ke dalam produk, sehingga aplikasi selalu dalam kondisi siap untuk dirilis kapan pun.
● Continuous Integration (CI)
Continuous Integration atau CI adalah proses awal pengembangan software. Di tahap ini, developer akan mengkombinasikan sejumlah rangkaian kode serta mengintegrasikannya ke sebuah repository.
● Continuous Delivery (CD)
Pada tahap ini, Continuous Delivery berperan sebagai jembatan yang menghubungkan antara Continuous Integration dan Continuous Deployment. Dengan cara menyediakan segala yang diperlukan oleh keduanya.
Jika proses penggabungan dan pengujian kode di tahap sebelumnya sudah selesai, CD akan membawa software ke sebuah delivery environment. Pada tahap ini, CD mempersiapkan segala hal yang dibutuhkan seperti database, infrastruktur, dan file penting lainnya. Dengan tujuan agar proses deploy bisa dilakukan lebih cepat akan tetapi pada tahap CD ini proses deploy masih secara manual oleh developer.
● Continuous Deployment (CD)
Continuous Deployment memiliki singkatan yang mirip dengan Continuous Delivery, yakni CD. Tahap ini merupakan proses akhir dari seluruh rangkaian CI/CD sebelum software dirilis dan mulai digunakan user.
Continuous Deployment memiliki delivery environment yang digunakan untuk pengujian lanjutan. Serangkaian testing kembali dilakukan guna mengecek kompatibilitasnya dengan server. Jika berjalan lancar, maka aplikasi bisa segera di-deploy di server hingga akhirnya versi terbaru dirilis. Pada tahap CD ini proses deploy sudah dilakukan otomatis tanpa ada bantuan dari developer.
Banyak tools CI/CD yang tersedia di Internet, akan tetapi ada beberapa tools dari CI/CD yang sering digunakan yaitu:
● Gitlab CI/CD
Gitlab CI/CD merupakan tools yang sering digunakan developer dalam mempercepat siklus perilisan. Gitlab CI/CD hanya kompatibel pada OS server berbasis Linux dan turunannya saja, akan tetapi keuntungan dari penggunaan Gitlab CI/CD GitLab CI/CD menawarkan berbagai fitur unggulan, di antaranya termasuk docker container dan virtual machine. Gitlab CI/CD bekerja dengan menggunakan tiga metode, yaitu continuous integration, continuous delivery, dan continuous deployment.
● Github Actions
Github Actions merupakan tools yang disediakan oleh github untuk melakukan integrasi CI/CD. Github action akan melakukan serangkaian perintah otomatis setiap melakukan perubahan pada repository Github seperti melakukan build, testing dan deployment. Github juga dapat diintegrasikan dengan tools CI/CD lainnya seperti AWS codebuild dan Jenkins.
● Jenkins
Jenkins merupakan salah satu tools CI/CD yang bersifat open source dan menggunakan bahasa pemrograman Java. Jenkins mendukung berbagai jenis OS server, seperti Windows, Linux, dan juga MacOS. Jenkins juga menyediakan banyak plugins yang dapat dimanfaatkan untuk membuat, men-deploy, dan melakukan otomatisasi dalam proses pengembangan perangkat lunak.
● CircleCI
CircleCI salah satu tools CI/CD yang melakukan otomatisasi CI/CD dari tahap merging, testing hingga software dirilis. Akan tetapi CircleCI memiliki kekurangan yaitu pada kompatibilitasnya dalam OS server, CircleCI hanya mendukung Linux dan MacOS saja.
● AWS Codebuild
AWS codebuild ini dikembangkan oleh Amazon Web Service. Sama seperti tools CI/CD yang lain, AWS codebuild ini bisa digunakan untuk mem-build dan melakukan testing secara otomatis.
● Langkah pertama membuat file konfigurasi .github/workflows/nama file.yml di repository.
● Lalu ke tab actions untuk membuat alur dari workflow, misal seperti berikut:
● Lalu start commit
● Pada contoh di atas merupakan contoh dari script workflow. Yang dimana script akan dijalankan setiap kali ada push ke branch master. Workflow akan memiliki satu job bernama "build", yang akan dijalankan pada mesin virtual dengan sistem operasi Ubuntu. lalu, workflow akan melakukan beberapa langkah, yaitu melakukan checkout repository, setup JDK 11, build aplikasi dengan Gradle, melakukan uji aplikasi dengan Gradle, dan terakhir melakukan deploy aplikasi ke firebase..
● File main.yml untuk proses CI/CD telah selesai dibuat
B. Dokumentasi
Dokumentasi adalah bagian penting dalam pengembangan perangkat lunak. Untuk memudahkan pengelolaan dokumentasi, Git menyediakan dua fitur yaitu Issue dan Wiki.
● Issue
Issue pada Git adalah fitur yang memungkinkan pengguna untuk melacak masalah atau permintaan fitur pada proyek perangkat lunak. Issue dapat dibuat dan dikelola oleh pengguna atau anggota tim pengembang proyek.
Untuk membuat issue, klik pada tombol "New Issue" pada halaman repository Git. kemudian tambahkan judul dan deskripsi masalah atau permintaan fitur yang ingin dibuat. Setelah itu, issue dapat ditetapkan ke anggota tim yang bertanggung jawab untuk menyelesaikan masalah tersebut.
Issue juga dapat digunakan untuk melacak riwayat perubahan proyek. Anda dapat menetapkan label pada setiap issue dan melihat semua issue terkait dengan label tertentu.
● Wiki
Wiki pada Git adalah fitur yang memungkinkan pengguna untuk membuat dan mengelola dokumentasi proyek perangkat lunak. Wiki biasanya berisi informasi seperti panduan pengguna, spesifikasi teknis, dan petunjuk instalasi.
Untuk membuat Wiki, dengan menekan create the first page di tab wiki pada repositori Git lalu menambahkan isi dokumen yang ingin ditampilkan. Juga dapat untuk menambahkan gambar, video, dan tautan ke halaman Wiki.
Wiki biasanya digunakan untuk mengumpulkan semua informasi terkait proyek dan menjadikannya mudah diakses oleh anggota tim pengembang dan pengguna akhir.