Prozkoumání kontextů a výrazů na GitHubu
Kontexty představují způsob, jak získat přístup k informacím o spuštěních pracovních postupů, proměnných, prostředích spouštěčů, úlohách a krocích. Každý kontext je objekt, který obsahuje vlastnosti, které mohou být řetězce nebo jiné objekty.
K kontextům můžete přistupovat pomocí syntaxe výrazu. Výraz může být libovolnou kombinací literálních hodnot, odkazů na kontext nebo funkcí. Pomocí operátorů můžete kombinovat literály, kontextové odkazy a funkce.
Kontexty
Když vytváříte pracovní postupy a akce, měli byste vždy zvážit, zda váš kód může spustit nedůvěryhodný vstup od možných útočníků. Určité kontexty by se měly považovat za nedůvěryhodné vstupy, protože útočník by mohl vložit vlastní škodlivý obsah. Další informace najdete v tématu Posílení zabezpečení pro GitHub Actions.
Následující tabulka obsahuje příklady kontextů dostupných na GitHubu, nejedná se o úplný výpis.
| Název kontextu | Typ | Popis |
|---|---|---|
github |
object |
Informace o spuštění pracovního postupu |
env |
object |
Obsahuje proměnné nastavené v pracovním postupu, úloze nebo kroku. |
vars |
object |
Obsahuje proměnné nastavené na úrovni úložiště, organizace nebo prostředí. |
job |
object |
Informace o aktuálně spuštěné úloze |
Návod
Úplný seznam kontextů najdete v tématu O kontextech.
Určení, kdy použít kontexty
GitHub Actions zahrnuje dvě kolekce proměnných označovaných jako výchozí proměnné a kontexty. Tyto proměnné jsou určeny pro použití v různých bodech pracovního postupu:
- Výchozí proměnné prostředí: Tyto proměnné prostředí existují pouze u spouštěče, který spouští vaši úlohu.
- Kontexty: Většinu kontextů můžete použít v libovolném bodě pracovního postupu, včetně případů, kdy budou výchozí proměnné nedostupné.
V následujícím příkladu if příkaz zkontroluje github.ref kontext a určí název aktuální větve. Kontrola if se zpracuje a úloha se odešle do spouštěče, jen pokud je výsledek true. Po odeslání úlohy do spouštěče se krok spustí a odkazuje na proměnnou $GITHUB_REF z spouštěče.
name: CI
on: push
jobs:
prod-check:
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
steps:
- run: echo "Deploying to production server on branch $GITHUB_REF"
Kontexty dostupné v GitHub Actions
Následující tabulka obsahuje dostupné kontexty nejvyšší úrovně, stručný popis a odkaz na další informace o vlastnostech objektu.
| Kontext nejvyšší úrovně | Popis | Vlastnosti a příklady |
|---|---|---|
github |
Kontext nejvyšší úrovně dostupný během jakékoli úlohy nebo kroku pracovního postupu. |
github Vlastnosti kontextu. |
env |
Obsahuje proměnné nastavené v pracovním postupu, úloze nebo kroku. Neobsahuje proměnné, které by byly zděděny procesem spouštěče. |
env Vlastnosti kontextu. |
vars |
Obsahuje vlastní konfigurační proměnné nastavené na úrovni organizace, úložiště a prostředí. |
vars Příklady použití |
job |
Obsahuje informace o aktuálně spuštěné úloze. |
job Vlastnosti kontextu. |
jobs |
K dispozici pouze v opakovaně použitelných pracovních postupech a lze je použít pouze k nastavení výstupů pro opakovaně použitelný pracovní postup. |
jobs Vlastnosti kontextu. |
steps |
Obsahuje informace o dokončených krocích v aktuálním úkolu, které mají specifikovaný id. |
steps Vlastnosti kontextu. |
runner |
Obsahuje informace o spouštěči, který spouští aktuální úlohu. |
runner Vlastnosti kontextu. |
secrets |
Obsahuje názvy a hodnoty tajných kódů, které jsou k dispozici pro spuštění pracovního postupu. |
secrets Vlastnosti kontextu. |
strategy |
Obsahuje informace o strategii provádění matice pro aktuální úkol. |
strategy Vlastnosti kontextu. |
matrix |
Obsahuje vlastnosti matice definované v souboru pracovního postupu, které platí pro aktuální úlohu. |
matrix Vlastnosti kontextu. |
needs |
Obsahuje výstupy ze všech úloh, které jsou definovány jako přímá závislost aktuální úlohy. |
matrix Vlastnosti kontextu. |
inputs |
Obsahuje vstupní vlastnosti, které jsou předány akci, opakovaně použitelnému pracovnímu postupu nebo ručně aktivovanému pracovnímu postupu. |
inputs Vlastnosti kontextu. |
Výrazy
Výrazy můžete použít k programovému nastavení proměnných prostředí v souborech pracovních postupů a kontextech přístupu. Výraz může být libovolnou kombinací literálních hodnot, odkazů na kontext nebo funkcí. Pomocí operátorů můžete kombinovat literály, kontextové odkazy a funkce.
Výrazy se běžně používají s podmíněným if klíčovým slovem v souboru pracovního postupu k určení, jestli se má krok spustit. Pokud je if podmíněný true, krok se spustí.
Potřebujete použít specifickou syntaxi, abyste GitHubu řekli, aby vyhodnotil výraz místo toho, ${{ <expression> }}aby se s ním zacházeli jako s řetězcem. Výjimkou tohoto pravidla je, když používáte výrazy v if klauzuli, kde je obvykle nelze vynechat ${{ a }}.
Následující ukázka kódu ukazuje nastavení proměnné prostředí.
env:
MY_ENV_VAR: ${{ <expression> }}
Literalové hodnoty
Jako součást výrazu můžete použít booleandatové typy , null, numbernebo string datové typy. V podmíněných výrazech jsou falsy hodnoty (false, 0, -0, "", '', null) přetypovány na false a pravdivé (true a jiné nenulové hodnoty) jsou přetypovány na true. Následující příklady ukazují implementaci literálů.
env:
myNull: ${{ null }}
myBoolean: ${{ false }}
myIntegerNumber: ${{ 711 }}
myFloatNumber: ${{ -9.2 }}
myHexNumber: ${{ 0xff }}
myExponentialNumber: ${{ -2.99e-2 }}
myString: Mona the Octocat
myStringInBraces: ${{ 'It''s open source!' }}
Operátoři
Operátory hrají zásadní roli při vyhodnocování výrazů. Výraz se může skládat z literálních hodnot, odkazů na kontexty nebo funkcí. Operátory umožňují kombinovat tyto prvky a vytvářet složitější výrazy. Tady jsou některé klíčové operátory:
Logické operátory:
-
&&(a): Kombinuje dvě podmínky, z nichž obě musí být pravdivé, aby se celkový výraz vyhodnotil jako pravdivý. -
||(nebo): Kombinuje dvě podmínky a výraz se vyhodnotí jako true, pokud je splněna podmínka. -
!(ne): Neguje podmínku a převrací její hodnotu pravdy.
-
Operátory rovnosti:
-
==(rovná): Porovná dvě hodnoty rovnosti. -
!=(nerovná se): Zkontroluje, jestli se dvě hodnoty nerovnají.
-
Relační operátory:
-
<(menší než) -
>(větší než) -
<=(menší než nebo rovno) -
>=(větší než nebo rovno)
-
Tyto operátory umožňují vytvářet dynamické pracovní postupy určením, kdy se mají konkrétní kroky spouštět na základě podmínek. Nezapomeňte použít správnou syntaxi pro výrazy, například $\{\{ <expression> \}\}$, aby se zajistilo správné vyhodnocení.
Další informace o operátorech najdete v tématu Operátory.