Променливите на средата и конфигурационните променливи са изяснени
Има повече от един начин за предаване на променливи на вашите GitHub CI/CD процеси и е лесно да повярвате в грешни предположения за тях, когато започвате. Тази публикация има за цел да изясни основните разлики между тях.
Има два типа променливи Github Actions:
env
се дефинира директно на ниво работен поток или по-ниско. Обхватът може да бъде единствен, но пъленработен поток, единично задание или една стъпка. GitHub също ги нарича променливи на средата.var
се дефинира на ниво org, repo или environment. Обхватът може да обхваща множество работни потоци и/или хранилища. GitHub също ги нарича конфигурационни променливи.
Не мисля, че това наименуване е полезно, така че просто ще ги наричам колективно „променливи“ и всяка като env
или var
.
[env
]
Забележка: За да изброите всички env
, налични на ниво стъпка, добавете стъпка run: env
.
env
може да бъде твърдо кодирано или динамично зададено директно в yaml файла. Те са чувствителни към главни и малки букви и не е възможно да презапишете по подразбиране env
като GITHUB_*
или RUNNER_*
. И както споменахме, техният обхват може да бъде:
- Пълен работен процес (
env
на основно ниво на работен поток) - Работа (
jobs.<job_id>.env
) - Стъпка (
jobs.<job_id>.steps[*].env
)
Вижте примера по-долу:
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…