CI/CD med GitHub Actions og DevOps-arbejdsgange · Lektion

Udvikling af brugerdefinerede GitHub Actions

Lær at oprette Deres egne genanvendelige custom actions med JavaScript eller Docker for at udvide GitHub Actions' funktionalitet.

Lektion 1 af 412 trin

Udvikling af brugerdefinerede GitHub Actions er en gratis CI/CD med GitHub Actions og DevOps-arbejdsgange-lektion på CoddyKit. Dette er lektion 1 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.

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:

  • name og description: 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!

Gratis at komme i gang

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 “Udvikling af brugerdefinerede GitHub Actions” gratis?

Ja — hele teksten til “Udvikling af brugerdefinerede GitHub 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 “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 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 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 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

  1. Udvikling af brugerdefinerede GitHub Actions
  2. Self-hosted runners til on-premise
  3. Integration med virksomhedssystemer
  4. Composite actions og publicering til Marketplace
← Tilbage til CI/CD med GitHub Actions og DevOps-arbejdsgange