Lewati ke konten utama
menjadi.dev
Chapter 51.3 Mobile Lanjutan

GitHub Actions untuk Mobile CI/CD

Pipeline otomatis: test, build, submit — setiap push ke main

Tujuan Pembelajaran

  • Memahami CI/CD pipeline untuk mobile development
  • Mampu mengkonfigurasi GitHub Actions dengan EAS
  • Mengerti strategi branching dan environment

Analogi

Diagram

      CI/CD Pipeline = Assembly Line Pabrik:
1. Push kode (bahan masuk)
2. Lint & Type check (QC awal)
3. Unit tests (QC fungsional)
4. Build (produksi)
5. Submit ke store (packing + kirim)

Setiap step gagal → line berhenti → developer dapat notif → perbaiki → ulangi
    

CI/CD seperti assembly line pabrik — kode masuk, melalui QC (lint, test), produksi (build), packing (submit). Kalau gagal di step mana pun, notifikasi ke developer.

Penjelasan Konsep

CI/CD untuk mobile development mengotomatiskan build dan deployment pipeline. GitHub Actions berjalan di GitHub servers — gratis untuk repository public.

Workflow file: .github/workflows/build.yml. Trigger: push ke branch tertentu, pull request, schedule (cron), atau manual (workflow_dispatch).

Steps: (1) Checkout code. (2) Setup Node.js + cache npm. (3) Install dependencies (npm ci). (4) Run lint + typecheck. (5) Run tests (Jest/Detox). (6) Login ke Expo (expo login --token $EXPO_TOKEN). (7) Run eas build --platform all --profile production --non-interactive. (8) Kalau build sukses → eas submit --platform all --latest --non-interactive.

Secrets: EXPO_TOKEN, APPLE_API_KEY, GOOGLE_PLAY_SERVICE_ACCOUNT disimpan di GitHub Secrets (Settings > Secrets). Tidak di-hardcode di workflow file.

Branching strategy: (1) Pull request ke main → test + lint, NO build. (2) Push ke main (merge PR) → test + lint + build + submit ke TestFlight. (3) Git tag (v1.0.0) → build + submit ke Production.

Triggers for mobile CI: (1) Setiap PR → test + lint (cepat, 2-5 menit). (2) Setiap push ke main → build staging (20-40 menit). (3) Scheduled nightly build → full E2E test. (4) Manual trigger → production release.

Inti yang Perlu Dipahami

Bagian ini berfokus pada memahami CI/CD pipeline untuk mobile development., mampu mengkonfigurasi GitHub Actions dengan EAS., dan mengerti strategi branching dan environment. Jangan terburu-buru menghafal istilahnya. Lebih penting untuk memahami peran setiap konsep dan kapan konsep itu muncul dalam pekerjaan web development.

Saat membaca GitHub Actions untuk Mobile CI/CD, gunakan tujuan belajar sebagai penanda arah. Kalau kamu sudah bisa menjelaskan tujuan itu dengan kata-katamu sendiri, berarti fondasinya mulai terbentuk.

Cara Membayangkannya

CI/CD seperti assembly line pabrik — kode masuk, melalui QC (lint, test), produksi (build), packing (submit). Kalau gagal di step mana pun, notifikasi ke developer. Analogi ini dipakai supaya konsep teknis tidak terasa melayang. Hubungkan setiap istilah dengan perannya: siapa yang meminta, siapa yang memproses, data apa yang berpindah, dan hasil apa yang diharapkan.

Kalau analoginya sudah terasa masuk akal, barulah lihat istilah teknisnya. Cara ini membuat materi lebih mudah dipahami daripada langsung menghafal definisi.

Saat Melihat Contoh Kode

Contoh kode pada chapter ini memakai bahasa yaml. Bacalah contoh kode sebagai ilustrasi alur, bukan sebagai bagian yang harus langsung dihafal. Trigger: push ke main atau manual (workflow_dispatch). Steps berurutan. Secrets diakses via ${{ secrets.NAME }}. expo-github-action untuk login otomatis.

Perhatikan nama fungsi, urutan langkah, dan data yang berpindah. Biasanya tiga hal itu sudah cukup untuk memahami hubungan antara teori dan praktik.

Konteks dalam Perjalanan Belajar

Setiap konsep di platform ini dipilih karena dipakai di industri. Fokus pada pemahaman, bukan hafalan.

Kamu sudah di bagian lanjutan. Mulai pikirkan bagaimana konsep ini dipakai di dunia kerja — bukan hanya untuk belajar, tapi untuk membangun produk nyata.

Gunakan pertanyaan reflektif dan prompt AI di akhir chapter sebagai latihan aktif. Membaca saja tidak cukup — kamu perlu menjelaskan ulang dengan kata-katamu sendiri.

Contoh Kode

yaml
name: Build and Submit
on:
  push:
    branches: [main]
  workflow_dispatch:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20, cache: 'npm' }
      - run: npm ci
      - run: npm run lint
      - uses: expo/expo-github-action@v8
        with: { expo-version: latest, token: ${{ secrets.EXPO_TOKEN }} }
      - run: eas build --platform all --profile preview --non-interactive
      - run: eas submit --platform all --latest --non-interactive

Penjelasan Kode

Trigger: push ke main atau manual (workflow_dispatch). Steps berurutan. Secrets diakses via ${{ secrets.NAME }}. expo-github-action untuk login otomatis.

Prompt AI

Desain CI/CD pipeline lengkap: (a) PR check (lint + typecheck + unit test), (b) staging build on merge to main (build iOS + Android, submit ke TestFlight), (c) production release on git tag (build + submit store). Tulis 3 file workflow YAML terpisah.

Pertanyaan Reflektif

Seberapa sering kamu akan deploy aplikasi mobile? Setiap hari? Setiap minggu? Bagaimana CI/CD mempengaruhi frekuensi deploy?