Hvad er GitHub Script?

Fuldført

I dette undermodul lærer du, hvordan GitHub Script gør det muligt for dig at automatisere almindelige GitHub-processer ved hjælp af arbejdsprocesser i GitHub-handlinger.

Hvad er GitHub Script?

GitHub Script er en handling, der leverer en godkendt Octokit-klient og gør det muligt at skrive JavaScript direkte i en arbejdsprocesfil. Den kører i Node.js, så du har styrken ved denne platform tilgængelig, når du skriver scripts.

Hvad er Octokit?

Octokit er den officielle samling af klienter til GitHub-API'en. En af disse klienter, rest.js, giver JavaScript-adgang til GitHub REST-grænsefladen.

Du har altid været i stand til at automatisere GitHub-API'en via octokit/rest.js, selvom det kan være en opgave at konfigurere og vedligeholde korrekt. En af de store fordele ved at bruge GitHub Script er, at det håndterer alle disse omkostninger, så du straks kan begynde at bruge API'en. Du behøver ikke at bekymre dig om afhængigheder, konfiguration eller endda godkendelse.

Hvad kan okokit/rest.js gøre?

Det korte svar er, at det kan gøre stort set alt med hensyn til at automatisere GitHub. Ud over at have adgang til bekræftelser, pullanmodninger og problemer har du også adgang til brugere, projekter og organisationer. Du kan hente lister over almindeligt anvendte filer, f.eks. populære licenser eller .gitignore filer. Du kan endda gengive Markdown.

Hvis du opretter noget, der integrerer GitHub, er der gode odds for, at du finder det, du leder efter, i dokumentationen til den fulde okokit/rest.js.

Hvordan adskiller brugen af GitHub Script sig fra octokit/rest.js?

Den største forskel i brugen er, at GitHub Script leverer en forhåndsauthenticeret okokit/rest.js klient med navnet github.

Så i stedet for

octokit.issues.createComment({

du bruger

github.issues.createComment({.

Ud over variablen github leveres følgende variabler også:

Oprettelse af en arbejdsproces, der bruger GitHub-script

GitHub Script-handlinger passer ind i en arbejdsproces som enhver anden handling. Derfor kan du endda blande dem med eksisterende arbejdsprocesser, f.eks. dem, du allerede har konfigureret til CI/CD. For at illustrere bekvemmeligheden ved GitHub Script skal du nu oprette en komplet arbejdsproces, der bruger den til automatisk at sende en kommentar til alle nyoprettede problemer.

Du starter med en name og en on delsætning, der angiver, at arbejdsprocessen kører, når der åbnes problemer:

name: Learning GitHub Script

on:
  issues:
    types: [opened]

Derefter skal du definere et job med navnet comment , der kører på Linux, med en række trin:

jobs:
  comment:
    runs-on: ubuntu-latest
    steps:

I dette tilfælde er der kun ét trin: handlingen GitHub Script.

      - 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!!!"
            })

Brug af GitHub-handlinger kan virkelig hjælpe med at automatisere de hændelser, der finder sted i dine lagre. Forestil dig, at en besøgende i lageret har åbnet et nyt problem, der indeholder oplysninger om en kritisk fejl. Du vil måske gerne takke dem for at bringe fejlen til din opmærksomhed, men denne enkle opgave kan blive overvældende, da dit lager tiltrækker flere besøgende. Ved at automatisere en problemkommentar kan du automatisere processen med at takke besøgende hver gang.

Brug af handlinger/github-script@0.8.0

Handlingen actions/github-script@0.8.0 , også kendt som GitHub Script, udfører alt det svære arbejde for din integration med GitHub-API'en.

Denne handling kræver en github-token, der leveres på kørselstidspunktet, så anmodninger godkendes. Dette gøres automatisk for dig, så du kan bruge koden as-is.

Parameteren script kan være stort set alle JavaScript-klienter, der bruger den octokit-/rest/js-klient, der er gemt i github. I dette tilfælde er det kun én linje (opdelt på flere linjer for læsbarhed), der opretter en hardcoded kommentar.

Når arbejdsprocessen er kørt, logfører GitHub Script den kode, den kørte til gennemsyn, under fanen Handlinger :

Skærmbillede af en fuldført Arbejdsproces for GitHub-script.

Kører fra en separat fil

Nogle gange skal du muligvis bruge en betydelig mængde kode for at opfylde dit GitHub-scriptscenarie. Når det sker, kan du beholde scriptet i en separat fil og referere til det fra arbejdsprocessen i stedet for at placere hele scriptet indbygget.

Her er et eksempel på en enkel arbejdsproces, der bruger denne teknik:

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}))

Se flere gitHub-scripteksempler.