Переменные среды и переменные конфигурации разъяснены
Существует несколько способов передачи переменных в процессы 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…