Vad är GitHub Script?
I den här lektionen får du lära dig hur GitHub Script gör att du kan automatisera vanliga GitHub-processer med hjälp av GitHub Actions-arbetsflöden.
Vad är GitHub Script?
GitHub Script är en åtgärd som tillhandahåller en autentiserad Octokit-klient och gör att JavaScript kan skrivas direkt i en arbetsflödesfil. Den körs i Node.js, så du har kraften i den plattformen tillgänglig när du skriver skript.
Vad är Octokit?
Octokit är den officiella samlingen av klienter för GitHub-API:et. En av dessa klienter, rest.js, ger JavaScript-åtkomst till GitHub REST-gränssnittet.
Du har alltid kunnat automatisera GitHub-API:et via octokit/rest.js, även om det kan vara en uppgift att konfigurera och underhålla korrekt. En av de bästa fördelarna med att använda GitHub Script är att det hanterar allt det här åt dig, så att du kan börja API:et direkt. Du behöver inte bekymra dig om beroenden, konfiguration eller ens autentisering.
Vad kan octokit/rest.js göra?
Det korta svaret är att det kan göra praktiskt taget allt som gäller automatisering av GitHub. Förutom att ha åtkomst till incheckningar, pull-begäranden och problem har du även åtkomst till användare, projekt och organisationer. Du kan hämta listor över vanliga filer, till exempel populära licenser eller .gitignore filer. Du kan till och med rendera markdown.
Om du skapar något som integrerar GitHub är oddsen bra att du hittar det du letar efter i hela dokumentationen för octokit/rest.js.
Vilka skillnader är det mellan att använda GitHub Script och att använda octokit/rest.js?
Den största skillnaden i användning är att GitHub Script tillhandahåller en förautentiserad oktokit/rest.js-klient med namnet github.
Så i stället för
octokit.issues.createComment({
du använder
github.issues.createComment({.
Förutom variabeln github tillhandahålls även följande variabler:
-
contextär ett objekt som innehåller kontexten för arbetsflödeskörningen. -
coreär en referens till paketet @actions/core . -
ioär en referens till paketet @actions/io .
Skapa ett arbetsflöde som använder GitHub-skript
GitHub Script-åtgärder passar in i ett arbetsflöde precis som andra åtgärder. Därför kan du till och med blanda dem med befintliga arbetsflöden, som de som du kanske redan har konfigurerat för CI/CD. För att illustrera bekvämligheten med GitHub Script skapar du nu ett fullständigt arbetsflöde som använder det för att automatiskt publicera en kommentar till alla nyligen skapade problem.
Du börjar med en name och en on -sats som anger att arbetsflödet körs när ärenden öppnas.
name: Learning GitHub Script
on:
issues:
types: [opened]
Därefter definierar du ett jobb med namnet comment som körs på Linux med en serie steg:
jobs:
comment:
runs-on: ubuntu-latest
steps:
I det här fallet finns det bara ett steg: GitHub Script-åtgärden.
- uses: actions/github-script@0.8.0
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: "🎉 You've created this issue comment using GitHub Script!!!"
})
Att använda GitHub Actions kan verkligen hjälpa dig att automatisera de händelser som äger rum på dina lagringsplatser. Anta att en besökare på lagringsplatsen öppnade ett nytt problem med information om ett kritiskt fel. Du kanske vill tacka dem för att ha uppmärksammat dig på buggen, men den här enkla uppgiften kan bli överväldigande eftersom din lagringsplats lockar fler besökare. Genom att automatisera en ärendekommentering kan du automatisera processen med att tacka besökare varje gång.
Använda åtgärder/github-script@0.8.0
Åtgärden actions/github-script@0.8.0 , även kallat GitHub Script, gör allt det svåra arbetet för din integrering med GitHub-API:et.
Den här åtgärden kräver en github-token som tillhandahålls vid körning så att begäranden autentiseras. Det här görs automatiskt åt dig så att du kan använda koden i befintligt skick.
Parametern script kan vara praktiskt taget alla JavaScript som använder octokit/rest/js-klienten som lagras i github. I det här fallet är det bara en rad (uppdelad över flera rader för bättre läsbarhet) som skapar en hårdkodad kommentar.
När arbetsflödet har körts loggar GitHub Script koden som kördes för granskning på fliken Åtgärder :
Köra från en separat fil
Ibland kan du behöva använda en betydande mängd kod för att uppfylla ditt GitHub Script-scenario. I så fall kan du ha skriptet i en separat fil och referera till det från arbetsflödet i stället för att lägga till skriptet direkt i arbetsflödet.
Här är ett exempel på ett enkelt arbetsflöde som använder den tekniken:
on: push
jobs:
echo-input:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/github-script@v2
with:
script: |
const path = require('path')
const scriptPath = path.resolve('./path/to/script.js')
console.log(require(scriptPath)({context}))
Kolla in fler GitHub Script-exempel.