Kalau kamu adalah seseorang yang tertarik dengan dunia pengembangan software, tentu sudah pernah mendengar atau bahak tidak asing lagi dengan istilah CI/CD. Dalam artikel ini, kita akan membahas tentang cara kerja GitHub Actions sebagai alat untuk menerapkan CI/CD. Kita juga akan membahas konsep dasar GitHub Actions, lalu kita akan menggunakannya untuk membangun contoh alur kerja CI/CD.
Sebelum kita masuk ke pembahasan GitHub Actions, kita bahas dulu CI/CD itu sendiri. Continuous Integration (CI) berarti para pengembang dapat selalu mengintegrasikan atau menggabungkan perubahan kode mereka ke dalam repositori bersama tanpa menyebabkan kerusakan atau konflik. Sedangkan Continuous Delivery (CD) berarti perubahan kode yang telah diuji dan divalidasi akan secara otomatis dipersiapkan untuk dirilis.
Secara umum, CI/CD mencakup beberapa tahapan penting, yaitu: build, test, staging, dan deployment.
Catatan: Pada tahap Build dan Test, beberapa pengembang memilih untuk melakukan tahap Test terlebih dahulu dengan membuat unit test, integration test atau bahkan end to end test.
Selanjutnya mari kita bahas GitHub Actions! GitHub Actions adalah fitur dari platform GitHub yang memungkinkan pengembang membuat workflow CI/CD secara langsung di GitHub. GitHub Actions menjalankan serangkaian tugas atau job di dalam container yang dihosting oleh GitHub. Tugas-tugas ini dijalankan sesuai dengan definisi yang tertulis dalam file YAML yang disebut workflow. File ini harus ditempatkan dalam folder .github/workflows
di dalam repositori agar bisa digunakan.
GitHub Actions terdiri dari berbagai komponen seperti event, job, step (task), runner, workflow, dan konteks. Berikut penjelasan singkatnya:
Event pada dasarnya adalah sesuatu yang terjadi. Dengan GitHub, suatu event dapat berupa push (ketika kita mengirim kode ke repositori), pull request, atau bahkan cron job. Events ini memicu proses CI/CD.
Saat kita menggunakan CI/CD, kita ingin dapat memicu aktivitas yang harus dilakukan secara otomatis. Aktivitas tersebut dikenal sebagai task atau step di GitHub. Tasks tersebut dapat berupa build kode atau pengujian atau deployment. Taks ini didefinisikan dengan perintah run:
atau menggunakan action dengan uses:
.
Contoh:
Kalau kamu bingung apa perbedaan uses dan run dari contoh di atas, berikut adalah penjelasannya.
uses
run
Runner GitHub adalah server yang menjalankan task yang kita buat. Runner ini menjalankan apa yang ditetapkan dalam workflow GitHub kita. Kita dapat menggunakan runner kita sendiri atau menggunakan runner GitHub.
Job adalah kumpulan step yang sedang dijalankan pada runner yang sama. Job didefinisikan dalam sebuah berkas yang disebut workflow.
Workflow GitHub adalah serangkaian job yang didefinisikan dalam file YAML, yang dipicu oleh suatu peristiwa atau event. Peristiwa tersebut tidak memicu tugas individual. Peristiwa tersebut hanya dapat memicu alur kerja. Kemudian, task dalam job workflow tersebut dieksekusi.
Menyediakan informasi tentang workflow, job, atau lingkungan. Diakses dengan ekspresi ${{ <context> }}
. Contoh:
Ini digunakan untuk menyimpan dan mengakses informasi sensitif yang digunakan oleh, dan tersedia untuk, alur kerja. Rahasia dihapus saat dicetak ke log. Contohnya adalah ${{secrets.GITHUB_TOKEN}}
.