Kem Intensif DevOps · Pelajaran

Aliran Kerja Merentas Repositori

Pelajari cara merantai aliran kerja merentas repositori berbeza untuk mengurus kebergantungan dan menyusun penggunaan yang kompleks.

Pelajaran 2 daripada 411 langkah

Aliran Kerja Merentas Repositori ialah pelajaran Kem Intensif DevOps percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kem Intensif DevOps, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kem Intensif DevOps merangkumi sejumlah 4 pelajaran.

Pengenalan kepada Aliran Kerja Rentas Repositori

Dalam pembangunan perisian moden, aplikasi selalunya terdiri daripada beberapa komponen yang tersebar di repositori berlainan. Contohnya, perkhidmatan mikro, pustaka dikongsi atau konfigurasi penggunaan yang berasingan.

Menyelaraskan aliran kerja merentas repositori yang berbeza ini membolehkan modulariti dan pengasingan tanggungjawab yang lebih baik. Pelajaran ini menerangkan cara melakukannya dengan GitHub Actions.

Mengapa Orkestrasi Rentas Repositori?

Secara tradisional, aliran kerja GitHub Actions terhad kepada satu repositori. Tetapi bagaimana jika Anda perlu:

  • Membina artifak dalam satu repositori dan mencetuskan penggunaan dalam repositori lain?
  • Menggunakan repositori konfigurasi dikongsi untuk mencetuskan kemas kini dalam beberapa repositori perkhidmatan?
  • Menguatkuasakan dasar keselamatan yang diurus dalam repositori pusat merentas semua repositori lain?

Aliran kerja rentas repositori menyediakan penyelesaian untuk senario kompleks ini.

Menyambungkan Repositori: `repository_dispatch`

GitHub Actions menawarkan jenis peristiwa khas yang dipanggil repository_dispatch. Ia bertindak seperti cangkuk web tersuai untuk repositori GitHub Anda.

  • Satu aliran kerja ("penghantar") menghantar permintaan API kepada GitHub.
  • Satu lagi aliran kerja ("penerima") dalam repositori lain mendengar peristiwa khusus ini.

Ini membolehkan aliran kerja dicetuskan secara terprogram merentas repositori yang berbeza.

Menyediakan Aliran Kerja Penerima

Untuk menerima peristiwa repository_dispatch, aliran kerja dalam repositori sasaran perlu dikonfigurasikan supaya mendengarnya. Ini dilakukan menggunakan kata kunci on:.

Beginilah rupa aliran kerja dalam 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

Dalam contoh sebelumnya:

  • on: repository_dispatch: memberitahu GitHub supaya mendengar peristiwa ini.
  • types: [my-custom-event] menentukan bahawa aliran kerja ini hanya akan berjalan jika peristiwa yang dihantar mempunyai jenis my-custom-event. Anda boleh menentukan beberapa jenis.
  • github.event.action akan mengandungi jenis peristiwa (contohnya, my-custom-event).
  • github.event.client_payload menyimpan sebarang data tersuai yang dihantar bersama penghantaran tersebut.

Mencetuskan Peristiwa: Menghantar dari Repositori Lain

Untuk mencetuskan peristiwa repository_dispatch, anda perlu membuat permintaan HTTP POST kepada API GitHub. Hal ini boleh dilakukan menggunakan curl atau CLI GitHub (gh cli) dari dalam aliran kerja GitHub Actions yang lain atau skrip.

Keperluan utama:

  • Pemilik dan nama repositori sasaran.
  • type peristiwa yang sedang didengar oleh aliran kerja penerima.
  • client_payload untuk sebarang data tersuai.
  • Token Akses Peribadi GitHub (PAT) dengan skop repo.

Contoh: Menghantar dengan `gh cli`

Berikut ialah aliran kerja dalam repo-A yang menghantar peristiwa kepada repo-B. Perhatikan bahawa kita menggunakan rahsia untuk token dan menghantar 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 }}"}'

Melindungi Akses Rentas Repositori

GITHUB_TOKEN lalai yang disediakan kepada aliran kerja adalah terhad kepada repositori tempat aliran kerja itu dijalankan. Untuk mencetuskan peristiwa dalam repositori *lain*, anda memerlukan token dengan keizinan yang lebih luas.

  • Gunakan Token Akses Peribadi (PAT) dengan skop repo.
  • Simpan PAT ini sebagai rahsia repositori (contohnya, CROSS_REPO_PAT) dalam repositori pencetus.
  • Jangan sekali-kali mengekod keras PAT secara langsung dalam fail aliran kerja anda.

Menghantar Data Tersuai dengan `client_payload`

client_payload ialah objek JSON yang boleh anda sertakan semasa menghantar peristiwa. Hal ini penting untuk menghantar konteks atau data daripada aliran kerja pencetus kepada aliran kerja penerima.

Contoh data yang mungkin anda hantar:

  • SHA komit atau nama cabang yang mencetuskan binaan.
  • Sasaran persekitaran (contohnya, "pementasan", "pengeluaran").
  • Nombor versi artifak yang akan digunakan.

Ingat: client_payload kelihatan dalam log aliran kerja, jadi elakkan maklumat sensitif.

Semakan Ringkas Aliran Kerja Rentas Repositori

Anda telah mempelajari cara mengatur aliran kerja merentas repositori GitHub yang berbeza. Mari uji pemahaman anda tentang komponen utama.

Imbas Kembali: Mengatur Merentas Repositori

Anda telah berjaya mempelajari cara melaksanakan aliran kerja rentas repositori menggunakan repository_dispatch!

  • Sebab: Untuk mengurus kebergantungan dan mengatur penggunaan kompleks merentas berbilang repositori.
  • Cara: Aliran kerja 'penghantar' membuat panggilan API kepada GitHub, lalu mencetuskan aliran kerja 'penerima' dalam repositori lain.
  • Kunci: Jenis peristiwa repository_dispatch dan types yang sepadan dalam aliran kerja penerima.
  • Data: Gunakan client_payload untuk menghantar maklumat tidak sensitif antara aliran kerja.
  • Keselamatan: Sentiasa gunakan PAT dengan skop repo, yang disimpan sebagai rahsia, untuk akses rentas repositori.

Ciri berkuasa ini membolehkan saluran paip CI/CD yang sangat fleksibel dan tidak bergantung antara satu sama lain.

Percuma untuk bermula

Pelajari Kem Intensif DevOps dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
142
Pelajaran
568

Soalan Lazim

Adakah pelajaran “Aliran Kerja Merentas Repositori” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kem Intensif DevOps, termasuk “Aliran Kerja Merentas Repositori”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Kem Intensif DevOps merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Aliran Kerja Merentas Repositori”?

Pelajari cara merantai aliran kerja merentas repositori berbeza untuk mengurus kebergantungan dan menyusun penggunaan yang kompleks. Anda berlatih Kem Intensif DevOps menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Kem Intensif DevOps?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Kem Intensif DevOps di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Aliran Kerja Merentas Repositori” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kem Intensif DevOps ini?

Ya. Setiap pelajaran Kem Intensif DevOps menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. CI/CD untuk Monorepositori
  2. Aliran Kerja Merentas Repositori
  3. Pengurusan Aliran Kerja Berpusat
  4. Penapisan Laluan dan Binaan Terpilih
← Kembali ke Kem Intensif DevOps