Panduan Lengkap Setup CI/CD dengan GitHub Actions & Docker untuk Aplikasi Node.js (2026)


Pelajari cara mengotomatiskan build, test, dan deploy aplikasi Node.js menggunakan Docker dan GitHub Actions dalam panduan step‑by‑step terperinci yang up‑to‑date untuk Juni 2026.

1. Prasyarat

Pastikan Anda memiliki:

  • Akun GitHub dengan akses ke repository.
  • Docker Engine 24.0+ terinstall di mesin lokal (panduan instalasi).
  • Node.js 20 LTS terinstall.
  • Git CLI.

2. Membuat Proyek Node.js Baru

mkdir my-node-app && cd my-node-app
npm init -y
npm i express

Buat file index.js sederhana:

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
app.get('/', (req, res) => res.send('Hello from CI/CD!'));
app.listen(PORT, () => console.log(`🚀 Server running on port ${PORT}`));

3. Menulis Dockerfile

Buat file Dockerfile di root project:

# syntax=docker/dockerfile:1.4
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
# Build stage (optional untuk transpiler, contoh TypeScript)
# RUN npm run build

FROM node:20-alpine AS runtime
WORKDIR /app
COPY --from=builder /app .
EXPOSE 3000
CMD ["node", "index.js"]

Best practice: gunakan multi‑stage build untuk mengurangi ukuran image, hindari npm install di runtime, dan set NODE_ENV=production pada langkah build.

4. Membuat .dockerignore

node_modules
npm-debug.log
Dockerfile
.git
.gitignore

5. Push Repository ke GitHub

git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com//my-node-app.git
git push -u origin main

6. Konfigurasi GitHub Actions Workflow

Buat folder .github/workflows dan file ci-cd.yml:

name: CI/CD Pipeline

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Set up Node.js 20
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Lint code (ESLint)
        run: npx eslint . --ext .js

      - name: Run unit tests
        run: npm test --if-present

      - name: Build Docker image
        run: |
          docker version
          docker build -t ghcr.io/${{ github.repository_owner }}/my-node-app:${{ github.sha }} .

      - name: Log in to GitHub Container Registry
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Push Docker image
        run: |
          docker push ghcr.io/${{ github.repository_owner }}/my-node-app:${{ github.sha }}

  deploy:
    needs: build-test
    runs-on: ubuntu-latest
    environment: production
    steps:
      - name: Deploy to Render (contoh PaaS)
        uses: render-examples/render-deploy-action@v1
        with:
          service-id: ${{ secrets.RENDER_SERVICE_ID }}
          api-key: ${{ secrets.RENDER_API_KEY }}
          image: ghcr.io/${{ github.repository_owner }}/my-node-app:${{ github.sha }}

Penjelasan tiap job:

  • build-test: checkout kode, setup Node, instalasi deps, lint, test, build image, push ke GitHub Container Registry (GHCR).
  • deploy: setelah image berhasil dipush, workflow memanggil action khusus penyedia platform (contoh Render, dapat diganti ke Fly.io, Railway, atau Kubernetes).

7. Mengamankan Secrets

Tambahkan secret ke repository:

  • GITHUB_TOKEN sudah tersedia otomatis.
  • RENDER_API_KEY dan RENDER_SERVICE_ID harus di‑create di Settings → Secrets → Actions.

8. Memverifikasi Pipeline

Push perubahan baru ke main dan periksa tab Actions di GitHub. Semua step harus lulus. Jika build gagal, periksa log; biasanya masalah terletak pada linting atau test yang belum di‑setup.

9. Deploy ke Kubernetes (Opsional)

Jika tim Anda menggunakan K8s, tambahkan job tambahan di workflow:

  deploy-k8s:
    needs: build-test
    runs-on: ubuntu-latest
    steps:
      - name: Set up kubectl
        uses: azure/setup-kubectl@v3
        with:
          version: 'v1.28.0'

      - name: Configure kubeconfig
        run: |
          echo "$KUBE_CONFIG" | base64 -d > $HOME/.kube/config
        env:
          KUBE_CONFIG: ${{ secrets.KUBE_CONFIG_BASE64 }}

      - name: Update image in deployment
        run: |
          kubectl set image deployment/my-node-app my-node-app=ghcr.io/${{ github.repository_owner }}/my-node-app:${{ github.sha }} --record

Pastikan KUBE_CONFIG_BASE64 berisi konfigurasi cluster yang sudah diencode ke base64.

10. Best Practice Tambahan

  • Cache layer Docker: letakkan COPY package*.json sebelum source code untuk memanfaatkan cache layer pada rebuild.
  • Multi‑arch images: tambahkan flag --platform linux/amd64,linux/arm64 pada docker buildx jika Anda melayani runner dengan arsitektur berbeda.
  • Rollback strategy: simpan tag latest dan stable di GHCR; gunakan kubectl rollout undo bila diperlukan.
  • Security scanning: integrasikan trivy atau anchore dalam workflow untuk memindai kerentanan image.
  • Observability: tambahkan health‑check di Dockerfile dan configure Prometheus/Grafana di cluster untuk monitoring.

11. Penutup

Dengan mengikuti langkah‑langkah di atas, Anda memiliki pipeline CI/CD yang modern, scalable, dan sepenuhnya berbasis cloud. Semua komponen—Docker, GitHub Actions, dan registry GHCR—beroperasi secara native pada ekosistem 2026, memberikan kecepatan iterasi yang dibutuhkan tim Development dan Software Engineering saat ini.


Implementasi CI/CD otomatis dengan Docker dan GitHub Actions tidak hanya meningkatkan kecepatan release, tetapi juga menegakkan standar kualitas melalui linting, testing, dan scanning keamanan. Dengan menambahkan opsi deployment ke Kubernetes atau platform PaaS, tim dapat memilih infrastruktur yang paling cocok, sekaligus menjaga keterlacakan versi image melalui tag SHA. Terapkan best practice di atas, dan Anda siap menghadapi tantangan Programming, Software Engineering, dan Web Development modern.
Panduan langkah demi langkah 2026 untuk mengatur pipeline CI/CD dengan Docker dan GitHub Actions pada aplikasi Node.js, lengkap dengan contoh kode, konfigurasi, dan best practice.

Programming,Software Engineering,Web Development,CI/CD,Docker,GitHub Actions,Node.js

#Programming #SoftwareEngineering #WebDev #Tech #Coding

Posting Komentar

0 Komentar