Återanvändbara arbetsflöden och Actions
Skapa och använd återanvändbara arbetsflöden och anpassade Actions för att modularisera era pipelines och främja konsekvens mellan repositoryn.
Återanvändbara arbetsflöden och Actions är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Introduktion till återanvändbara arbetsflöden
I modern programvaruutveckling är effektivitet och konsekvens avgörande. När era projekt växer ökar även era behov av automatisering.
Återanvändbara arbetsflöden och anpassade actions i GitHub Actions hjälper er att undvika upprepningar, vilket gör era CI/CD-pipelines mer lättunderhållna och robusta.
Varför återanvända arbetsflöden?
Föreställ er att ni har flera applikationer som alla behöver samma steg för bygge, testning eller driftsättning. Om ni kopierar och klistrar in arbetsflödeskod leder det till:
- Duplicering: Mer kod att underhålla.
- Inkonsekvens: Det är lätt att missa uppdateringar i olika arbetsflöden.
- Underhållsproblem: Ändringar kräver uppdatering av många filer.
Återanvändning löser dessa problem!
Definiera ett återanvändbart arbetsflöde
Ett återanvändbart arbetsflöde är ett komplett arbetsflöde som kan anropas av andra arbetsflöden. Det lagras i ert repository och fungerar som en mall.
För att göra ett arbetsflöde återanvändbart använder ni händelsen workflow_call. Det talar om för GitHub Actions att arbetsflödet är avsett att anropas och inte utlösas av typiska händelser som push eller pull_request.
Exempel på ett återanvändbart arbetsflöde
Här är ett enkelt återanvändbart arbetsflöde som simulerar ett bygge. Spara det i .github/workflows/reusable-build.yml.
Det definierar en output med namnet build_id som anropande arbetsflöden kan använda.
name: Reusable Build Component
on:
workflow_call:
outputs:
build_id:
description: "The ID of the build operation"
value: ${{ jobs.build.outputs.build_id }}
jobs:
build:
runs-on: ubuntu-latest
outputs:
build_id: ${{ steps.generate_id.outputs.id }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Generate build ID
id: generate_id
run: echo "id=$(date +%s)" >> "$GITHUB_OUTPUT"
- name: Simulate build
run: echo "Building project with ID ${{ steps.generate_id.outputs.id }}..."
Anropa ett återanvändbart arbetsflöde
För att använda ett återanvändbart arbetsflöde använder ett annat arbetsflöde ("anroparen") nyckelordet uses, på liknande sätt som när ni använder en GitHub Action.
Ni anger sökvägen till filen med det återanvändbara arbetsflödet i ert repository, eller till och med i ett annat repository eller till en viss version.
Exempel på ett anropande arbetsflöde
Det här arbetsflödet, som sparas som .github/workflows/main-app-ci.yml, anropar vårt arbetsflöde reusable-build.yml.
Lägg märke till hur det hämtar resultatet build_id från det anropade arbetsflödet med jobs.call-build.outputs.build_id.
name: Main App CI
on: [push]
jobs:
call-build:
uses: ./.github/workflows/reusable-build.yml
outputs:
build_id: ${{ jobs.call-build.outputs.build_id }}
deploy:
needs: call-build
runs-on: ubuntu-latest
steps:
- name: Deploy app
run: echo "Deploying app built with ID ${{ needs.call-build.outputs.build_id }}"
Skicka indata till återanvändbara arbetsflöden
Återanvändbara arbetsflöden är inte bara statiska mallar – de kan ta emot indata, vilket gör dem mycket flexibla.
Du definierar vilka indata som förväntas i avsnittet on: workflow_call: inputs: i det återanvändbara arbetsflödet och anger deras typ, om de är obligatoriska samt en beskrivning. Det anropande arbetsflödet skickar denna indata med nyckelordet with:.
Återanvändbart arbetsflöde med indata
Här är en uppdaterad reusable-build.yml som tar emot indata i target_env. Det gör att samma bygglogik kan anpassas för olika miljöer.
name: Reusable Build Component with Input
on:
workflow_call:
inputs:
target_env:
required: true
type: string
description: "The target environment for the build"
outputs:
build_id:
description: "The ID of the build operation"
value: ${{ jobs.build.outputs.build_id }}
jobs:
build:
runs-on: ubuntu-latest
outputs:
build_id: ${{ steps.generate_id.outputs.id }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Generate build ID
id: generate_id
run: echo "id=$(date +%s)" >> "$GITHUB_OUTPUT"
- name: Simulate build for ${{ inputs.target_env }}
run: echo "Building project for ${{ inputs.target_env }} with ID ${{ steps.generate_id.outputs.id }}..."
Exempel på anrop med indata
Nu kan vårt huvudsakliga CI-arbetsflöde anropa den återanvändbara byggkomponenten två gånger, en gång för 'staging' och en gång för 'production', och skicka olika värden för target_env.
name: Main App CI with Input
on: [push]
jobs:
call-build-staging:
uses: ./.github/workflows/reusable-build-with-input.yml
with:
target_env: 'staging'
outputs:
build_id: ${{ jobs.call-build-staging.outputs.build_id }}
call-build-prod:
uses: ./.github/workflows/reusable-build-with-input.yml
with:
target_env: 'production'
outputs:
build_id: ${{ jobs.call-build-prod.outputs.build_id }}
Återanvändbara arbetsflöden jämfört med anpassade actions
Även om båda främjar återanvändning fyller de olika syften:
- Återanvändbara arbetsflöden: Orkestrerar en serie jobb. De definierar en komplett arbetsflödesstruktur (t.ex. bygga, testa och distribuera).
- Anpassade actions: Utför en specifik, enskild uppgift i ett jobb (t.ex. konfigurera Node.js eller publicera ett paket). De är byggstenarna *inuti* stegen i ett jobb.
Tänk på arbetsflöden som recept och actions som enskilda ingredienser eller steg.
Snabbtest
Vilka av följande är viktiga fördelar med att använda återanvändbara arbetsflöden i GitHub Actions?
Sammanfattning: återanvändbara arbetsflöden och actions
Vi har gått igenom hur återanvändbara arbetsflöden hjälper till att modularisera dina CI/CD-pipelines.
- De definieras med
workflow_call. - De kan ta emot
inputsoch tillhandahållaoutputs. - Arbetsflöden som anropar dem använder nyckelordet
uses. - De skiljer sig från anpassade actions, som är byggstenar för en enda uppgift i jobb.
Genom att använda återanvändning får du effektivare, konsekventare och mer lättunderhållen automatisering i dina projekt.
Lär dig DevOps-bootcamp 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
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”Återanvändbara arbetsflöden och Actions” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Återanvändbara arbetsflöden och Actions”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”Återanvändbara arbetsflöden och Actions”?
Skapa och använd återanvändbara arbetsflöden och anpassade Actions för att modularisera era pipelines och främja konsekvens mellan repositoryn. Ni övar på DevOps-bootcamp 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 DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp 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 3 av 4.
Hur lång tid tar lektionen ”Återanvändbara arbetsflöden och Actions”?
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 DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-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
- Matrisbyggen för flera miljöer
- Cacha beroenden för högre hastighet
- Återanvändbara arbetsflöden och Actions
- Villkorsstyrd körning och jobbberoenden