Udforsk kontekster og udtryk i GitHub

Fuldført

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.