GitHub Actions: CI/CD Otomatis untuk Project Kamu
Setiap kali push kode ke GitHub, apakah kamu masih manual build dan deploy? GitHub Actions bisa mengotomasi seluruh proses itu. Dari build, test, sampai deploy semuanya berjalan otomatis setiap kali ada push.
Apa Itu GitHub Actions?
GitHub Actions adalah platform CI/CD (Continuous Integration / Continuous Deployment) yang terintegrasi langsung dengan GitHub. Dengan GitHub Actions, kamu bisa membuat workflow yang otomatis menjalankan tugas-tugas tertentu saat ada event di repository seperti push, pull request, atau release.
CI/CD sendiri adalah praktik mengotomasi proses software development:
- Continuous Integration (CI): Setiap push kode otomatis di-build dan di-test
- Continuous Deployment (CD): Setelah test berhasil, kode otomatis di-deploy ke production
Mengapa GitHub Actions?
Beberapa keunggulan GitHub Actions:
- Terintegrasi langsung dengan GitHub, tidak perlu platform terpisah
- Gratis untuk public repository dan 2000 menit/bulan untuk private
- Mudah digunakan dengan syntax YAML yang sederhana
- Marketplace dengan ribuan action siap pakai
- Support semua bahasa dan framework
- Runs on Ubuntu, macOS, dan Windows
Konsep Dasar
Workflow
Workflow adalah file YAML yang mendefinisikan proses otomasi. Disimpan di folder .github/workflows/ di repository kamu.
Event
Event adalah trigger yang memulai workflow. Contoh: push ke branch main, pull request, atau schedule (cron).
Job
Job adalah kumpulan step yang berjalan di environment yang sama. Bisa berjalan paralel atau sequential.
Step
Step adalah tugas individu dalam job. Bisa berupa command shell atau action.
Action
Action adalah reusable unit yang sudah dibuat oleh komunitas. Bisa kamu temukan di GitHub Marketplace.
Runner
Runner adalah server yang menjalankan workflow. GitHub menyediakan runner gratis (Ubuntu, macOS, Windows) atau kamu bisa pakai self-hosted runner.
Workflow Pertama
Buat file .github/workflows/hello.yml:
name: Hello World
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
greet:
runs-on: ubuntu-latest
steps:
- name: Say Hello
run: echo "Hello from GitHub Actions!"
- name: Show Info
run: |
echo "Branch: ${{ github.ref }}"
echo "Commit: ${{ github.sha }}"
echo "Actor: ${{ github.actor }}"
Penjelasan:
name: Nama workflow yang tampil di GitHubon: Trigger (push dan pull request ke branch main)jobs.greet: Job bernama “greet”runs-on: Jalankan di Ubuntu terbarusteps: Dua step yang menjalankan command
Push file ini ke GitHub, lalu buka tab Actions di repository kamu. Workflow sudah berjalan!
CI untuk Node.js Project
Workflow yang lebih realistis untuk project Node.js:
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build-and-test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
- name: Build
run: npm run build
- name: Test
run: npm test
Workflow ini akan:
- Checkout kode dari repository
- Setup Node.js (test di 3 versi: 18, 20, 22)
- Install dependencies dengan
npm ci - Jalankan linting
- Build project
- Jalankan test
Semua berjalan otomatis setiap ada push atau pull request.
Deploy ke Cloudflare Pages
Contoh workflow untuk deploy Astro ke Cloudflare Pages:
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
- name: Install pnpm
run: npm install -g pnpm
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm build
- name: Deploy to Cloudflare Pages
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy dist --project-name=erlkim
Untuk menggunakan workflow ini, tambahkan secret di GitHub:
-
Buka repository GitHub kamu
-
Settings > Secrets and variables > Actions
-
Tambah secret:
CLOUDFLARE_API_TOKEN: API token dari CloudflareCLOUDFLARE_ACCOUNT_ID: Account ID Cloudflare
Catatan: Untuk blog erlkim.web.id, deploy sudah otomatis dari Cloudflare Pages tanpa perlu GitHub Actions. Tapi untuk project lain, workflow ini sangat berguna.
Scheduled Workflow
Kamu bisa menjalankan workflow secara terjadwal menggunakan cron syntax:
name: Daily Check
on:
schedule:
- cron: "0 8 * * *" # Setiap jam 8 pagi UTC
workflow_dispatch: # Bisa dijalankan manual
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Run health check
run: curl -s https://erlkim.web.id > /dev/null && echo "Site is up!" || echo "Site is down!"
- name: Notify if down
if: failure()
run: echo "Website is down! Sending notification..."
Jalankan manual dari tab Actions di GitHub dengan klik Run workflow.
Reusable Actions dari Marketplace
GitHub Marketplace punya ribuan action siap pakai:
actions/checkout: Clone repositoryactions/setup-node: Setup Node.jsactions/cache: Cache dependenciesslackapi/slack-github-action: Kirim notifikasi ke Slackdocker/build-push-action: Build dan push Docker imagepeaceiris/actions-gh-pages: Deploy ke GitHub Pages
Cara pakai:
- name: Cache node modules
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles("package-lock.json") }}
Secrets dan Environment Variables
Jangan pernah hardcode password atau API key di workflow file. Gunakan GitHub Secrets:
Setup Secrets
- Repository Settings > Secrets and variables > Actions
- Klik New repository secret
- Masukkan name dan value
Gunakan di Workflow
steps:
- name: Deploy
env:
API_KEY: ${{ secrets.API_KEY }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
run: ./deploy.sh
Environment Variables
jobs:
deploy:
runs-on: ubuntu-latest
environment: production
steps:
- name: Deploy
env:
NODE_ENV: production
run: npm run deploy
Kamu bisa buat environment berbeda (development, staging, production) dengan variable dan secret yang berbeda.
Tips dan Best Practices
1. Cache Dependencies
Jangan download dependencies setiap kali:
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
2. Gunakan Matrix Strategy
Test di beberapa versi bahasa sekaligus:
strategy:
matrix:
node-version: [18, 20, 22]
3. Batasi Trigger
Jangan trigger di semua branch:
on:
push:
branches: [main]
pull_request:
branches: [main]
4. Gunakan Concurrency
Batasi jumlah workflow yang berjalan bersamaan:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
5. Status Badge
Tambahkan badge di README:

Kesimpulan
GitHub Actions adalah tool CI/CD yang sangat powerful dan mudah digunakan. Dengan syntax YAML yang sederhana, kamu bisa mengotomasi build, test, dan deploy untuk setiap project. Mulai dari workflow sederhana, lalu tambah fitur seiring kebutuhan. Setiap developer harus belajar GitHub Actions karena ini sudah menjadi standar industri.
~Erlkim
Artikel Terkait

Docker untuk Pemula: Panduan Lengkap dari Nol
Belajar Docker dari nol. Apa itu Docker, mengapa penting, dan cara menggunakannya untuk project nyata.

Panduan Lengkap Memulai Astro: Framework Web Modern Super Cepat
Kenalan dengan Astro, framework web modern yang menghasilkan website super cepat dengan zero JavaScript secara default.

Belajar Rust dari Nol: Panduan Lengkap untuk Pemula
Panduan lengkap belajar Rust dari nol.
Komentar