Vad är GitHub Script?
Här går vi igenom hur Du med GitHub Script 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 kan använda dig av den plattformen när du skriver skript.
Vad är octokit?
octokit är den officiella samlingen klienter för GitHub-API:et. En av dessa klienter, rest.js, tillhandahåller JavaScript-åtkomst för GitHubs REST-gränssnitt.
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. Du har inte bara åtkomst till incheckningar, pull-begäranden och ärenden, utan även 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 ger dig en förautentiserad oktokit/rest.js-klient med namnet github
.
Så i stället för:
octokit.issues.createComment({
Du skulle använda:
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 Script
GitHub Script-åtgärder passar in i ett arbetsflöde precis som andra åtgärder. Det gör att du kan blanda dem i befintliga arbetsflöden, till exempel sådana du redan har konfigurerat för CI/CD. För att illustrera dess bekvämlighet skapar vi nu ett fullständigt arbetsflöde som använder GitHub Script för att automatiskt publicera en kommentar till alla nyligen skapade problem.
Vi börjar med en name
och en on
-sats som anger att arbetsflödet körs när problem öppnas.
name: Learning GitHub Script
on:
issues:
types: [opened]
Därefter definierar vi 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 er på detta; 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
, som även kallas GitHub Script, gör det tunga jobbet i integreringen 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 den körde för granskning på fliken Åtgärder .
Köra från en separat fil
Ibland kan du behöva använda viktig kod för att uppfylla ditt Scenario med GitHub-skript. 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 gör detta:
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.