Aliran Kerja Merentas Repositori
Pelajari cara merantai aliran kerja merentas repositori berbeza untuk mengurus kebergantungan dan menyusun penggunaan yang kompleks.
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 jenismy-custom-event. Anda boleh menentukan beberapa jenis.github.event.actionakan mengandungi jenis peristiwa (contohnya,my-custom-event).github.event.client_payloadmenyimpan 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.
typeperistiwa yang sedang didengar oleh aliran kerja penerima.client_payloaduntuk 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_dispatchdantypesyang sepadan dalam aliran kerja penerima. - Data: Gunakan
client_payloaduntuk 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.
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
- CI/CD untuk Monorepositori
- Aliran Kerja Merentas Repositori
- Pengurusan Aliran Kerja Berpusat
- Penapisan Laluan dan Binaan Terpilih