Co je GitHub Script?

Dokončeno

Tady probereme, jak GitHub Script umožňuje automatizovat běžné procesy GitHubu pomocí pracovních postupů GitHub Actions.

Co je GitHub Script?

GitHub Script je akce, která poskytuje ověřeného klienta octokitu a umožňuje zápis JavaScriptu přímo do souboru pracovního postupu. Spouští se v Node.js, takže při psaní skriptů máte k dispozici tuto výkonnou platformu.

Co je octokit?

Octokit je oficiální kolekce klientů pro rozhraní API GitHubu. Jeden z těchto klientů, rest.js, poskytuje přístup JavaScriptu do rozhraní REST GitHubu.

Rozhraní API GitHubu jste vždy mohli automatizovat prostřednictvím octokit/rest.js, i když by to mohlo být náročné na správné nastavení a údržbu. Jednou z velkých výhod používání GitHub Scriptu je to, že se o veškerou tuto režii postará, takže můžete rozhraní API začít používat hned. Nemusíte si dělat starosti se závislostmi, konfigurací a dokonce ani s ověřováním.

Co octokit/rest.js umí?

Jednoduchá odpověď je, že umí v podstatě vše, co se týká automatizace GitHubu. Nejenže máte přístup k potvrzením, žádostem o přijetí změn a problémům, ale máte také přístup k uživatelům, projektům a organizacím. Můžete načíst seznamy běžně používaných souborů, jako jsou oblíbené licence nebo .gitignore soubory. Můžete dokonce generovat Markdown.

Pokud vytváříte něco, co integruje GitHub, je dobré zjistit, co hledáte, v úplné dokumentaci k octokit/rest.js.

Čím se používání GitHub Scriptu liší od octokit/rest.js?

Hlavní rozdíl v použití spočívá v tom, že GitHub Script poskytuje předem neověřený klient octokit/rest.js s názvem github.

Takže místo:

octokit.issues.createComment({

Použili byste:

github.issues.createComment({

Vedle proměnné github jsou k dispozici také následující proměnné:

Vytvoření pracovního postupu používajícího GitHub Script

Akce GitHub Scriptu se dají používat v pracovním postupu stejně jako jakékoli jiné akce. Díky tomu je můžete dokonce kombinovat se stávajícími pracovními postupy, jako jsou například ty, které jste už nastavili pro CI/CD. Pro ilustraci jeho pohodlí teď vytvoříme kompletní pracovní postup, který pomocí GitHub Scriptu automaticky publikuje komentář ke všem nově vytvořeným problémům.

Začneme s name klauzulí a on klauzulí, která určuje, že se tento pracovní postup spustí při otevření problémů.

name: Learning GitHub Script

on:
  issues:
    types: [opened]

Dále definujeme úlohu, comment která běží v Linuxu, pomocí řady kroků.

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

V tomto případě je jen jeden krok: akce GitHub Scriptu.

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

Použití GitHub Actions může skutečně pomoct automatizovat události, které probíhají ve vašich úložištích. Představte si, že návštěvník úložiště otevřel nový problém obsahující informace o kritické chybě. Možná jim budete chtít poděkovat za to, že to upoutáte. tento jednoduchý úkol ale může být ohromující, protože vaše úložiště přiláká více návštěvníků. Automatizací komentáře k problému můžete automatizovat proces poděkování návštěvníkům pokaždé.

Použití akcí/github-script@0.8.0

Akce actions/github-script@0.8.0, označovaná také jako GitHub Script, dělá veškerou těžkou práci týkající se integrace s rozhraním API GitHubu.

Tato akce vyžaduje github-token , aby se požadavky ověřovaly za běhu. To kód udělá automaticky za vás, takže můžete použít tento kód tak, jak je.

Parametr script může být prakticky jakýkoli JavaScript, který používá klienta octokit/rest/js uložený v github. V tomto případě je to jen jeden řádek (rozdělený na více řádků pro lepší čitelnost), který vytváří pevně zakódovaný komentář.

Po spuštění pracovního postupu GitHub Script zaznamená kód, který se spustil pro kontrolu, na kartě Akce .

Screenshot of a completed workflow using GitHub Script.

Spouštění ze samostatného souboru

Někdy může být potřeba použít významný kód, abyste splnili svůj scénář GitHub Scriptu. V takovém případě můžete skript udržovat v samostatném souboru a odkazovat na něj z pracovního postupu místo toho, abyste veškerý skript vložili do řádků pracovního postupu.

Tady je příklad jednoduchého pracovního postupu, který to dělá:

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

Podívejte se na další příklady GitHub Scriptu.