Променливите на средата и конфигурационните променливи са изяснени

Има повече от един начин за предаване на променливи на вашите GitHub CI/CD процеси и е лесно да повярвате в грешни предположения за тях, когато започвате. Тази публикация има за цел да изясни основните разлики между тях.

Има два типа променливи Github Actions:

  • env се дефинира директно на ниво работен поток или по-ниско. Обхватът може да бъде единствен, но пъленработен поток, единично задание или една стъпка. GitHub също ги нарича променливи на средата.
  • var се дефинира на ниво org, repo или environment. Обхватът може да обхваща множество работни потоци и/или хранилища. GitHub също ги нарича конфигурационни променливи.

Не мисля, че това наименуване е полезно, така че просто ще ги наричам колективно „променливи“ и всяка като env или var.

[env]

Забележка: За да изброите всички env, налични на ниво стъпка, добавете стъпка run: env.

env може да бъде твърдо кодирано или динамично зададено директно в yaml файла. Те са чувствителни към главни и малки букви и не е възможно да презапишете по подразбиране env като GITHUB_* или RUNNER_*. И както споменахме, техният обхват може да бъде:

Вижте примера по-долу:

name: What people feel about a drink

on:
 workflow_dispatch

env: 
  # Scope: workflow, all jobs and steps can access it
  DRINK: wine 

jobs:

  red-wine:
    runs-on: ubuntu-latest
    env:
      # Scope: job, all steps can access it
      DRINK_TYPE: red 
    steps:
      - name: "Case 1: Teetotaler"
        run: echo "I'm a $PERSON and I $ATTITUDE $DRINK_TYPE $DRINK."
        env:
          # Scope: step, only this step can access it
          ATTITUDE: do not drink 
          PERSON: teetotaler
      - name: "Case 2: casual drinker"
        run: echo "I'm a $PERSON and I $ATTITUDE $DRINK_TYPE $DRINK."
        env:
          ATTITUDE: like
          PERSON: casual drinker

  white-wine:
    runs-on: ubuntu-latest
    env:
      DRINK_TYPE: white
    steps:
      - name: "Case 1: Teetotaler"
        run: echo "I'm a $PERSON and I…