Udforsk kontekster og udtryk i GitHub
Kontekster er en måde at få adgang til oplysninger om kørsler af arbejdsprocesser, variabler, løbermiljøer, job og trin. Hver kontekst er et objekt, der indeholder egenskaber, som kan være strenge eller andre objekter.
Du kan få adgang til kontekster ved hjælp af udtrykssyntaksen. Et udtryk kan være en hvilken som helst kombination af konstantværdier, referencer til en kontekst eller funktioner. Du kan kombinere konstanter, kontekstreferencer og funktioner ved hjælp af operatorer.
Sammenhænge
Når du opretter arbejdsprocesser og handlinger, skal du altid overveje, om din kode kan udføre input, der ikke er tillid til, fra mulige hackere. Visse kontekster skal behandles som input, der ikke er tillid til, da en hacker kan indsætte deres eget skadelige indhold. Du kan finde flere oplysninger Sikkerhedshærdning for GitHub-handlinger."
Følgende tabel indeholder eksempler på kontekster, der er tilgængelige i GitHub. Det er ikke en komplet liste.
| Kontekstnavn | Slags | Beskrivelse |
|---|---|---|
github |
object |
Oplysninger om kørsel af arbejdsprocessen. |
env |
object |
Indeholder variabler, der er angivet i en arbejdsproces, et job eller et trin. |
vars |
object |
Indeholder variabler, der er angivet på lager-, organisations- eller miljøniveauer. |
job |
object |
Oplysninger om det job, der kører i øjeblikket. |
Drikkepenge
Hvis du vil have en komplet liste over kontekster, skal du gå til Om kontekster.
Bestemmelse af, hvornår kontekster skal bruges
GitHub-handlinger omfatter to samlinger af variabler, der kaldes standardvariabler og kontekster. Disse variabler er beregnet til brug på forskellige punkter i arbejdsprocessen:
- Standardmiljøvariabler: Disse miljøvariabler findes kun på den løber, der udfører dit job.
- kontekster: Du kan til enhver tid bruge de fleste kontekster i arbejdsprocessen, herunder når standardvariabler, ikke er tilgængelige.
I følgende eksempel kontrollerer if-sætningen den github.ref kontekst for at bestemme det aktuelle forgreningsnavn. Den if kontrol behandles, og jobbet sendes kun til løberen, hvis resultatet er true. Når jobbet er sendt til løberen, udføres trinnet og henviser til variablen $GITHUB_REF fra løberen.
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"
Tilgængelige kontekster i GitHub-handlinger
Følgende tabel indeholder de tilgængelige kontekster på øverste niveau, en kort beskrivelse og et link til flere oplysninger om objektets egenskaber.
| Kontekst på øverste niveau | Beskrivelse | Egenskaber og eksempler |
|---|---|---|
github |
Den kontekst på øverste niveau, der er tilgængelig under et hvilket som helst job eller trin i en arbejdsproces. |
Egenskaber for konteksten for github. |
env |
Indeholder variabler, der er angivet i en arbejdsproces, et job eller et trin. Den indeholder ikke variabler, der er nedarvet af løberprocessen. |
Egenskaber for konteksten for env. |
vars |
Indeholder brugerdefinerede konfigurationsvariabler, der er angivet på organisation-, lager- og miljøniveauer. |
Eksempler på vars brug. |
job |
Indeholder oplysninger om det aktuelt kørende job. |
Egenskaber for konteksten for job. |
jobs |
Kun tilgængelig i arbejdsprocesser, der kan genbruges, og kan kun bruges til at angive output for en arbejdsproces, der kan genbruges. |
Egenskaber for konteksten for jobs. |
steps |
Indeholder oplysninger om de fuldførte trin i det aktuelle job, hvor der er angivet en id. |
Egenskaber for konteksten for steps. |
runner |
Indeholder oplysninger om den løber, der udfører det aktuelle job. |
Egenskaber for konteksten for runner. |
secrets |
Indeholder navne og værdier på hemmeligheder, der er tilgængelige for kørsel af en arbejdsproces. |
Egenskaber for konteksten for secrets. |
strategy |
Indeholder oplysninger om matrixudførelsesstrategien for det aktuelle job. |
Egenskaber for konteksten for strategy. |
matrix |
Indeholder de matrixegenskaber, der er defineret i arbejdsprocesfilen, og som gælder for det aktuelle job. |
Egenskaber for konteksten for matrix. |
needs |
Indeholder output fra alle job, der er defineret som en direkte afhængighed af det aktuelle job. |
Egenskaber for konteksten for matrix. |
inputs |
Indeholder inputegenskaber, der er overført til en handling, til en arbejdsproces, der kan genbruges, eller til en manuelt udløst arbejdsproces. |
Egenskaber for konteksten for inputs. |
Udtryk
Du kan bruge udtryk til programmeringsmæssigt at angive miljøvariabler i arbejdsprocesfiler og adgangskontekster. Et udtryk kan være en hvilken som helst kombination af konstantværdier, referencer til en kontekst eller funktioner. Du kan kombinere konstanter, kontekstreferencer og funktioner ved hjælp af operatorer.
Udtryk bruges ofte sammen med nøgleordet betinget if i en arbejdsprocesfil for at afgøre, om et trin skal køres. Når en if betingelse er true, køres trinnet.
Du skal bruge specifik syntaks, ${{ <expression> }}, til at bede GitHub om at evaluere et udtryk i stedet for at behandle det som en streng. Undtagelsen til denne regel er, når du bruger udtryk i en if-delsætning, hvor de normalt kan udelades ${{ og }}.
I følgende kodeeksempel kan du se, hvordan du angiver en miljøvariabel.
env:
MY_ENV_VAR: ${{ <expression> }}
Konstanter
Som en del af et udtryk kan du bruge datatyperne boolean, null, numbereller string. I betingede betingelser gennemtvinges falsy-værdier (false, 0, -0, "", '', null) til false og sandfærdighed (true og andre ikke-falsy-værdier) til true. Følgende viser eksempler på implementering af konstanter.
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!' }}
Operatører
Operatorer spiller en afgørende rolle i evalueringen af udtryk. Et udtryk kan bestå af konstantværdier, referencer til kontekster eller funktioner. Operatorer giver dig mulighed for at kombinere disse elementer for at oprette mere komplekse udtryk. Her er nogle nøgleoperatorer:
logiske operatorer:
-
&&(og): Kombinerer to betingelser, som begge skal være sande, for at det overordnede udtryk kan evalueres som true. -
||(eller): Kombinerer to betingelser, og udtrykket evalueres som true, hvis en af betingelserne er true. -
!(ikke): Negerer en betingelse og spejlvender dens sandhedsværdi.
-
lighedsoperatorer:
-
==(lig med): Sammenligner to værdier for lighed. -
!=(ikke lig med): Kontrollerer, om to værdier ikke er ens.
-
sammenligningsoperatorer:
-
<(mindre end) -
>(større end) -
<=(mindre end eller lig med) -
>=(større end eller lig med)
-
Disse operatorer giver dig mulighed for at oprette dynamiske arbejdsprocesser ved at bestemme, hvornår bestemte trin skal køre på baggrund af betingelser. Husk at bruge den korrekte syntaks for udtryk, f.eks. $\{\{ <expression> \}\}$, for at sikre korrekt evaluering.
Du kan finde flere oplysninger om operatorer ved at besøge Operatorer.