1. Apa itu GitHub Actions?
GitHub Actions adalah platform Continuous Integration & Continuous Deployment (CI/CD) native bawaan GitHub yang memungkinkan Anda mengotomatiskan alur kerja siklus hidup perangkat lunak (build, test, publish, deploy) secara otomatis saat terjadi event di repositori (seperti push, pull_request, atau pembuatan release).
๐ก Arsitektur Utama GitHub Actions:
- Workflow: Proses otomatis terkonfigurasi yang didefinisikan dalam berkas
.github/workflows/*.yml. - Event: Pemicu yang memulai alur kerja workflow (misal:
on: [push, pull_request]). - Job: Sekumpulan langkah (steps) yang dieksekusi pada runner (mesin Virtual Machine/Container) yang sama.
- Step: Tugas individual berupa eksekusi skrip shell (
run: ...) atau aksi terpaket (uses: ...). - Runner: Mesin VM server (seperti
ubuntu-latest,windows-latest, atau self-hosted) tempat job dijalankan.
2. Contoh Konfigurasi Workflow YAML Pertama
Simpan konfigurasi berikut di dalam berkas .github/workflows/ci-cd.yml pada repositori Anda:
.github/workflows/ci-cd.yml
name: Node.js CI & Docker Build Pipeline
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout Source Code
uses: actions/checkout@v5
- name: Setup Node.js Environment
uses: actions/setup-node@v5
with:
node-version: '22'
cache: 'npm'
- name: Install Dependencies
run: npm ci
- name: Run Unit Tests
run: npm test
- name: Build Production Bundle
run: npm run build
build-docker-image:
needs: build-and-test
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v5
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and Push Docker Image
uses: docker/build-push-action@v6
with:
push: true
tags: myuser/myapp:latest
3. Best Practices GitHub Actions
- Gunakan
secrets.SECRET_NAMEuntuk menyimpan API key, password, dan token secara aman (Settings -> Secrets and variables). - Manfaatkan fitur Caching (misal
actions/setup-nodedengancache: 'npm') untuk mempercepat durasi build. - Gunakan
needs: [job_name]untuk mengatur ketergantungan urutan eksekusi antar job.