Kodeloka
  1. Kodeloka
  2. Kelas Git & CI/CD
  3. Materi

GitHub Actions ยท Modul 9 dari 20

GitHub Actions Tutorial - Basic Concepts & CI/CD Pipeline

Konsep dasar GitHub Actions, Workflows, Jobs, Steps, Actions, Event Triggers, dan pembuatan pipeline CI/CD pertama dengan Docker.

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_NAME untuk menyimpan API key, password, dan token secara aman (Settings -> Secrets and variables).
  • Manfaatkan fitur Caching (misal actions/setup-node dengan cache: 'npm') untuk mempercepat durasi build.
  • Gunakan needs: [job_name] untuk mengatur ketergantungan urutan eksekusi antar job.