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

Alur Kerja Lintas Repositori

Pelajari cara merangkai alur kerja di berbagai repositori untuk mengelola dependensi dan mengatur penerapan yang kompleks.

Alur Kerja Lintas Repositori adalah pelajaran CI/CD with GitHub Actions & DevOps Pipelines gratis di CoddyKit. Ini adalah pelajaran 2 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.

Pengantar Alur Kerja Lintas Repositori

Dalam pengembangan perangkat lunak modern, aplikasi sering kali terdiri dari beberapa komponen yang tersebar di berbagai repositori. Contohnya adalah layanan mikro, pustaka bersama, atau konfigurasi penerapan yang terpisah.

Mengoordinasikan alur kerja di berbagai repositori tersebut memungkinkan modularitas dan pemisahan tanggung jawab yang lebih baik. Pelajaran ini membahas cara mencapainya dengan GitHub Actions.

Mengapa Orkestrasi Lintas Repositori?

Secara tradisional, alur kerja GitHub Actions terbatas pada satu repositori. Namun, bagaimana jika Anda perlu:

  • Membangun artefak di satu repositori dan memicu penerapan di repositori lain?
  • Menggunakan repositori konfigurasi bersama untuk memicu pembaruan di beberapa repositori layanan?
  • Memberlakukan kebijakan keamanan yang dikelola di repositori pusat pada semua repositori lainnya?

Alur kerja lintas repositori menyediakan solusi untuk skenario kompleks ini.

Menghubungkan Repositori: `repository_dispatch`

GitHub Actions menyediakan jenis peristiwa khusus bernama repository_dispatch. Peristiwa ini berfungsi seperti webhook khusus untuk repositori GitHub Anda.

  • Satu alur kerja ("pengirim") mengirimkan permintaan API ke GitHub.
  • Alur kerja lain ("penerima") di repositori berbeda mendengarkan peristiwa khusus ini.

Dengan demikian, alur kerja dapat dipicu secara terprogram di berbagai repositori.

Menyiapkan Alur Kerja Penerima

Untuk menerima peristiwa repository_dispatch, alur kerja di repositori target perlu dikonfigurasi agar mendengarkannya. Hal ini dilakukan menggunakan kata kunci on:.

Berikut contoh tampilan alur kerja di repo-B:

name: Receive Dispatch Event

on:
  repository_dispatch:
    types: [my-custom-event]

jobs:
  process-event:
    runs-on: ubuntu-latest
    steps:
      - name: Log event payload
        run: |
          echo "Event type: ${{ github.event.action }}"
          echo "Payload: ${{ toJSON(github.event.client_payload) }}"

Memahami Konfigurasi Penerima

Pada contoh sebelumnya:

  • on: repository_dispatch: memberi tahu GitHub untuk mendengarkan peristiwa ini.
  • types: [my-custom-event] menentukan bahwa alur kerja ini hanya akan berjalan jika peristiwa yang dikirim memiliki jenis my-custom-event. Anda dapat menentukan beberapa jenis.
  • github.event.action akan berisi jenis peristiwa (misalnya, my-custom-event).
  • github.event.client_payload menyimpan data khusus apa pun yang dikirim bersama pengiriman peristiwa.

Memicu Event: Mengirim dari Repo Lain

Untuk memicu event repository_dispatch, Anda perlu membuat permintaan HTTP POST ke API GitHub. Anda dapat melakukannya menggunakan curl atau CLI GitHub (gh cli) dari dalam alur kerja GitHub Actions lain atau skrip.

Persyaratan utama:

  • Pemilik dan nama repositori target.
  • type event yang sedang dipantau oleh alur kerja penerima.
  • client_payload untuk data khusus apa pun.
  • Token Akses Pribadi GitHub (PAT) dengan cakupan repo.

Contoh: Mengirim dengan `gh cli`

Berikut alur kerja di repo-A yang mengirim event ke repo-B. Perhatikan bahwa kita menggunakan rahasia untuk token dan meneruskan client_payload.

name: Trigger Deploy Workflow

on:
  push:
    branches: [main]

jobs:
  dispatch:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Install GitHub CLI
        run: sudo apt-get update && sudo apt-get install gh -y

      - name: Dispatch event to repo-B
        env:
          GH_TOKEN: ${{ secrets.CROSS_REPO_PAT }}
        run: |
          gh api \
            --method POST \
            -H "Accept: application/vnd.github.v3+json" \
            /repos/YOUR_ORG/repo-B/dispatches \
            -f event_type='my-custom-event' \
            -f client_payload='{"ref":"${{ github.ref }}", "sha":"${{ github.sha }}"}'

Mengamankan Akses Lintas Repositori

GITHUB_TOKEN default yang disediakan untuk suatu alur kerja terbatas pada repositori tempat alur kerja tersebut berjalan. Untuk memicu event di repositori *lain*, Anda memerlukan token dengan izin yang lebih luas.

  • Gunakan Token Akses Pribadi (PAT) dengan cakupan repo.
  • Simpan PAT ini sebagai rahasia repositori (misalnya, CROSS_REPO_PAT) di repositori pemicu.
  • Jangan pernah menuliskan PAT secara langsung di file alur kerja Anda.

Meneruskan Data Khusus dengan `client_payload`

client_payload adalah objek JSON yang dapat Anda sertakan saat mengirim event. Ini penting untuk meneruskan konteks atau data dari alur kerja pemicu ke alur kerja penerima.

Contoh data yang dapat Anda teruskan:

  • SHA commit atau nama cabang yang memicu build.
  • Target lingkungan (misalnya, "staging", "production").
  • Nomor versi artefak yang akan diterapkan.

Ingat: client_payload terlihat di log alur kerja, jadi hindari informasi sensitif.

Pemeriksaan Singkat Alur Kerja Lintas Repo

Anda telah mempelajari cara mengatur alur kerja di berbagai repositori GitHub. Mari uji pemahaman Anda tentang komponen-komponen utama.

Rangkuman: Mengatur Alur Kerja Lintas Repo

Anda telah berhasil mempelajari cara menerapkan alur kerja lintas repositori menggunakan repository_dispatch!

  • Alasan: Untuk mengelola dependensi dan mengatur penerapan yang kompleks di berbagai repositori.
  • Cara: Alur kerja 'pengirim' melakukan panggilan API ke GitHub, lalu memicu alur kerja 'penerima' di repositori lain.
  • Kunci: Jenis event repository_dispatch dan types yang cocok di alur kerja penerima.
  • Data: Gunakan client_payload untuk meneruskan informasi non-sensitif antaralur kerja.
  • Keamanan: Selalu gunakan PAT dengan cakupan repo, yang disimpan sebagai rahasia, untuk akses lintas repo.

Fitur yang kuat ini memungkinkan alur CI/CD yang sangat fleksibel dan terpisah.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Alur Kerja Lintas Repositori” gratis?

Ya — teks lengkap “Alur Kerja Lintas Repositori” 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 “Alur Kerja Lintas Repositori”?

Pelajari cara merangkai alur kerja di berbagai repositori untuk mengelola dependensi dan mengatur penerapan yang kompleks. 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 2 dari 4.

Berapa lama pelajaran “Alur Kerja Lintas Repositori” 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