Hva er GitHub-skript?

Fullført

I denne enheten lærer du hvordan GitHub-skript gjør det mulig å automatisere vanlige GitHub-prosesser ved hjelp av Arbeidsflyter for GitHub-handlinger.

Hva er GitHub-skript?

GitHub Script er en handling som gir en godkjent Octokit-klient og gjør at JavaScript kan skrives direkte i en arbeidsflytfil. Den kjører i Node.js, slik at du har kraften i denne plattformen tilgjengelig når du skriver skript.

Hva er Octokit?

Octokit er den offisielle samlingen av klienter for GitHub-API-en. En av disse klientene, rest.js, gir JavaScript tilgang til GitHub REST-grensesnittet.

Du har alltid vært i stand til å automatisere GitHub API via octokit /rest.js, selv om det kan være et ork å konfigurere og vedlikeholde riktig. En av de store fordelene med å bruke GitHub Script er at det håndterer alt dette overhead, slik at du umiddelbart kan begynne å bruke API-en. Du trenger ikke å bekymre deg for avhengigheter, konfigurasjon eller godkjenning.

Hva kan octokit/rest.js gjøre?

Det korte svaret er at det kan gjøre nesten hva som helst med hensyn til å automatisere GitHub. I tillegg til å ha tilgang til utføringer, pull-forespørsler og problemer, har du også tilgang til brukere, prosjekter og organisasjoner. Du kan hente lister over vanlige filer, for eksempel populære lisenser eller .gitignore filer. Du kan til og med gjengi Markdown.

Hvis du oppretter noe som integrerer GitHub, er oddsen bra at du finner det du leter etter i den fullstendige octokit/rest.js dokumentasjonen.

Hvordan bruker GitHub-skript forskjellig fra oktokit/rest.js?

Hovedforskjellen i bruk er at GitHub-skriptet gir en forhåndsautentikert oktokit/rest.js klient med navnet github.

Så i stedet for

octokit.issues.createComment({

du bruker

github.issues.createComment({.

I tillegg til github variabelen, er følgende variabler også angitt:

Opprette en arbeidsflyt som bruker GitHub-skript

GitHub-skripthandlinger passer inn i en arbeidsflyt som alle andre handlinger. Som et resultat kan du til og med blande dem med eksisterende arbeidsflyter, som de du kanskje allerede har konfigurert for CI/CD. Hvis du vil illustrere hvor praktisk GitHub-skriptet er, kan du nå konstruere en fullstendig arbeidsflyt som bruker den til å legge inn en kommentar automatisk i alle nylig opprettede problemer.

Du starter med en og en name setningsdel on som angir at arbeidsflyten kjører når problemer åpnes:

name: Learning GitHub Script

on:
  issues:
    types: [opened]

Deretter definerer du en jobb kalt comment som kjører på Linux med en rekke trinn:

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

I dette tilfellet er det bare ett trinn: Handlingen GitHub-skript.

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

Bruk av GitHub-handlinger kan hjelpe deg med å automatisere hendelsene som finner sted i repositoriene dine. Tenk deg at en besøkende i repositoriet åpnet et nytt problem som inneholder informasjon om en kritisk feil. Du vil kanskje takke dem for å bringe feilen til din oppmerksomhet, men denne enkle oppgaven kan bli overveldende når repositoriet tiltrekker seg flere besøkende. Ved å automatisere en problemkommentar kan du automatisere prosessen med å takke besøkende hver gang.

Bruke handlinger/github-script@0.8.0

Handlingen actions/github-script@0.8.0 , også kjent som GitHub Script, gjør alt det vanskelige arbeidet for integreringen med GitHub-API-en.

Denne handlingen krever en github-token som er angitt under kjøring, slik at forespørsler godkjennes. Dette gjøres automatisk for deg, slik at du kan bruke koden as-is.

Parameteren script kan være nesten alle JavaScript-er som bruker octokit/rest/js-klienten som er lagret i github. I dette tilfellet er det bare én linje (delt på flere linjer for lesbarhet) som oppretter en hardkodet kommentar.

Når arbeidsflyten kjøres, logger GitHub-skript koden den kjørte for gjennomgang på Handlinger-fanen :

Skjermbilde av en fullført GitHub-skriptarbeidsflyt.

Kjører fra en egen fil

Noen ganger må du kanskje bruke en betydelig mengde kode for å møte GitHub-skriptscenarioet. Når dette skjer, kan du beholde skriptet i en egen fil og referere det til fra arbeidsflyten i stedet for å plassere alle skriptene innebygd.

Her er et eksempel på en enkel arbeidsflyt som bruker denne teknikken:

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-skripteksempler.