0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · Pelajaran

Pemfilteran Jalur dan Build Selektif

Picu hanya alur kerja dan tugas yang terdampak perubahan menggunakan filter jalur, deteksi perubahan, dan matriks kondisional dalam monorepo serta pengaturan multirepo.

Pemfilteran Jalur dan Build Selektif adalah pelajaran CI/CD with GitHub Actions & DevOps Pipelines gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar CI/CD with GitHub Actions & DevOps Pipelines, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus CI/CD with GitHub Actions & DevOps Pipelines mencakup 4 pelajaran total.

Masalah Build yang Terbuang

Dalam monorepo, perubahan pada dokumentasi seharusnya tidak membuat backend, frontend, dan aplikasi seluler dibangun serta di-deploy ulang.

Build selektif hanya menjalankan bagian pipeline yang terdampak oleh perubahan, sehingga menghemat waktu dan menit runner.

Filter Path pada Pemicu

Pendekatan paling sederhana adalah filter paths pada pemicu. Workflow hanya berjalan ketika file yang cocok dengan pola mengalami perubahan.

on:
  push:
    paths:
      - 'services/api/**'

Mengabaikan Path

Anda juga dapat melakukan kebalikannya dengan paths-ignore: jalankan workflow untuk semuanya kecuali path yang tercantum.

Ini berguna untuk melewati CI jika hanya dokumentasi yang berubah.

on:
  push:
    paths-ignore:
      - 'docs/**'
      - '**.md'

Batasan Filter Pemicu

Filter pada tingkat pemicu menentukan apakah seluruh workflow berjalan. Namun, dalam monorepo Anda sering kali menginginkan satu workflow yang menentukan job mana yang dijalankan.

Untuk itu, deteksi perubahan di dalam workflow dan tentukan percabangan berdasarkan hasilnya.

Action Deteksi Perubahan

Action dorny/paths-filter memeriksa diff dan menghasilkan nilai boolean untuk setiap kelompok path yang diberi nama.

Job berikutnya membaca keluaran tersebut untuk menentukan apakah harus berjalan.

  - uses: dorny/paths-filter@v3
    id: changes
    with:
      filters: |
        api:
          - 'services/api/**'
        web:
          - 'services/web/**'

Membatasi Job Berdasarkan Perubahan

Job deteksi menyediakan keluaran; job lanjutan menggunakan if bersama konteks needs agar berjalan secara kondisional.

  build-api:
    needs: detect
    if: needs.detect.outputs.api == 'true'
    runs-on: ubuntu-latest
    steps:
      - run: ./build-api.sh

Menghubungkan Keluaran

Job deteksi harus mendeklarasikan outputs yang meneruskan hasil filter agar dapat dibaca oleh job lain.

  detect:
    runs-on: ubuntu-latest
    outputs:
      api: ${{ steps.changes.outputs.api }}
      web: ${{ steps.changes.outputs.web }}

Matriks Dinamis

Untuk banyak layanan, Anda dapat membuat matriks secara dinamis berdasarkan path yang berubah, sehingga hanya layanan yang berubah yang masuk ke matriks.

Hasilkan daftar JSON dalam satu job dan masukkan daftar tersebut ke matriks job berikutnya.

    strategy:
      matrix:
        service: ${{ fromJSON(needs.detect.outputs.list) }}

Git Diff untuk Deteksi

Anda juga dapat mendeteksi perubahan dengan git mentah. Bandingkan commit saat ini dengan basisnya untuk mencantumkan direktori yang berubah.

git diff --name-only origin/main...HEAD | cut -d/ -f1-2 | sort -u

Pemeriksaan Wajib dan Pelewatan

Waspadalah: jika pemeriksaan status wajib dilewati karena tidak ada perubahan, perlindungan branch dapat memblokir merge karena menunggunya.

Solusinya adalah menambahkan job gerbang terakhir yang selalu berhasil dan menjadi satu-satunya pemeriksaan wajib, dengan merangkum job kondisional.

  gate:
    needs: [build-api, build-web]
    if: always()
    runs-on: ubuntu-latest
    steps:
      - run: echo 'all required jobs resolved'

Caching per Paket

Build selektif sangat cocok dipadukan dengan cache per paket. Gunakan lockfile setiap layanan sebagai kunci cache agar perubahan yang tidak berkaitan tidak membatalkannya.

Secara bersama-sama, keduanya menjaga pipeline monorepo tetap cepat meskipun repositori berkembang.

Pemeriksaan Singkat

Uji pemahaman Anda tentang build selektif.

Ringkasan

Anda telah mempelajari cara membangun hanya bagian yang berubah.

  • paths dan paths-ignore mengatur seluruh workflow
  • Action deteksi perubahan menghasilkan nilai boolean per path
  • Job menggunakan if + needs untuk berjalan secara kondisional, dan matriks dapat dibuat secara dinamis
  • Tambahkan job gerbang always() agar kompatibel dengan pemeriksaan wajib

Build selektif menjaga CI/CD monorepo tetap cepat dan hemat.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pemfilteran Jalur dan Build Selektif” gratis?

Ya — teks lengkap “Pemfilteran Jalur dan Build Selektif” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus CI/CD with GitHub Actions & DevOps Pipelines, upgrade ke CoddyKit PRO. Kursus CI/CD with GitHub Actions & DevOps Pipelines mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pemfilteran Jalur dan Build Selektif”?

Picu hanya alur kerja dan tugas yang terdampak perubahan menggunakan filter jalur, deteksi perubahan, dan matriks kondisional dalam monorepo serta pengaturan multirepo. Kamu berlatih CI/CD with GitHub Actions & DevOps Pipelines dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai CI/CD with GitHub Actions & DevOps Pipelines?

Tidak diperlukan pengalaman sebelumnya. CI/CD with GitHub Actions & DevOps Pipelines di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Pemfilteran Jalur dan Build Selektif” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran CI/CD with GitHub Actions & DevOps Pipelines ini?

Ya. Setiap pelajaran CI/CD with GitHub Actions & DevOps Pipelines menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. CI/CD untuk Monorepo
  2. Alur Kerja Lintas Repositori
  3. Pengelolaan Alur Kerja Terpusat
  4. Pemfilteran Jalur dan Build Selektif
← Kembali ke CI/CD with GitHub Actions & DevOps Pipelines