Utveckla anpassade GitHub Actions
Lär er att skapa egna återanvändbara anpassade Actions med JavaScript eller Docker för att utöka funktionaliteten i GitHub Actions.
Utveckla anpassade GitHub Actions är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 1 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.
Utöka GitHub Actions
Vad gör ni om ni behöver en specifik uppgift i arbetsflödet som GitHub Actions inte erbjuder direkt? Eller om ni har komplex logik som ni vill återanvända?
Med anpassade actions kan ni bygga egna återanvändbara verktyg för arbetsflöden. De fungerar som små program som utför en specifik uppgift anpassad efter era behov.
Anpassningens styrka
Anpassade actions ger flera fördelar i era CI/CD-pipelines:
- Återanvändbarhet: Skriv en gång och använd i många arbetsflöden och repositorier.
- Standardisering: Säkerställ konsekventa processer i hela organisationen.
- Inkapsling: Dölj komplex logik bakom ett enkelt gränssnitt.
- Integration: Interagera med specifika interna verktyg eller API:er.
JavaScript eller Docker?
GitHub Actions stöder två huvudsakliga sätt att skapa anpassade actions:
- JavaScript Actions: Dessa skrivs i JavaScript (eller TypeScript) och körs direkt på runner-maskinen. De är snabba och enkla för mindre uppgifter.
- Docker Container Actions: Kapsla in miljön och koden i en Docker-avbildning. Passar bra för actions som kräver specifika beroenden eller programmeringsspråk.
Definiera er action
Varje anpassad action behöver en fil med namnet action.yml i rotkatalogen. Den här YAML-filen fungerar som ett manifest som informerar GitHub Actions om er action:
nameochdescription: Vad er action gör.inputs: Data som er action tar emot.outputs: Data som er action producerar.runs: Hur er action körs (t.ex. en JavaScript-fil eller en Docker-avbildning).
Enkelt JS-actionexempel
Vi tittar på en enkel JavaScript-action. Ni behöver en fil med namnet action.yml och en fil med namnet index.js. action.yml definierar actionens metadata och körningsmiljö.
# 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'Skriva JavaScript-koden
Filen index.js innehåller den faktiska logiken. Vi använder verktygslådan @actions/core för att hämta indata och ange utdata.
Prova att köra det här enkla JavaScript-kodavsnittet för att se hur indata och utdata fungerar i princip, även utanför ett fullständigt arbetsflöde:
// 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());Grunderna i Docker Actions
För mer komplexa miljöer är Docker container actions kraftfulla. De innehåller en Dockerfile som definierar containeravbildningen och paketerar alla nödvändiga beroenden.
Er action.yml refererar till den här avbildningen och instruerar GitHub Actions att bygga och köra den.
# 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'Er actions miljö
Dockerfile anger basavbildningen, installerar beroenden och definierar startpunkten för er action. Detta säkerställer att er action körs i en konsekvent och kontrollerad 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"]Skripta Docker Actions
I Docker-containern tar ert entrypoint-skript (t.ex. entrypoint.sh) emot indata som miljövariabler (med prefixet INPUT_). Det anger utdata genom att skriva till filen som anges av miljövariabeln $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"Bästa praxis för actions
När ni utvecklar anpassade actions bör ni tänka på följande tips för robusta och underhållbara verktyg:
- Versionshantering: Använd semantisk versionshantering (t.ex.
v1,v2) för stabilitet. - Testning: Testa er action noggrant lokalt och i arbetsflöden.
- Felhantering: Implementera tydliga felmeddelanden och kontrollerade fel.
- Säkerhet: Rensa indata och undvik att exponera känsliga uppgifter.
- Dokumentation: Tillhandahåll tydliga användningsinstruktioner i er README.
Kontroll av actiontyp
Ni behöver skapa en anpassad GitHub Action som kräver ett specifikt Python-bibliotek som inte är förinstallerat på GitHub Actions standardrunners. Vilken typ av action passar generellt bäst för det här scenariot?
Sammanfattning av anpassade actions
Vi har utforskat hur GitHub Actions kan utökas genom att skapa egna anpassade actions. Ni har lärt er om de två huvudtyperna: JavaScript och Docker container actions, samt om den viktiga rollen för filen action.yml. Vi har också gått igenom hur ni definierar indata, utdata och kärnlogiken för varje typ, tillsammans med bästa praxis för utveckling.
Anpassade actions är kraftfulla för återanvändbarhet och standardisering i era CI/CD-pipelines!
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 ”Utveckla anpassade GitHub Actions” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Utveckla anpassade GitHub 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 ”Utveckla anpassade GitHub Actions”?
Lär er att skapa egna återanvändbara anpassade Actions med JavaScript eller Docker för att utöka funktionaliteten i GitHub Actions. 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 1 av 4.
Hur lång tid tar lektionen ”Utveckla anpassade GitHub 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
- Utveckla anpassade GitHub Actions
- Självhanterade runners lokalt
- Integration med företagssystem
- Sammansatta actions och publicering på Marketplace