Jak funkce GitHub Actions automatizuje vývojářské úlohy?
Tady představujeme GitHub Actions a pracovní postupy. Naučíte se, jaké typy akcí můžete použít a kde je najít. Podíváte se také na příklady těchto typů akcí a na to, jak se vejdou do pracovního postupu.
GitHub zkracuje dobu nutnou od nápadu po nasazení
GitHub je navržený tak, aby týmům vývojářů a technikům DevOps pomohl rychle sestavovat a nasazovat aplikace. Na GitHubu existuje mnoho funkcí, které umožňují tyto efektivity, ale obecně spadají do jedné ze dvou kategorií:
- Komunikace: Zvažte všechny způsoby, jak GitHub usnadňuje týmu vývojářů komunikaci s projektem vývoje softwaru: revize kódu v žádostech o přijetí změn, problémy GitHubu, panely projektů, wikiweby, oznámení atd.
- Automatizace: GitHub Actions umožňuje vašemu týmu automatizovat pracovní postupy v každém kroku procesu vývoje softwaru– od integrace po doručení až po nasazení. Umožňuje dokonce automatizovat přidávání popisků do žádostí o přijetí změn a kontrolu zastaralých problémů a žádostí o přijetí změn.
V kombinaci tyto funkce umožňují tisícům vývojových týmů efektivně snížit dobu potřebnou od jejich počátečního nápadu k nasazení.
Zkrácení doby vývoje pomocí automatizace pracovních postupů
V tomto modulu se zaměříme na automatizaci. Chvíli si porozumíte tomu, jak můžou týmy používat automatizaci, abychom zkrátili dobu potřebnou k dokončení typického pracovního postupu vývoje a nasazení.
Vezměte v úvahu všechny úlohy, které musí proběhnout po napsání kódu, ale před tím, než můžete kód spolehlivě použít pro zamýšlený účel. V závislosti na cílech vaší organizace pravděpodobně potřebujete provést jednu nebo více z následujících úloh.
- Ujistěte se, že kód projde všemi testy jednotek.
- Proveďte kontroly kvality kódu a dodržování předpisů, abyste měli jistotu, že zdrojový kód splňuje standardy organizace.
- Zkontrolujte kód a jeho závislosti, jestli nejsou známé problémy se zabezpečením.
- Sestavte kód integrací nového zdrojového kódu od (potenciálně) několika přispěvatelů.
- Ujistěte se, že software projde integračními testy.
- Zadejte verzi nového buildu.
- Doručte nové binární soubory do příslušného umístění systému souborů.
- Nasaďte nové binární soubory na jeden nebo více serverů.
- Určete, jestli některý z těchto úkolů neprojde, a nahlaste problém správnému jednotlivci nebo týmu pro řešení.
Výzvou je spolehlivě, konzistentně a trvale provádět tyto úlohy. Tento proces je ideální úlohou pro automatizaci pracovních postupů. Pokud už spoléháte na GitHub, pravděpodobně budete chtít nastavit automatizaci pracovního postupu pomocí GitHub Actions.
Co je funkce GitHub Actions?
GitHub Actions jsou zabalené skripty pro automatizaci úloh v pracovním postupu vývoje softwaru na GitHubu. GitHub Actions můžete nakonfigurovat tak, aby aktivoval složité pracovní postupy, které vyhovují potřebám vaší organizace. Trigger se může provést pokaždé, když vývojáři zkontrolují nový zdrojový kód do konkrétní větve, v časových intervalech nebo ručně. Výsledkem je spolehlivý a udržitelný automatizovaný pracovní postup, který vede k významnému poklesu doby vývoje.
Kde můžete najít akce GitHub Actions?
Akce GitHub Actions jsou skripty, které používají datový formát yml. Každé úložiště má kartu Akce , která nabízí rychlý a snadný způsob, jak začít s nastavením prvního skriptu. Pokud se zobrazí pracovní postup, který si myslíte, že by mohl být skvělým výchozím bodem, stačí vybrat tlačítko Konfigurovat a přidat skript a začít upravovat zdrojový soubor yml.
Kromě využití akcí GitHub Actions na kartě Actions můžete provádět následující akce:
- Můžete vyhledávat akce GitHub Actions přes GitHub Marketplace. GitHub Marketplace vám umožní najít a nakoupit nástroje, které váš pracovní postup rozšíří.
- Můžete vyhledávat opensourcové projekty. Například organizace GitHub Actions nabízí mnoho oblíbených opensourcových úložišť obsahujících GitHub Actions, které můžete použít.
- Můžete si vytvořit úplně nové vlastní akce GitHub Actions. Můžete je nastavit jako open source nebo je dokonce publikovat na GitHub Marketplace.
Použití open source GitHub Actions
Řada GitHub Actions je opensourcová a dostupná pro každého, kdo je chce používat. Stejně jako u libovolného opensourcového softwaru je ale potřeba je před použitím v projektu pečlivě zkontrolovat. Podobně jako doporučené standardy komunity s opensourcovým softwarem, jako je například README, pravidla chování, přispívání souborů a šablony problémů, můžete při používání GitHub Actions postupovat podle těchto doporučení:
- Zkontrolujte soubor akce
action.ymlpro vstupy, výstupy a ujistěte se, že kód dělá to, co říká. - Zkontrolujte, jestli je akce na GitHub Marketplace. Tato kontrola stojí za to, i když nemusí být akce na GitHub Marketplace platná.
- Zkontrolujte, jestli je akce ověřená na GitHub Marketplace. Ověření znamená, že GitHub schválil použití této akce. Před použitím byste ho ale měli zkontrolovat.
- Zahrňte verzi akce, kterou používáte, zadáním odkazu Gitu, SHA nebo značky.
Typy akcí GitHubu
Existují tři typy akcí GitHubu: akce kontejnerů, akce JavaScriptu a složené akce.
U akcí kontejneru je prostředí součástí kódu akce. Tyto akce se dají spouštět jen v linuxovém prostředí hostovaném na GitHubu. Akce kontejneru podporují mnoho různých jazyků.
Akce JavaScriptu do kódu prostředí nezahrnují. Abyste mohli tyto akce provést, musíte určit prostředí. Tyto akce můžete spustit na virtuálním počítači (virtuálním počítači) v cloudu nebo v místním prostředí. Akce JavaScriptu podporují prostředí Linux, macOS a Windows.
Složené akce umožňují zkombinovat několik kroků pracovního postupu v rámci jedné akce. Pomocí této funkce můžete například seskupit několik příkazů spustit do akce a pak mít pracovní postup, který pomocí této akce provede sbalené příkazy jako jeden krok.
Anatomie akce GitHubu
Tady je příklad akce, která provádí rezervaci gitu úložiště. Tato akce, akce/checkout@v1, je součástí kroku v pracovním postupu. Tento krok také sestaví Node.js kód, který byl rezervován. Promluvíme si o pracovních postupech, úlohách a krocích v další části.
steps:
- uses: actions/checkout@v1
- name: npm install and build webpack
run: |
npm install
npm run build
Předpokládejme, že ke spuštění kontejnerizovaného kódu chcete použít akci kontejneru. Ta by mohla vypadat takto:
name: "Hello Actions"
description: "Greet someone"
author: "octocat@github.com"
inputs:
MY_NAME:
description: "Who to greet"
required: true
default: "World"
runs:
uses: "docker"
image: "Dockerfile"
branding:
icon: "mic"
color: "purple"
Všimněte si části inputs. Tady získáte hodnotu proměnné s názvem MY_NAME. Tato proměnná je nastavena v pracovním postupu, který tuto akci spouští.
V části runs si všimněte, že v atributu zadáváte uses. Při nastavování této hodnoty musíte zadat cestu k souboru image Dockeru. V tomto případě dockerfile. Tady nezakrýváme specifika Dockeru, ale pokud chcete další informace, podívejte se na modul Úvod do kontejnerů Dockeru .
Poslední část, branding, přizpůsobí vaši akci na GitHub Marketplace pro případ, že byste ji tam chtěli publikovat.
Úplný seznam metadat akce najdete v tématu Syntaxe metadat pro GitHub Actions.
Co je pracovní postup GitHub Actions?
Pracovní postup GitHub Actions je proces, který nastavíte v úložišti pro automatizaci úloh životního cyklu vývoje softwaru, včetně GitHub Actions. Pomocí pracovního postupu můžete vytvářet, testovat, balit, vydávat a nasazovat libovolný projekt na GitHubu.
Při vytváření pracovního postupu přidáte akce do souboru .yml v adresáři .github/workflows v úložišti GitHub.
V nadcházejícím cvičení vypadá váš soubor pracovního postupu main.yml jako v tomto příkladu:
name: A workflow for my Hello World file
on: push
jobs:
build:
name: Hello world action
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: ./action-a
with:
MY_NAME: "Mona"
Všimněte si atributu on: , jeho hodnota je aktivační událost , která určuje, kdy se tento pracovní postup spustí. V této části aktivuje spuštění, když dojde k události push do vašeho úložiště. Můžete zadat jednotlivé události, jako je pole událostí, jako on: pushon: [push, pull_request]je nebo mapa konfigurace události, která naplánuje pracovní postup nebo omezí provádění pracovního postupu na konkrétní soubory, značky nebo změny větví. Mapa může vypadat přibližně takto:
on:
# Trigger the workflow on push or pull request,
# but only for the main branch
push:
branches:
- main
pull_request:
branches:
- main
# Also trigger on page_build, as well as release created events
page_build:
release:
types: # This configuration doesn't affect the page_build event above
- created
Událost se spouští u všech typů aktivit, pokud nezadáte konkrétní typ nebo typy. Úplný seznam událostí a jejich typů aktivit najdete v tématu : Události, které aktivují pracovní postupy v dokumentaci k GitHubu.
Pracovní postup musí mít alespoň jednu úlohu. Úloha je část pracovního postupu přidruženého ke spouštěči. Spouštěč může být hostovaný na GitHubu nebo v místním prostředí a úloha může běžet na počítači nebo v kontejneru. Určíte běžec s atributem runs-on: . Tady říkáte pracovnímu postupu, aby tuto úlohu spustil.ubuntu-latest
Každá úloha má kroky k dokončení. V našem příkladu krok používá akce /checkout@v1 k pokladně úložiště. Zajímavé je uses: ./action-a hodnota, což je cesta k akci kontejneru, kterou vytvoříte v souboru action.yml .
Poslední část tohoto souboru pracovního postupu nastaví MY_NAME hodnotu proměnné pro tento pracovní postup. Vzpomeňte si, že akce kontejneru přijala vstup s názvem MY_NAME.
Další informace o syntaxi pracovního postupu najdete v tématu Syntaxe pracovního postupu pro GitHub Actions.
Odkazování na akce v pracovních postupech
Při vytváření pracovních postupů v GitHub Actions můžete odkazovat na akce z různých zdrojů. Tyto akce lze použít k automatizaci úloh v pracovních postupech. Níže jsou uvedeny primární zdroje, kde pracovní postupy můžou odkazovat na akce:
Publikovaná image kontejneru Dockeru v Docker Hubu
Pracovní postupy můžou odkazovat na akce publikované jako image kontejnerů Dockeru v Docker Hubu. Tyto akce jsou kontejnerizované a zahrnují všechny závislosti potřebné k provedení akce. Pokud chcete takovou akci použít, zadáte image Dockeruusesv atributu kroku pracovního postupu. Například:steps: - name: Run a Docker action uses: docker://<docker-image-name>:<tag>Jakékoli veřejné úložiště
Akce hostované ve veřejných úložištích se dají přímo odkazovat ve vašich pracovních postupech. Tyto akce jsou přístupné komukoli a je možné je použít zadáním názvu a verze úložiště (odkaz Git, SHA nebo značka) v atributuuses. Například:steps: - name: Use a public action uses: actions/checkout@v3
[! DŮLEŽITÉ]
Pro lepší zabezpečení používejte při odkazování na akce úplné potvrzení SHA , ne jen značku jako
@v3.
Tím se zajistí, že váš pracovní postup vždy používá stejný kód, i když se akce aktualizuje nebo změní později.
Příklad:uses: actions/checkout@c2c1744e079e0dd11c8e0af4a96064ca4f6a2e9e
-
Stejné úložiště jako soubor pracovního postupu
Můžete odkazovat na akce uložené ve stejném úložišti jako pracovní soubor postupu. Tato funkce je užitečná pro vlastní akce specifické pro váš projekt. Pokud chcete na tyto akce odkazovat, použijte relativní cestu k adresáři akce. Například:steps: - name: Use a local action uses: ./path-to-action
Další podrobnosti najdete v pokynech k posílení zabezpečení pro GitHub Actions.
-
Podnikový marketplace
Pokud vaše organizace používá GitHub Enterprise, můžete odkazovat na akce z privátního marketplace vašeho podniku. Tyto akce jsou kurátorovány a spravovány vaší organizací a zajišťují dodržování interních standardů. Například:steps: - name: Use an enterprise marketplace action uses: enterprise-org/action-name@v1
Poznámka:
- Na akce v privátních úložištích lze odkazovat také, ale vyžadují správné ověřování a oprávnění.
- Při odkazování na akce vždy zadejte verzi (odkaz Git, SHA nebo značku), abyste zajistili konzistenci a vyhnuli se neočekávaným změnám.
Další informace najdete v tématu Odkazování na akce v pracovních postupech.
GitHub hostovaný v porovnání se spouštěči v místním prostředí
Stručně jsme zmínili běžce jako spojené s prací. Spouštěč je jednoduše server s nainstalovanou aplikací GitHub Actions runner. V bloku úloh v předchozím příkladu pracovního postupu byl atribut runs-on: ubuntu-latest, který řekl pracovnímu postupu, že se úloha spustí pomocí spouštěče hostovaného GitHubem, který běží v prostředí ubuntu-latest.
Pokud jde o spouštěče, existují dvě možnosti, ze kterých si můžete vybrat: spouštěče hostované na GitHubu nebo spouštěče v místním prostředí. Pokud používáte spouštěč hostovaný na GitHubu, každá úloha se spustí v nové instanci virtuálního prostředí. Typ spouštěče hostovaného na GitHubu, který definujete, runs-on: {operating system-version} a pak určuje toto prostředí. U spouštěčů v místním prostředí musíte použít popisek v místním prostředí, jeho operační systém a architekturu systému. Například místní spouštěč s operačním systémem Linux a architekturou ARM32 by vypadal jako následující specifikace: runs-on: [self-hosted, linux, ARM32].
Každý typ spouštěče má své výhody, ale spouštěče hostované v GitHubu nabízejí rychlejší a jednodušší způsob spouštění pracovních postupů, i když s omezenými možnostmi. Spouštěče v místním prostředí představují vysoce konfigurovatelný způsob spouštění pracovních postupů ve vlastním místním prostředí. Spouštěče v místním prostředí nebo v cloudu můžete spouštět místně nebo v cloudu. K vytvoření vlastní konfigurace hardwaru s větším výpočetním výkonem nebo pamětí můžete použít také místní spouštěče. Tento typ konfigurace pomáhá spouštět větší úlohy, instalovat software dostupný v místní síti a zvolit operační systém, který nenabízí spouštěče hostované GitHubem.
GitHub Actions může mít omezení využití
GitHub Actions má určitá omezení využití v závislosti na vašem plánu GitHubu a na tom, jestli je váš spouštěč hostovaný na GitHubu nebo v místním prostředí. Další informace o limitech využití najdete v dokumentaci k GitHubu v tématu Limity využití, fakturace a správa .
GitHub hostuje větší běžce
GitHub nabízí větší spouštěče pro pracovní postupy, které vyžadují více prostředků. Tyto spouštěče jsou hostované na GitHubu a poskytují vyšší využití procesoru, paměti a místa na disku v porovnání se standardními spouštěči. Jsou navržené tak, aby efektivně zvládly pracovní postupy náročné na prostředky a zajistily optimální výkon pro náročné úlohy.
Velikosti a štítky běžeckého pásu
Větší spouštěče jsou k dispozici v několika konfiguracích, které poskytují vylepšené virtuální procesory, paměť RAM a úložiště SSD, aby splňovaly různé požadavky pracovního postupu. Tyto konfigurace jsou ideální pro scénáře, jako jsou:
- Kompilace velkých základů kódu s rozsáhlými zdrojovými soubory.
- Spouštění komplexních testovacích sad, včetně integrace a kompletních testů
- Zpracování velkých datových sad pro úlohy analýzy dat nebo strojového učení
- Vytváření aplikací se složitými závislostmi nebo velkými binárními výstupy
- Provádění vysoce výkonných simulací nebo výpočetního modelování
- Spouštění kódování videa, vykreslování nebo jiných pracovních postupů pro zpracování multimédií
Pokud chcete použít výkonnější spouštěč, zadejte jeho požadovaný štítek v atributu runs-on vašeho workflow souboru. Pokud byste například chtěli použít spouštěč s 16 vCPU a 64 GB paměti RAM, byste nastavili runs-on: ubuntu-latest-16core.
jobs:
build:
runs-on: ubuntu-latest-16core
steps:
- uses: actions/checkout@v2
- name: Build project
run: make build
Tyto větší spouštěče udržují kompatibilitu s existujícími pracovními postupy zahrnutím stejných předinstalovaných nástrojů jako standardní ubuntu-latest spouštěče.
Další informace o velikostech běžců pro větší běžce najdete v dokumentaci k GitHubu.
Správa větších běžců
GitHub poskytuje nástroje pro efektivní správu větších běžících jednotek, což zajišťuje optimální využití prostředků a správu nákladů. Tady je několik klíčových aspektů správy větších běžců:
Monitorování využití
Využití větších spouštěčů můžete monitorovat prostřednictvím stránky využití GitHub Actions v nastavení úložiště nebo organizace. Tato stránka poskytuje přehled o počtu spuštěných úloh, celkovém modulu runtime a přidružených nákladech.
Správa přístupu
Pokud chcete řídit přístup k větším runnerům, můžete nakonfigurovat zásady na úrovni úložiště nebo organizace. Tato konfigurace zajišťuje, že tyto vysoce náročné spouštěče mohou používat pouze autorizované pracovní postupy nebo týmy.
Správa nákladů
U větších běžců vznikají na základě jejich využití další náklady. Pokud chcete spravovat náklady, zvažte následující návrhy:
- Používejte větší běžeče pouze pro pracovní postupy, které vyžadují větší množství prostředků.
- Zkraťte dobu běhu optimalizací pracovních postupů.
- Pravidelně monitorujte podrobnosti o fakturaci a sledujte výdaje.
Škálování pracovních postupů
Pokud vaše pracovní postupy vyžadují časté použití větších spouštěčů, zvažte strategie škálování, například:
- Používání lokálně hostovaných spouštěčů pro předvídatelné úlohy.
- Rozdělení pracovních postupů na menší úlohy, aby se zatížení rozdělilo mezi standardní výpočetní jednotky.