Genanvendelige workflows og actions
Opret og anvend genanvendelige workflows og brugerdefinerede actions for at modularisere Deres pipelines og fremme ensartethed på tværs af repositories.
Genanvendelige workflows og actions er en gratis CI/CD med GitHub Actions og DevOps-arbejdsgange-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i CI/CD med GitHub Actions og DevOps-arbejdsgange, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. CI/CD med GitHub Actions og DevOps-arbejdsgange-kurset indeholder 4 lektioner i alt.
Introduktion til genbrugelige workflows
I moderne softwareudvikling er effektivitet og ensartethed afgørende. Efterhånden som dine projekter vokser, vokser dine automatiseringsbehov også.
Genbrugelige workflows og tilpassede actions i GitHub Actions hjælper dig med at undgå gentagelser, så dine CI/CD-forløb bliver nemmere at vedligeholde og mere robuste.
Hvorfor genbruge workflows?
Forestil dig, at du har flere applikationer, som alle har brug for de samme trin til bygning, test eller udrulning. Hvis du kopierer og indsætter workflow-kode, fører det til:
- Duplikering: Mere kode at vedligeholde.
- Uensartethed: Det er let at overse opdateringer på tværs af workflows.
- Vedligeholdelsesproblemer: Ændringer kræver opdatering af mange filer.
Genbrug løser disse problemer!
Definition af et genbrugeligt workflow
Et genbrugeligt workflow er et komplet workflow, som kan kaldes af andre workflows. Det gemmes i dit repository og fungerer som en skabelon.
Hvis du vil gøre et workflow genbrugeligt, bruger du hændelsen workflow_call. Det fortæller GitHub Actions, at dette workflow er beregnet til at blive kaldt og ikke udløst af typiske hændelser som push eller pull_request.
Eksempel på et genbrugeligt workflow
Her er et enkelt genbrugeligt workflow, der simulerer en build. Gem det i .github/workflows/reusable-build.yml.
Det definerer et output med navnet build_id, som kaldende workflows kan bruge.
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 }}..."
Sådan kalder du et genbrugeligt workflow
Hvis du vil bruge et genbrugeligt workflow, bruger et andet workflow (det »kaldende workflow«) nøgleordet uses, på samme måde som når du bruger en GitHub Action.
Du angiver stien til workflow-filen i dit repository eller endda i et andet repository eller en bestemt version.
Eksempel på et kaldende workflow
Dette workflow, der er gemt som .github/workflows/main-app-ci.yml, kalder vores workflow reusable-build.yml.
Bemærk, hvordan det får adgang til outputtet build_id fra det kaldte workflow ved hjælp af 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 }}"
Videregivelse af inddata til genanvendelige workflows
Genanvendelige workflows er ikke bare statiske skabeloner; de kan modtage inddata, hvilket gør dem meget fleksible.
Du definerer forventede inddata i sektionen on: workflow_call: inputs: i det genanvendelige workflow og angiver deres type, om de er obligatoriske, samt en beskrivelse. Det kaldende workflow videregiver disse inddata ved hjælp af nøgleordet with:.
Genanvendeligt workflow med inddata
Her er en opdateret reusable-build.yml, der accepterer inddataene target_env. Det gør det muligt at tilpasse den samme byggelogik til forskellige 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 }}..."
Eksempel på kald med inddata
Nu kan vores primære CI-workflow kalde den genanvendelige byggekomponent to gange: én gang for 'staging' og én gang for 'production', hvor der videregives forskellige værdier for 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 }}
Genanvendelige workflows sammenlignet med brugerdefinerede actions
Selvom begge fremmer genbrug, tjener de forskellige formål:
- Genanvendelige workflows: Orkestrerer en række jobs. De definerer en komplet workflow-struktur (f.eks. bygning, afprøvning og udrulning).
- Brugerdefinerede actions: Udfører en bestemt enkeltopgave i et job (f.eks. konfigurering af Node.js eller udgivelse af en pakke). De er byggestenene *inde i* trinnene i et job.
Tænk på workflows som opskrifter og actions som enkelte ingredienser eller trin.
Hurtigt tjek
Hvilke af følgende er de vigtigste fordele ved at bruge genanvendelige workflows i GitHub Actions?
Opsamling: Genanvendelige workflows og actions
Vi har undersøgt, hvordan genanvendelige workflows hjælper med at modularisere dine CI/CD-forløb.
- De defineres ved hjælp af
workflow_call. - De kan modtage
inputsog levereoutputs. - Kaldende workflows bruger nøgleordet
uses. - De adskiller sig fra brugerdefinerede actions, som er byggesten til enkeltopgaver i jobs.
Genbrug fører til mere effektiv, ensartet og vedligeholdelsesvenlig automatisering på tværs af dine projekter.
Lær CI/CD med GitHub Actions og DevOps-arbejdsgange med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Genanvendelige workflows og actions” gratis?
Ja — hele teksten til “Genanvendelige workflows og actions” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af CI/CD med GitHub Actions og DevOps-arbejdsgange-kurset, skal du opgradere til CoddyKit PRO. CI/CD med GitHub Actions og DevOps-arbejdsgange-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Genanvendelige workflows og actions”?
Opret og anvend genanvendelige workflows og brugerdefinerede actions for at modularisere Deres pipelines og fremme ensartethed på tværs af repositories. Du øver dig i CI/CD med GitHub Actions og DevOps-arbejdsgange med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på CI/CD med GitHub Actions og DevOps-arbejdsgange?
Der kræves ingen tidligere erfaring. CI/CD med GitHub Actions og DevOps-arbejdsgange på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Genanvendelige workflows og actions”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne CI/CD med GitHub Actions og DevOps-arbejdsgange-lektion?
Ja. Alle CI/CD med GitHub Actions og DevOps-arbejdsgange-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Matrix-builds til flere miljøer
- Caching af dependencies for øget hastighed
- Genanvendelige workflows og actions
- Betinget kørsel og jobafhængigheder