GitHub Actions: CI/CD untuk Tim
Automatisasi testing, building, dan deployment dengan GitHub Actions
Tujuan Pembelajaran
- Bisa membuat GitHub Actions workflow
- Mengerti triggers, jobs, dan steps
- Bisa setup automated testing dan deployment
Analogi
GitHub Actions:
├── Trigger (on: push, PR, schedule)
├── Job (group of steps)
├── Step (individual command/action)
└── Runner (execution environment)
GitHub Actions mengotomatisasi workflow development — dari test sampai deploy
Penjelasan Konsep
Setelah menguasai Git dan Pull Request, saatnya mengotomatisasi workflow dengan GitHub Actions. CI/CD (Continuous Integration/Continuous Deployment) adalah praktik otomatisasi build, test, dan deploy setiap kali ada perubahan kode.
Kenapa CI/CD?
- Konsistensi: Setiap perubahan melewati proses yang sama
- Cepat: Otomatisasi lebih cepat dan tidak terlupakan daripada manual
- Safety: Test sebagai gatekeeper sebelum deploy
- Visibility: Semua orang bisa lihat status build
Konsep GitHub Actions
Workflow
File YAML di .github/workflows/ yang mendefinisikan automation.
Trigger
Event yang memicu workflow:
push: Saat ada push ke branchpull_request: Saat ada PR dibuat/updatedschedule: Jadwal periodic (cron)workflow_dispatch: Manual trigger dari UI
Job
Group dari steps yang berjalan pada satu runner. Jobs bisa parallel atau sequential (dengan needs).
Step
Individual command atau action.
Runner
Mesin virtual yang mengeksekusi workflow (Ubuntu, Windows, macOS).
Action
Reusable unit of code. Bisa dari GitHub Marketplace atau buat sendiri.
Contoh Workflow Lengkap
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
- run: bun install
- run: bun run lint
- run: bun test
- run: bun run build
deploy:
needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- run: echo "Deploying..."
Secrets dan Environment Variables
Simpan API key dan credential secara aman:
- Buka repository Settings → Secrets and variables → Actions
- Tambahkan secret (ter-enkripsi) atau variable
- Akses di workflow dengan
${{ secrets.NAMA_SECRET }}
Inti yang Perlu Dipahami
Bagian ini berfokus pada bisa membuat GitHub Actions workflow., mengerti triggers, jobs, dan steps., dan bisa setup automated testing dan deployment. Jangan terburu-buru menghafal istilahnya. Lebih penting untuk memahami peran setiap konsep dan kapan konsep itu muncul dalam pekerjaan web development.
Saat membaca GitHub Actions, gunakan tujuan belajar sebagai penanda arah. Kalau kamu sudah bisa menjelaskan tujuan itu dengan kata-katamu sendiri, berarti fondasinya mulai terbentuk.
Cara Membayangkannya
GitHub Actions mengotomatisasi workflow development — dari test sampai deploy. Analogi ini dipakai supaya konsep teknis tidak terasa melayang. Hubungkan setiap istilah dengan perannya: siapa yang meminta, siapa yang memproses, data apa yang berpindah, dan hasil apa yang diharapkan.
Kalau analoginya sudah terasa masuk akal, barulah lihat istilah teknisnya. Cara ini membuat materi lebih mudah dipahami daripada langsung menghafal definisi.
Saat Melihat Contoh Kode
Contoh kode pada chapter ini memakai bahasa yaml. Bacalah contoh kode sebagai ilustrasi alur, bukan sebagai bagian yang harus langsung dihafal. needs: lint-and-test membuat job deploy menunggu job test selesai. if: github.ref memastikan deploy hanya dari branch main.
Perhatikan nama fungsi, urutan langkah, dan data yang berpindah. Biasanya tiga hal itu sudah cukup untuk memahami hubungan antara teori dan praktik.
Konteks dalam Perjalanan Belajar
Setiap konsep di platform ini dipilih karena dipakai di industri. Fokus pada pemahaman, bukan hafalan.
Kamu sudah di bagian lanjutan. Mulai pikirkan bagaimana konsep ini dipakai di dunia kerja — bukan hanya untuk belajar, tapi untuk membangun produk nyata.
Gunakan pertanyaan reflektif dan prompt AI di akhir chapter sebagai latihan aktif. Membaca saja tidak cukup — kamu perlu menjelaskan ulang dengan kata-katamu sendiri.
Contoh Kode
# .github/workflows/ci.yml
name: CI/CD Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
lint-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install dependencies
run: bun install
- name: Run linter
run: bun run lint
- name: Run tests
run: bun test
- name: Upload coverage
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coverage/
build-and-deploy:
needs: lint-and-test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
- name: Install and build
run: |
bun install
bun run build
- name: Deploy to production
env:
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
run: |
echo "Deploying with key $DEPLOY_KEY"
# Deployment commands herePenjelasan Kode
Prompt AI
Setup GitHub Actions untuk proyek-mu: lint → test → build. Tambahkan step untuk upload artifact dan notification.
Pertanyaan Reflektif
CI/CD yang cepat = feedback loop yang cepat. Target: pipeline selesai dalam < 5 menit untuk unit + integration test.