Dalam pengembangan aplikasi, perubahan kode perlu diperiksa untuk memastikan tidak menimbulkan kesalahan pada fitur yang sudah berjalan. Namun, menjalankan pengujian secara manual setiap kali ada perubahan dapat memakan waktu, terutama ketika proyek mulai berkembang.
Salah satu cara untuk mengatasi masalah tersebut adalah dengan menerapkan Continuous Integration (CI). Dengan bantuan GitHub Actions, pengujian kode Python dapat dijalankan secara otomatis setiap kali perubahan dikirim ke repository GitHub.
Tutorial ini akan membahas cara membuat pipeline CI sederhana menggunakan Python, pytest, dan GitHub Actions. Praktik dilakukan menggunakan repository GitHub dan runner yang disediakan GitHub, sehingga tidak memerlukan server atau VPS sendiri.
Mengapa Continuous Integration Diperlukan dalam Pengembangan Python?
Ketika mengembangkan aplikasi, kesalahan kecil pada satu bagian kode dapat memengaruhi bagian lainnya. Misalnya, perubahan pada fungsi perhitungan dapat menyebabkan hasil yang sebelumnya benar menjadi keliru.
Jika pengujian hanya dilakukan secara manual, pengembang mungkin melewatkan beberapa skenario atau lupa menguji kembali fungsi yang terdampak oleh perubahan kode.
Continuous Integration membantu mengurangi risiko tersebut dengan menjalankan serangkaian pemeriksaan secara otomatis. Setiap perubahan yang dikirim ke repository dapat diuji sebelum diteruskan ke tahap pengembangan berikutnya.
GitHub Actions menyediakan fasilitas untuk menjalankan workflow berdasarkan peristiwa tertentu, seperti push dan pull_request. Workflow tersebut dapat mengatur lingkungan Python, memasang dependensi, dan menjalankan pengujian tanpa perlu menyiapkan mesin CI sendiri.
Dengan demikian, pengembang dapat mengetahui lebih cepat apakah perubahan kode berhasil melewati pengujian atau masih memiliki masalah.
Bagaimana Membuat CI Otomatis untuk Proyek Python?
1. Menyiapkan Lingkungan Pengembangan
Sebelum memulai, siapkan beberapa kebutuhan berikut:
- Python yang sudah terpasang di komputer.
- Git untuk mengelola perubahan kode.
- Akun GitHub.
- Editor kode, seperti Visual Studio Code.
- Koneksi internet untuk mengunggah proyek dan menjalankan workflow.
GitHub Actions akan menjalankan pengujian pada runner yang disediakan GitHub. Oleh karena itu, spesifikasi laptop tidak perlu tinggi karena proses CI utama tidak dijalankan di komputer lokal.
2. Membuat Proyek Python Sederhana
Sebagai contoh, kita akan membuat proyek kalkulator sederhana dengan fungsi penjumlahan. Proyek ini dipilih agar alur CI mudah dipahami sebelum diterapkan pada aplikasi yang lebih kompleks.
Buat folder bernama python-ci-demo, kemudian susun struktur direktori seperti berikut:
python-ci-demo/
├── calculator.py
├── test_calculator.py
└── .github/
└── workflows/
└── python-ci.ymlBuat file calculator.py dengan kode berikut:
def add(a, b):
return a + b
Fungsi add() menerima dua nilai dan mengembalikan hasil penjumlahannya. Fungsi ini nantinya akan diuji secara otomatis menggunakan pytest.
3. Membuat Pengujian Otomatis dengan Pytest
Setelah membuat fungsi utama, langkah berikutnya adalah menyiapkan pengujian untuk memastikan fungsi tersebut menghasilkan nilai yang sesuai.
Buat file test_calculator.py:
from calculator import add
def test_add():
assert add(2, 3) == 5
def test_add_negative():
assert add(-2, -3) == -5
def test_add_zero():
assert add(5, 0) == 5
Pada contoh tersebut, terdapat tiga pengujian yang mencakup penjumlahan bilangan positif, bilangan negatif, dan bilangan nol.
Pernyataan assert digunakan untuk membandingkan hasil fungsi dengan nilai yang diharapkan. Jika hasilnya sesuai, pengujian dinyatakan berhasil. Sebaliknya, jika hasilnya berbeda, pytest akan melaporkan kegagalan.
Sebelum mengintegrasikannya dengan GitHub Actions, pengujian dapat dijalankan secara lokal.
Buka terminal pada direktori proyek, kemudian jalankan:
python -m pip install pytest
python -m pytest -v

Jika seluruh pengujian berhasil, terminal akan menampilkan ringkasan yang menunjukkan bahwa ketiga test telah lolos.
Pengujian lokal ini membantu memastikan bahwa kode dan test sudah benar sebelum pipeline CI dijalankan.
4. Membuat Workflow GitHub Actions
Tahap utama dari tutorial ini adalah membuat workflow yang mengatur proses pengujian otomatis.
Di dalam folder proyek, buat direktori .github/workflows jika belum tersedia. Kemudian buat file bernama python-ci.yml.
Isi file tersebut dengan konfigurasi berikut:
name: Python CI
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pytest
- name: Run tests
run: python -m pytest -v
Konfigurasi tersebut mendefinisikan workflow bernama Python CI yang berjalan ketika ada perubahan melalui push atau pull_request menuju branch main.
Berikut penjelasan bagian penting dalam konfigurasi tersebut.
on
Menentukan peristiwa yang memicu workflow. Pada contoh ini, workflow berjalan ketika perubahan dikirim ke branch main atau ketika pull request menargetkan branch tersebut.
permissions
Membatasi izin token workflow agar hanya memiliki akses baca terhadap isi repository. Untuk pengujian sederhana, izin ini sudah memadai.
runs-on: ubuntu-latest
Menentukan lingkungan eksekusi yang digunakan. GitHub akan menyediakan runner berbasis Ubuntu untuk menjalankan seluruh langkah CI.
actions/checkout
Mengambil isi repository agar file proyek tersedia di lingkungan runner.
actions/setup-python
Menyiapkan versi Python yang akan digunakan selama proses pengujian. Pada contoh ini, Python yang dipilih adalah versi 3.12.
Install dependencies
Memasang pytest, yaitu library yang digunakan untuk menjalankan pengujian otomatis.
Mau Kuasai Cara Membuat CI Otomatis untuk Proyek Python Menggunakan GitHub Actions Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
Run tests
Menjalankan seluruh test menggunakan perintah python -m pytest -v. Jika terdapat pengujian yang gagal, langkah ini akan menghasilkan status gagal dan memengaruhi status keseluruhan job.
Versi action pada contoh mengikuti versi yang ditetapkan dalam konfigurasi. Untuk proyek baru, periksa dokumentasi resmi GitHub Actions dan sesuaikan versi action yang digunakan bila diperlukan.
5. Mengunggah Proyek ke GitHub
Setelah semua file tersedia, buat repository baru di GitHub dengan nama python-ci-demo.
Jika repository dibuat melalui website GitHub, kamu dapat mengunggah proyek menggunakan Git melalui terminal.
Jalankan perintah berikut dari direktori proyek:
git commit -m "Add Python CI project"
git branch -M main
git remote add origin https://github.com/USERNAME/python-ci-demo.git
git push -u origin main


Ganti USERNAME dengan username GitHub milikmu dan pastikan URL repository sesuai dengan repository yang telah dibuat.
Perintah tersebut berfungsi untuk menginisialisasi Git, memasukkan file ke dalam commit, menetapkan branch utama, menghubungkan repository lokal dengan GitHub, dan mengirimkan perubahan ke repository jarak jauh.
Jika Git sudah terhubung dengan repository sebelumnya, tidak perlu menjalankan kembali seluruh perintah inisialisasi. Cukup lakukan commit dan push sesuai kondisi repository.
6. Memeriksa Hasil Workflow
Setelah proses push berhasil, GitHub Actions akan mendeteksi perubahan dan menjalankan workflow yang telah dibuat.
Untuk memeriksa hasilnya:
- Buka repository proyek di GitHub.
- Pilih tab Actions.
- Cari workflow bernama Python CI.
- Buka proses yang berjalan berdasarkan commit terbaru.
- Pilih job
testuntuk melihat detail setiap langkah.
Jika seluruh proses berjalan dengan baik, langkah checkout, penyiapan Python, instalasi dependensi, dan pengujian akan selesai tanpa kesalahan.
Pada bagian pengujian, hasilnya diharapkan menunjukkan bahwa ketiga test berhasil dijalankan.
Status hijau menandakan workflow berhasil diselesaikan, sedangkan status merah menunjukkan bahwa terdapat langkah yang gagal dan perlu diperiksa lebih lanjut.
7. Menguji Workflow Ketika Terjadi Kesalahan
Untuk memastikan CI benar-benar bekerja, kita perlu menguji kondisi ketika kode tidak memenuhi hasil yang diharapkan.
Buka file calculator.py, lalu ubah fungsi penjumlahan menjadi:
def add(a, b):
return a - b
Perubahan ini sengaja dibuat agar fungsi menghasilkan pengurangan, bukan penjumlahan.
Simpan perubahan tersebut, kemudian jalankan:
git add calculator.py
git commit -m "Test CI failure"
git push
Setelah perubahan dikirim, GitHub Actions akan menjalankan workflow kembali.
Karena hasil fungsi tidak lagi sesuai dengan ekspektasi pada test, pengujian akan gagal. GitHub akan menampilkan status gagal pada job test, disertai informasi mengenai test yang tidak lolos.

Kembalikan fungsi ke implementasi yang benar:
def add(a, b):
return a + b


Kemudian commit dan push kembali. Jika seluruh test lolos, workflow akan kembali berstatus berhasil.
Percobaan ini memperlihatkan fungsi utama CI: perubahan kode diperiksa secara otomatis dan kesalahan dapat diketahui sebelum perubahan tersebut diteruskan ke tahap berikutnya.
8. Memahami Batasan CI yang Dibuat
Pipeline yang dibangun dalam tutorial ini masih tergolong sederhana. Workflow baru memeriksa apakah fungsi Python lolos dari pengujian yang telah ditulis.
Artinya, status berhasil tidak otomatis menjamin bahwa seluruh aplikasi bebas dari bug. Kualitas pemeriksaan tetap bergantung pada cakupan test dan jenis validasi yang dijalankan.
Untuk mengembangkan pipeline lebih lanjut, beberapa peningkatan yang dapat dilakukan meliputi:
- Menambahkan lebih banyak unit test untuk berbagai skenario.
- Memasang dependensi proyek dari file
requirements.txt. - Menambahkan pemeriksaan kualitas kode menggunakan linter seperti Ruff.
- Menjalankan pengujian pada beberapa versi Python.
- Mengintegrasikan CI dengan proses build atau deployment setelah tahap pengujian berjalan dengan baik.
Peningkatan tersebut dapat dilakukan secara bertahap sesuai kebutuhan proyek. Untuk pemula, memulai dari satu job pengujian sudah cukup untuk memahami dasar otomatisasi CI.
Kesimpulan
GitHub Actions dapat digunakan untuk membangun Continuous Integration sederhana tanpa perlu menyiapkan server CI sendiri. Dengan menggabungkan Python, pytest, dan workflow YAML, pengujian dapat berjalan otomatis setiap kali perubahan dikirim ke repository.
Melalui praktik ini, pengembang dapat memahami alur dasar CI, mulai dari menyiapkan test, mengonfigurasi workflow, mengunggah kode, hingga memeriksa hasil pengujian dan menangani kegagalan.
Meskipun pipeline yang dibuat masih sederhana, pendekatan ini merupakan langkah awal yang berguna sebelum menerapkan proses CI/CD yang lebih lengkap pada proyek Python.
Penulis:
Mau Kuasai Cara Membuat CI Otomatis untuk Proyek Python Menggunakan GitHub Actions Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
