GitHub Actions: CI/CD Otomatis untuk Project Kamu • Erlkim

GitHub Actions: CI/CD Otomatis untuk Project Kamu

GitHub Actions: CI/CD Otomatis untuk Project Kamu
Jun 13, 2026 ... views
11 min

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 GitHub
  • on: Trigger (push dan pull request ke branch main)
  • jobs.greet: Job bernama “greet”
  • runs-on: Jalankan di Ubuntu terbaru
  • steps: 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:

  1. Checkout kode dari repository
  2. Setup Node.js (test di 3 versi: 18, 20, 22)
  3. Install dependencies dengan npm ci
  4. Jalankan linting
  5. Build project
  6. 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:

  1. Buka repository GitHub kamu

  2. Settings > Secrets and variables > Actions

  3. Tambah secret:

    • CLOUDFLARE_API_TOKEN: API token dari Cloudflare
    • CLOUDFLARE_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 repository
  • actions/setup-node: Setup Node.js
  • actions/cache: Cache dependencies
  • slackapi/slack-github-action: Kirim notifikasi ke Slack
  • docker/build-push-action: Build dan push Docker image
  • peaceiris/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

  1. Repository Settings > Secrets and variables > Actions
  2. Klik New repository secret
  3. 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:

![CI](https://github.com/username/repo/actions/workflows/ci.yml/badge.svg)

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

Komentar

0/2000