Utvikle egendefinerte GitHub Actions
Lær å opprette egne gjenbrukbare actions med JavaScript eller Docker for å utvide funksjonaliteten i GitHub Actions.
Utvikle egendefinerte GitHub Actions er en gratis leksjon i CI/CD med GitHub Actions og DevOps-pipelines på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i CI/CD med GitHub Actions og DevOps-pipelines, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i CI/CD med GitHub Actions og DevOps-pipelines inneholder totalt 4 leksjoner.
Utvid GitHub Actions
Hva om du trenger en bestemt oppgave i workflowen som GitHub Actions ikke tilbyr som standard? Eller kanskje du har kompleks logikk du ønsker å gjenbruke?
Med egendefinerte actions kan du bygge egne, gjenbrukbare verktøy for workflows. De fungerer som små programmer som utfører en bestemt oppgave, tilpasset behovene dine.
Tilpasningens kraft
Egendefinerte actions gir flere fordeler i CI/CD-pipelines:
- Gjenbruk: Skriv én gang, og bruk i mange workflows og repositories.
- Standardisering: Sørg for konsekvente prosesser i hele organisasjonen.
- Innkapsling: Skjul kompleks logikk bak et enkelt grensesnitt.
- Integrasjon: Samhandle med bestemte interne verktøy eller API-er.
JavaScript eller Docker?
GitHub Actions støtter to hovedmåter å opprette egendefinerte actions på:
- JavaScript Actions: Skrives i JavaScript (eller TypeScript) og kjører direkte på runner-maskinen. Raskt og enkelt for grunnleggende oppgaver.
- Docker Container Actions: Pakker miljøet og koden inn i et Docker-image. Ideelt for actions som krever bestemte avhengigheter eller programmeringsspråk.
Definere en egen action
Alle egendefinerte actions trenger en action.yml-fil i rotkatalogen. Denne YAML-filen fungerer som et manifest som forteller GitHub Actions om actionen:
nameogdescription: Hva actionen gjør.inputs: Data actionen godtar.outputs: Data actionen produserer.runs: Hvordan actionen kjøres (f.eks. JavaScript-fil eller Docker-image).
Enkelt eksempel på en JS-action
La oss se på en enkel JavaScript-action. Du trenger en action.yml-fil og en index.js-fil. action.yml definerer actionens metadata og kjøringsmiljø.
# 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'Skrive JavaScript-koden
Filen index.js inneholder den faktiske logikken. Vi bruker verktøysettet @actions/core til å hente inndata og angi utdata.
Prøv å kjøre dette enkle JavaScript-utdraget for å se hvordan inndata og utdata fungerer i prinsippet, også utenfor en fullstendig 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());Grunnleggende om Docker-actions
For mer komplekse miljøer er Docker container-actions svært nyttige. De inneholder en Dockerfile som definerer container-imaget og samler alle nødvendige avhengigheter.
action.yml-filen refererer til dette imaget og forteller GitHub Actions at det skal bygges og kjø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'Actionens miljø
Dockerfile angir base-imaget, installerer avhengigheter og definerer startpunktet for actionen. Dette sikrer at actionen kjører i et konsekvent og kontrollert 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"]Skripting av Docker-actions
Inne i Docker-containeren mottar startpunktsskriptet ditt (f.eks. entrypoint.sh) inndata som miljøvariabler (med prefikset INPUT_). Det angir utdata ved å skrive til filen som er angitt av miljøvariabelen $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"Beste praksis for actions
Når du utvikler egendefinerte actions, bør du vurdere disse tipsene for robuste og vedlikeholdbare verktøy:
- Versjonering: Bruk semantisk versjonering (f.eks.
v1,v2) for stabilitet. - Testing: Test actionen grundig lokalt og i workflows.
- Feilhåndtering: Implementer tydelige feilmeldinger og kontrollert feilhåndtering.
- Sikkerhet: Rens inndata og unngå å eksponere sensitive data.
- Dokumentasjon: Gi tydelige bruksanvisninger i README-filen.
Kontroll av action-type
Du må opprette en egendefinert GitHub Action som krever et bestemt Python-bibliotek som ikke er forhåndsinstallert på standardrunnerne for GitHub Actions. Hvilken type action passer vanligvis best i dette scenarioet?
Oppsummering av egendefinerte actions
Vi har utforsket hvordan du kan utvide GitHub Actions ved å opprette egne egendefinerte actions. Du har lært om de to hovedtypene: JavaScript-actions og Docker container-actions, samt den viktige rollen til action.yml-filen. Vi har også gått gjennom hvordan du definerer inndata, utdata og kjernelogikken for hver type, i tillegg til beste praksis for utvikling.
Egendefinerte actions er effektive for gjenbruk og standardisering i CI/CD-pipelines!
Lær deg CI/CD med GitHub Actions og DevOps-pipelines med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Utvikle egendefinerte GitHub Actions» gratis?
Ja – hele teksten i «Utvikle egendefinerte GitHub Actions» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av CI/CD med GitHub Actions og DevOps-pipelines-kurset, kan du oppgradere til CoddyKit PRO. Kurset i CI/CD med GitHub Actions og DevOps-pipelines inneholder totalt 4 leksjoner.
Hva lærer jeg i «Utvikle egendefinerte GitHub Actions»?
Lær å opprette egne gjenbrukbare actions med JavaScript eller Docker for å utvide funksjonaliteten i GitHub Actions. Du øver på CI/CD med GitHub Actions og DevOps-pipelines med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med CI/CD med GitHub Actions og DevOps-pipelines?
Ingen tidligere erfaring er nødvendig. CI/CD med GitHub Actions og DevOps-pipelines på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Utvikle egendefinerte GitHub Actions»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne CI/CD med GitHub Actions og DevOps-pipelines-leksjonen?
Ja. Alle CI/CD med GitHub Actions og DevOps-pipelines-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Utvikle egendefinerte GitHub Actions
- Selvhostede kjørere lokalt
- Integrasjon med bedriftssystemer
- Composite actions og publisering på Marketplace