Co je GitHub Script?
V této lekci se dozvíte, 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 Octokit a umožňuje zápis JavaScriptu přímo do souboru pracovního postupu. Běží v Node.js, takže máte sílu této platformy k dispozici při psaní skriptů.
Co je Octokit?
Octokit je oficiální kolekce klientů pro rozhraní API GitHubu. Jeden z těchto klientů, rest.js, poskytuje javascriptový přístup k rozhraní REST GitHubu.
Rozhraní API GitHubu jste vždy mohli automatizovat prostřednictvím octokitu/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. Kromě přístupu k potvrzením, žádostem o přijetí změn a problémům 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 pravděpodobné, že v úplné dokumentaci octokitu/rest.js najdete, co hledáte.
Čím se používání GitHub Scriptu liší od octokit/rest.js?
Hlavním rozdílem v použití je, že GitHub Script poskytuje předem ověřený klient octokit/rest.js s názvem github.
Takže místo
octokit.issues.createComment({
používáte
github.issues.createComment({.
Vedle proměnné github jsou k dispozici také následující proměnné:
-
contextje objekt, který obsahuje kontext spuštění pracovního postupu. -
coreje odkaz na balíček @actions/core . -
ioje odkaz na balíček @actions/io .
Vytvoření pracovního postupu, který používá GitHub Script
Akce GitHub Scriptu se dají používat v pracovním postupu stejně jako jakékoli jiné akce. V důsledku toho je můžete dokonce kombinovat s existujícími pracovními postupy, jako jsou ty, které jste už nastavili pro CI/CD. Pro ilustraci pohodlí GitHub Scriptu teď vytvoříte kompletní pracovní postup, který ho použije k automatickému publikování komentáře ke všem nově vytvořeným problémům.
Začnete s name klauzulí a on klauzulí, která určuje, že se pracovní postup spustí při otevření problémů:
name: Learning GitHub Script
on:
issues:
types: [opened]
Dále definujete ú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 vás upozornili na chybu, ale tato jednoduchá úloha se může stát ohromující, jak 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 obtížnou práci pro integraci 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 uvádí GitHub Script ke kontrole kód, který spustil, na kartě Akce.
Spouštění ze samostatného souboru
Někdy může být potřeba použít značné množství kódu, 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ý používá danou techniku:
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.