Udvikling af brugerdefinerede GitHub Actions
Lær at oprette Deres egne genanvendelige custom actions med JavaScript eller Docker for at udvide GitHub Actions' funktionalitet.
Udvikling af brugerdefinerede GitHub Actions er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Udvid GitHub Actions
Hvad gør du, hvis du har brug for en bestemt opgave i din workflow, som GitHub Actions ikke tilbyder direkte? Eller hvis du har kompleks logik, som du gerne vil genbruge?
Med brugerdefinerede actions kan du bygge dine egne genanvendelige værktøjer til workflows. De fungerer som små programmer, der udfører en bestemt opgave, tilpasset dine behov.
Fordelene ved tilpasning
Brugerdefinerede actions giver flere fordele i dine CI/CD-pipelines:
- Genanvendelighed: Skriv én gang, og brug det i mange workflows og repositories.
- Standardisering: Sørg for ensartede processer på tværs af din organisation.
- Indkapsling: Skjul kompleks logik bag en enkel grænseflade.
- Integration: Interager med bestemte interne værktøjer eller API'er.
JavaScript eller Docker?
GitHub Actions understøtter to primære måder at oprette brugerdefinerede actions på:
- JavaScript Actions: Skrives i JavaScript (eller TypeScript) og kører direkte på runner-maskinen. Hurtige og nemme til enkle opgaver.
- Docker-container-actions: Indkapsler dit miljø og din kode i et Docker-image. Ideelle til actions, der kræver bestemte afhængigheder eller programmeringssprog.
Definition af din Action
Alle brugerdefinerede actions skal have en action.yml-fil i rodmappen. Denne YAML-fil fungerer som et manifest, der fortæller GitHub Actions om din action:
nameogdescription: Hvad din action gør.inputs: Data, som din action accepterer.outputs: Data, som din action producerer.runs: Hvordan din action udføres (f.eks. en JavaScript-fil eller et Docker-image).
Eksempel på en enkel JS-action
Lad os se på en grundlæggende JavaScript-action. Du skal bruge en action.yml-fil og en index.js-fil. action.yml definerer actionens metadata og udførelsesmiljø.
# action.yml
name: 'Hello World Action'
description: 'Greets a person using a custom message'
inputs:
who-to-greet:
description: 'Who to greet'
required: true
default: 'World'
outputs:
greeting-message:
description: 'The greeting message generated'
runs:
using: 'node16'
main: 'index.js'Skriv JavaScript-koden
Filen index.js indeholder den faktiske logik. Vi bruger værktøjssættet @actions/core til at hente input og angive output.
Prøv at køre dette enkle JavaScript-kodestykke for at se, hvordan input og output fungerer i princippet, også uden for en komplet workflow:
// index.js (simplified for demonstration)
const core = require('@actions/core');
try {
const name = core.getInput('who-to-greet');
const message = `Hello, ${name}!`;
console.log(message);
core.setOutput('greeting-message', message);
} catch (error) {
core.setFailed(error.message);
}
// A standalone runnable example to demonstrate core logic
function runSimpleGreeting(inputName) {
const name = inputName || 'World';
const message = `Hello from runnable JS, ${name}!`;
return message;
}
console.log(runSimpleGreeting('CoddyKit'));
console.log(runSimpleGreeting());Grundlæggende om Docker-actions
Til mere komplekse miljøer er Docker-container-actions effektive. De indeholder en Dockerfile, der definerer container-imaget og samler alle nødvendige afhængigheder.
Din action.yml henviser til dette image og fortæller GitHub Actions, hvordan det skal bygges og køres.
# action.yml for Docker action
name: 'Docker Hello World'
description: 'Greets a name from within a Docker container'
inputs:
who-to-greet:
description: 'Who to greet'
required: true
default: 'Docker'
outputs:
greeting-message:
description: 'The greeting message from Docker'
runs:
using: 'docker'
image: 'Dockerfile'Din actions miljø
Dockerfile angiver basis-imaget, installerer afhængigheder og definerer indgangspunktet for din action. Det sikrer, at din action kører i et ensartet og kontrolleret miljø.
# Dockerfile
FROM alpine:3.16
LABEL "com.github.actions.name"="Docker Hello World"
LABEL "com.github.actions.description"="Greets a name from within a Docker container"
LABEL "com.github.actions.icon"="globe"
LABEL "com.github.actions.color"="blue"
# Copy your script into the container
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]Scripting af Docker-actions
Inde i Docker-containeren modtager dit entrypoint-script (f.eks. entrypoint.sh) input som miljøvariabler (med præfikset INPUT_). Det angiver output ved at skrive til den fil, der er angivet af miljøvariablen $GITHUB_OUTPUT.
#!/bin/sh -l
# entrypoint.sh
echo "Hello from Docker, $INPUT_WHO_TO_GREET!"
GREETING="Hello from Docker, $INPUT_WHO_TO_GREET!"
echo "greeting-message=$GREETING" >> "$GITHUB_OUTPUT"Bedste praksis for actions
Når du udvikler brugerdefinerede actions, bør du overveje disse tips til robuste og vedligeholdelsesvenlige værktøjer:
- Versionsstyring: Brug semantisk versionsstyring (f.eks.
v1,v2) for stabilitet. - Test: Test din action grundigt lokalt og i workflows.
- Fejlhåndtering: Implementer tydelige fejlmeddelelser og kontrollerede fejl.
- Sikkerhed: Rens input, og undgå at eksponere følsomme data.
- Dokumentation: Giv tydelige brugsanvisninger i din README.
Kontrol af action-type
Du skal oprette en brugerdefineret GitHub Action, der kræver et bestemt Python-bibliotek, som ikke er forudinstalleret på standardrunnerne til GitHub Actions. Hvilken type action er generelt bedst egnet til dette scenarie?
Opsummering af brugerdefinerede actions
Vi har undersøgt, hvordan du kan udvide GitHub Actions ved at oprette dine egne brugerdefinerede actions. Du har lært om de to hovedtyper: JavaScript-actions og Docker-container-actions samt den afgørende rolle, som filen action.yml spiller. Vi har også gennemgået, hvordan du definerer input, output og kernelogikken for hver type samt bedste praksis for udvikling.
Brugerdefinerede actions er effektive til genanvendelighed og standardisering i dine CI/CD-pipelines!
Lær Intensiv DevOps-uddannelse 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
- 142
- Lektioner
- 568
Ofte stillede spørgsmål
Er lektionen “Udvikling af brugerdefinerede GitHub Actions” gratis?
Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Udvikling af brugerdefinerede GitHub Actions”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Udvikling af brugerdefinerede GitHub Actions”?
Lær at oprette Deres egne genanvendelige custom actions med JavaScript eller Docker for at udvide GitHub Actions' funktionalitet. Du øver dig i Intensiv DevOps-uddannelse 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å Intensiv DevOps-uddannelse?
Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse 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 1 af 4.
Hvor lang tid tager lektionen “Udvikling af brugerdefinerede GitHub 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 Intensiv DevOps-uddannelse-lektion?
Ja. Alle Intensiv DevOps-uddannelse-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
- Udvikling af brugerdefinerede GitHub Actions
- Self-hosted runners til on-premise
- Integration med virksomhedssystemer
- Composite actions og publicering til Marketplace