Jak funkce GitHub Actions automatizuje vývojářské úlohy?

Dokončeno

Tady představíme GitHub Actions a pracovní postupy. Dozvíte se, jaké typy akcí můžete použít a kde je najdete. Podíváte se také na příklady těchto typů akcí a na to, jak se hodí 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 najdete mnoho funkcí, které to umožňují. 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, takže chvíli 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 budete pravděpodobně muset provést jednu nebo více následujících úloh:

  • Kroky nutné k zajištění, že kód úspěšně 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.
  • Zjišťování známých problémů zabezpečení v kódu a jeho závislostech
  • Sestavení kódu, který dokáže integrovat nový zdroj od (potenciálně) většího počtu přispěvatelů
  • Kroky nutné k zajištění, že software úspěšně projde integračními testy
  • Vytvoření verzí nového buildu
  • Doručení nových binárních souborů do příslušného umístění v systému souborů
  • Nasazení nových binárních souborů na nejméně jeden server
  • Pokud některý z těchto úkolů neprojde, nahlaste problém správnému jednotlivci nebo týmu pro vyřešení.

Výzvou je spolehlivě, konzistentně a trvale provádět tyto úlohy. Proto jde o ideální úlohu automatizace pracovního postupu. Pokud už spoléháte na GitHub, budete pravděpodobně 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é splňují potřeby vaší organizace; pokaždé, když vývojáři kontrolují 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.

Snímek obrazovky s kartou *Actions* v GitHub Actions zobrazující jednoduchý pracovní postup a tlačítko pro nastavení tohoto pracovního postupu

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. Pokud chcete, můžete je navíc vytvořit jako open source, nebo 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.yml pro vstupy, výstupy a ujistěte se, že kód dělá to, co říká.
  • Zkontrolujte, jestli je akce na GitHub Marketplace. To je dobrá kontrola, i když akce nemusí být na GitHub Marketplace platná.
  • Zkontrolujte, jestli je akce ověřená na GitHub Marketplace. To 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í. Budete muset zadat prostředí, které má tyto akce provést. Tyto akce můžete spustit na virtuálním počítači v cloudu nebo místně. 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á se nastaví v pracovním postupu, který spouští akci.

V části runs si všimněte, že v atributu uses zadáváte docker. Když to uděláte, budete muset zadat cestu k souboru image Dockeru. Tady se nazývá Dockerfile. Tady se nebudeme zabývat specifiky 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í bude soubor pracovního postupu main.yml vypadat takto:

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:. To je trigger, který umožňuje určit, kdy se 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 does not affect the page_build event above
      - created

Pokud nezadáte typ nebo typy aktivit, událost se aktivuje pro všechny své 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. Spouštěč zadáte pomocí atributu runs-on: . Tady říkáte pracovnímu postupu, aby tuto úlohu spustil.ubuntu-latest

Každá úloha bude mít kroky, které musí dokončit. 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 . Podívali jsme se na obsah souboru action.yml v části Co je GitHub Actions?

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.

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 předchozím příkladu pracovního postupu byl runs-on: ubuntu-latest v bloku úloh atribut, který řekl pracovnímu postupu, že se úloha spustí pomocí spouštěče hostovaného v GitHubu ubuntu-latest , který běží v prostředí.

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ý gitHubem, každá úloha se spustí v nové instanci virtuálního prostředí určeného typem spouštěče hostovaného GitHubem, runs-on: {operating system-version}který definujete. 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 takto: 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. Pomocí místních spouštěčů můžete také vytvořit vlastní konfiguraci hardwaru s větším výpočetním výkonem nebo pamětí pro spouštění větších úloh, instalovat software dostupný v místní síti a zvolit operační systém, který nenabízí spouštěče hostované GitHubem.

Omezení využití akcí GitHub Actions

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 .