Integrasi berkelanjutan (continuous integration, CI) adalah praktik menjalankan pengujian secara otomatis pada setiap perubahan yang masuk, dan pada alur kerja GitHub dilakukan oleh GitHub Actions yang membaca berkas alur kerja (workflow) dari repository itu sendiri. Topik ini membahas cara kerjanya, bentuk berkas alur kerjanya, dan status pengujian sebagai gerbang penggabungan. Pengujian itu sendiri tetap perintah biasa, sehingga dapat dan sebaiknya dijalankan lokal terlebih dahulu.
Apa yang dilakukan CI#
Keadaan yang dihindari CI adalah penggabungan yang baru disadari rusak setelahnya. Setiap push dan setiap pull request memicu pekerjaan pengujian pada mesin yang bersih, dan hasilnya tampil sebagai status pada permintaan. Dengan syarat statusnya hijau sebelum penggabungan, branch utama tetap berada pada keadaan yang teruji, dan kesalahan terdeteksi pada permintaan yang menimbulkannya, bukan oleh pengguna versi berikutnya.
Dua sifat pelaksanaannya penting untuk dipahami. Mesin pekerja (runner) mulai dari keadaan bersih setiap kali, sehingga langkah yang bekerja lokal karena berkas sisa sering gagal di CI, dan itu justru temuan yang berharga. Selain itu, seluruh definisinya tersimpan di dalam repository sebagai berkas YAML, sehingga perubahan proses pengujian tersusun riwayat sebagaimana kode.
Berkas alur kerja GitHub Actions#
Alur kerja tersimpan pada folder .github/workflows/ dengan format YAML, dan contoh berikut menjalankan dua langkah pada setiap permintaan.
name: Pengujian
on:
pull_request:
push:
branches: [main]
jobs:
uji:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Jalankan pengujian
run: sh uji.shBagian on menyatakan pemicunya, yaitu setiap pull request dan setiap push ke main. Bagian jobs menyatakan pekerjaan, mesin yang menjalankannya, dan langkah-langkahnya, mulai dari menarik kode melalui actions/checkout hingga menjalankan skrip pengujian. Berkas ini ikut tersusun riwayat karena bagian dari repository, sehingga perubahan aturan pengujian ikut ditinjau sebagaimana perubahan kode.
Pengujian yang dijalankan adalah perintah biasa#
Langkah run pada alur kerja adalah perintah shell biasa, dan inilah yang membuatnya dapat dipraktikkan lokal. Siapkan program kecil beserta pengujinya, lalu jalankan keduanya dengan cara yang persis sama seperti CI nanti.
# tanggal commit ditetapkan agar keluaran contoh dapat direproduksi secara persis
export GIT_AUTHOR_DATE="2026-11-01T09:00:00+07:00"
export GIT_COMMITTER_DATE="2026-11-01T09:00:00+07:00"rm -rf /tmp/lab-ci
mkdir /tmp/lab-ci
cd /tmp/lab-ci
git init -b main
git config user.name "Budi"
git config user.email "[email protected]"
printf '#!/bin/sh\n# menjumlahkan dua angka\nexpr "$1" + "$2"\n' > hitung.sh
chmod +x hitung.sh
cat > uji.sh << 'EOF'
#!/bin/sh
# memeriksa keluaran hitung.sh terhadap nilai yang diharapkan
[ "$(./hitung.sh 2 3)" = "5" ] || { echo "UJI GAGAL: 2+3 != 5"; exit 1; }
[ "$(./hitung.sh -1 4)" = "3" ] || { echo "UJI GAGAL: -1+4 != 3"; exit 1; }
echo "PENGUJIAN LOLOS"
EOF
chmod +x uji.sh
sh uji.shInitialized empty Git repository in /tmp/lab-ci/.git/
PENGUJIAN LOLOSSkrip pengujian memeriksa keluaran program terhadap nilai yang diharapkan dan berhenti dengan keluaran bukan nol apabila meleset, dan kontrak itu persis yang dibutuhkan CI untuk menyatakan gagal. Komitkan keduanya, lalu jalankan lagi sebagai simulasi CI yang menjalankan langkah yang sama.
git add hitung.sh uji.sh
git commit -m "Program hitung beserta pengujian"
sh uji.sh
git log --oneline -1[main (root-commit) 2a8b038] Program hitung beserta pengujian
2 files changed, 8 insertions(+)
create mode 100755 hitung.sh
create mode 100755 uji.sh
PENGUJIAN LOLOS
2a8b038 Program hitung beserta pengujianStatus sebagai gerbang penggabungan#
Hasil pengujian tampil pada pull request sebagai status, dan kekuatan sesungguhnya muncul ketika status itu dijadikan syarat. Aturan perlindungan branch (branch protection) pada pengaturan repository dapat menuntut status tertentu berwarna hijau dan setidaknya satu persetujuan sebelum penggabungan, sehingga gerbang itu ditegakkan platform dan tidak bergantung pada disiplin.
Kebiasaan yang menyertainya sejalan dengan materi sebelumnya: pengujian yang cepat dijalankan pada setiap push, dan pengujian yang lambat disaring memakai jalur berkas yang berubah. Saat pengujian gagal, tanggung jawabnya ada pada permintaan yang memicunya, dan status merah pada permintaan lain biasanya berarti penggabungan yang belum selesai perlu dikerjakan sebelum yang lain.
Ringkasan#
- CI menjalankan pengujian otomatis pada setiap push dan pull request, dengan hasilnya sebagai status pada permintaan.
- Alur kerja GitHub Actions berupa berkas YAML pada
.github/workflows/yang menyebut pemicu, mesin, dan langkah-langkahnya. - Langkah pengujian adalah perintah biasa, sehingga kontrak keluaran nol untuk lolos dapat diuji lokal dengan cara yang sama.
- Perlindungan branch menjadikan status hijau sebagai syarat penggabungan, sehingga branch utama tetap pada keadaan teruji.
Referensi#
- Understanding GitHub Actions — GitHub Docs — penjelasan resmi konsep alur kerja, pemicu, dan pekerjaan.
- Workflow Syntax for GitHub Actions — GitHub Docs — rujukan sintaks berkas alur kerja.