Salah satu hal yang paling sering disepelekan saat membuat workflow GitHub Actions adalah urutan langkah. Banyak developer fokus pada tool, framework, atau script build, tapi lupa bahwa workflow itu pada dasarnya adalah alur logis.
Tiga step yang hampir selalu muncul—checkout, setup, dan cache—sebenarnya punya hubungan sebab-akibat yang jelas. Kalau urutannya salah, efeknya bisa berupa workflow lambat, cache selalu tidak cocok, atau bahkan error yang sulit dilacak.

Workflow adalah serangkaian instruksi otomatis yang dijalankan oleh GitHub setiap kali terjadi suatu event, misalnya push, pull request, atau jadwal tertentu.
Workflow ditulis dalam file YAML dan dieksekusi di runner GitHub yang pada awalnya selalu dalam kondisi kosong. Tidak ada kode, tidak ada dependency, dan tidak ada cache—semua harus disiapkan dari nol di setiap run.
Cara termudah memahami ini adalah dengan analogi dapur. Kamu tidak bisa memasak tanpa bahan, dan kamu tidak bisa menyimpan sisa makanan sebelum masakannya benar-benar ada.
Kalau urutannya dibalik, workflow memang bisa jalan, tapi hasilnya tidak optimal dan sering membuang waktu.
Step actions/checkout bertugas mengambil source code repository ke runner. Tanpa step ini, runner tidak tahu apa yang harus dibangun atau diuji.
- uses: actions/checkout@v4Setup digunakan untuk menentukan runtime dan toolchain, seperti Node.js, Java, Python, atau Go. Banyak setup membaca file dari repository (package.json, .tool-versions, dll), sehingga harus dilakukan setelah checkout.
- uses: actions/setup-node@v4
with:
node-version: 20Cache digunakan untuk mempercepat workflow dengan menyimpan dependency dari run sebelumnya. Cache key biasanya bergantung pada:
- uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node- name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('/package-lock.json') }}
- run: npm ci
- run: npm test
Workflow GitHub Actions yang cepat dan stabil tidak selalu butuh konfigurasi rumit. Sering kali, perbedaannya hanya terletak pada urutan langkah yang benar.
Ingat satu kalimat ini: checkout dulu, setup environment, baru cache. Sisanya tinggal menyesuaikan kebutuhan proyekmu.