Arbetsflöden mellan repositoryn
Lär er att kedja samman arbetsflöden mellan olika repositoryn för att hantera beroenden och samordna komplexa distributioner.
Arbetsflöden mellan repositoryn är en gratis lektion i CI/CD med GitHub Actions och DevOps-pipelines på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för CI/CD med GitHub Actions och DevOps-pipelines, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i CI/CD med GitHub Actions och DevOps-pipelines innehåller totalt 4 lektioner.
Introduktion till arbetsflöden mellan kodförråd
I modern programvaruutveckling består applikationer ofta av flera komponenter som finns i olika kodförråd. Det kan handla om mikrotjänster, delade bibliotek eller separata konfigurationer för driftsättning.
Genom att samordna arbetsflöden mellan dessa separata kodförråd uppnår Ni större modularitet och tydligare ansvarsfördelning. I den här lektionen utforskar vi hur detta kan göras med GitHub Actions.
Varför samordna mellan kodförråd?
Traditionellt är GitHub Actions-arbetsflöden begränsade till ett enda kodförråd. Men tänk om Ni behöver:
- Bygga ett artefakt i ett kodförråd och utlösa en driftsättning i ett annat?
- Att ett centralt konfigurationskodförråd utlöser uppdateringar i flera kodförråd för tjänster?
- Tillämpa säkerhetsprinciper som hanteras i ett centralt kodförråd på alla andra?
Arbetsflöden mellan kodförråd löser dessa komplexa situationer.
Ansluta kodförråd: `repository_dispatch`
GitHub Actions erbjuder en särskild händelsetyp som kallas repository_dispatch. Den fungerar som en anpassad webhook för Era GitHub-kodförråd.
- Ett arbetsflöde ("avsändaren") skickar en API-begäran till GitHub.
- Ett annat arbetsflöde ("mottagaren") i ett annat kodförråd lyssnar efter denna specifika händelse.
Det gör det möjligt att programmatiskt utlösa arbetsflöden mellan olika kodförråd.
Konfigurera mottagarens arbetsflöde
För att ta emot en repository_dispatch-händelse måste ett arbetsflöde i målkodförrådet konfigureras så att det lyssnar efter den. Detta görs med nyckelordet on:.
Så här kan ett arbetsflöde i repo-B se ut:
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) }}"Förstå mottagarkonfigurationen
I det föregående exemplet:
on: repository_dispatch:instruerar GitHub att lyssna efter denna händelse.types: [my-custom-event]anger att arbetsflödet endast körs om den skickade händelsen har typenmy-custom-event. Ni kan definiera flera typer.github.event.actioninnehåller händelsetypen, till exempelmy-custom-event.github.event.client_payloadinnehåller eventuella anpassade data som skickades med händelsen.
Utlösa händelsen: skicka från ett annat repo
För att utlösa en repository_dispatch-händelse måste Ni göra en HTTP POST-begäran till GitHub API. Detta kan göras med curl eller GitHub CLI (gh cli) från ett annat GitHub Actions-arbetsflöde eller ett skript.
Viktiga krav:
- Ägarens namn och namnet på målrepositoryt.
- En händelse-
typesom det mottagande arbetsflödet lyssnar efter. - En
client_payloadför valfria anpassade data. - En personlig GitHub-åtkomsttoken (PAT) med behörigheten
repo.
Exempel: skicka med `gh cli`
Här är ett arbetsflöde i repo-A som skickar en händelse till repo-B. Observera hur vi använder en hemlighet för token och skickar med en 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 }}"}'Skydda åtkomst mellan repositorier
Den GITHUB_TOKEN som ett arbetsflöde får som standard är begränsad till det repository där arbetsflödet körs. För att utlösa händelser i *ett annat* repository behöver Ni en token med mer omfattande behörigheter.
- Använd en personlig åtkomsttoken (PAT) med behörigheten
repo. - Lagra denna PAT som en repository-hemlighet (till exempel
CROSS_REPO_PAT) i det utlösande repositoryt. - Hårdkoda aldrig PAT:er direkt i arbetsflödesfilerna.
Skicka anpassade data med `client_payload`
client_payload är ett JSON-objekt som Ni kan inkludera när Ni skickar en händelse. Det är viktigt för att skicka kontext eller data från det utlösande arbetsflödet till det mottagande.
Exempel på data som Ni kan skicka:
- Den commit-SHA eller det grennamn som utlöste bygget.
- Ett miljömål (till exempel "staging", "production").
- Ett versionsnummer för en artefakt som ska distribueras.
Kom ihåg: client_payload visas i arbetsflödesloggarna, så undvik känslig information.
Snabbtest om arbetsflöden mellan repositorier
Ni har lärt Er att orkestrera arbetsflöden mellan olika GitHub-repositorier. Nu testar vi Er förståelse av de viktigaste komponenterna.
Sammanfattning: orkestrera mellan repositorier
Ni har lärt Er att implementera arbetsflöden mellan repositorier med hjälp av repository_dispatch!
- Varför: För att hantera beroenden och orkestrera komplexa distributioner över flera repositorier.
- Hur: Ett arbetsflöde som 'avsändare' gör ett API-anrop till GitHub, vilket utlöser ett arbetsflöde som 'mottagare' i ett annat repo.
- Viktigt: Händelsetypen
repository_dispatchoch matchandetypesi det mottagande arbetsflödet. - Data: Använd
client_payloadför att skicka icke-känslig information mellan arbetsflöden. - Säkerhet: Använd alltid en PAT med behörigheten
repo, lagrad som en hemlighet, för åtkomst mellan repositorier.
Denna kraftfulla funktion möjliggör mycket flexibla och frikopplade CI/CD-pipelines.
Lär dig CI/CD med GitHub Actions och DevOps-pipelines med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Arbetsflöden mellan repositoryn” gratis?
Ja – hela texten till ”Arbetsflöden mellan repositoryn” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i CI/CD med GitHub Actions och DevOps-pipelines, kan Ni uppgradera till CoddyKit PRO. Kursen i CI/CD med GitHub Actions och DevOps-pipelines innehåller totalt 4 lektioner.
Vad lär jag mig i ”Arbetsflöden mellan repositoryn”?
Lär er att kedja samman arbetsflöden mellan olika repositoryn för att hantera beroenden och samordna komplexa distributioner. Ni övar på CI/CD med GitHub Actions och DevOps-pipelines med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig CI/CD med GitHub Actions och DevOps-pipelines?
Du behöver inga förkunskaper. Utbildningen i CI/CD med GitHub Actions och DevOps-pipelines på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Arbetsflöden mellan repositoryn”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här CI/CD med GitHub Actions och DevOps-pipelines-lektionen?
Ja. Varje CI/CD med GitHub Actions och DevOps-pipelines-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- CI/CD för monorepon
- Arbetsflöden mellan repositoryn
- Centraliserad arbetsflödeshantering
- Sökvägsfiltrering och selektiva byggen