Реализация переменных и скриптов в рабочем процессе
Теперь, когда вы знаете компоненты файла рабочего процесса, вы узнаете, как настроить эти рабочие процессы для различных сценариев. В этом уроке мы сосредоточимся на использовании переменных и сценариев для оптимизации рабочего процесса. Переменные предоставляют способ хранения и повторного использования нечувствительных сведений о конфигурации. Вы можете хранить любые данные конфигурации, такие как флаги компилятора, имена пользователей или имена серверов в виде переменных. Переменные интерполируются на компьютере runner, на котором выполняется рабочий процесс. Команды, выполняемые в действиях или шагах рабочего процесса, могут создавать, считывать и изменять переменные.
Вы можете задать собственные пользовательские переменные или использовать переменные среды по умолчанию, которые GitHub задает автоматически. Можно создать пользовательскую переменную двумя способами.
- Чтобы определить переменную среды для использования в одном рабочем процессе, можно использовать ключ
envв файле рабочего процесса. - Чтобы определить переменную конфигурации в нескольких рабочих процессах, ее можно определить на уровне организации, репозитория или среды.
Определение переменных среды для одного рабочего процесса
Чтобы задать настраиваемую переменную среды для одного рабочего процесса, ее можно определить с помощью ключа env в файле рабочего процесса. Область настраиваемой переменной, заданной этим методом, ограничена элементом, в котором он определен. Можно определить переменные, для которых задана область:
- Весь поток работы, используя
envна верхнем уровне файла рабочего процесса. - Содержимое задания в рабочем процессе, используя
jobs.<job_id>.env. - Конкретный шаг в задании с помощью
jobs.<job_id>.steps[*].env.
Заметка
Оба jobs.<job_id>.env и jobs.<job_id>.steps[*].env реализуют контексты, которые рассматриваются далее в этом модуле.
В следующем примере рабочего процесса реализованы две переменные, DAY_OF_WEEK и Greeting для создания приветствия при запуске.
name: Greeting on variable day
on:
workflow_dispatch
env:
DAY_OF_WEEK: Monday
jobs:
greeting_job:
runs-on: ubuntu-latest
env:
Greeting: Hello
steps:
- name: "Say Hello"
run: echo "$Greeting, today is $DAY_OF_WEEK!"
Соглашения об именовании переменных среды
При установке переменной среды нельзя использовать ни одно из имен переменных среды по умолчанию. Если вы пытаетесь переопределить значение одной из этих переменных по умолчанию, назначение игнорируется.
Совет
Полный список переменных среды по умолчанию см. в переменных среды по умолчанию.
Создание переменных конфигурации для репозитория
Чтобы создать секреты или переменные в GitHub для репозитория личных учетных записей, необходимо быть владельцем репозитория. Чтобы создать секреты или переменные на GitHub для репозитория организации, необходимо иметь доступ уровня admin. Наконец, чтобы создать секреты или переменные для репозитория личных учетных записей или репозитория организации через REST API, необходимо иметь доступ к участникам совместной работы.
Приоритет переменных конфигурации
Если переменная с одинаковым именем существует на нескольких уровнях, переменная на самом низком уровне имеет приоритет. Например, если переменная уровня организации имеет то же имя, что и переменная уровня репозитория, то переменная уровня репозитория имеет приоритет. Аналогичным образом, если у организации, репозитория и среды есть переменная с одинаковым именем, переменная уровня среды имеет приоритет.
Добавление скриптов в рабочий процесс
Рабочий процесс GitHub Actions можно использовать для выполнения скриптов и команд оболочки, которые затем выполняются на назначенном средстве выполнения. В следующем примере показано, как использовать ключевое слово run для выполнения команды npm install -g bats на исполнителе.
jobs:
example-job:
runs-on: ubuntu-latest
steps:
- run: npm install -g bats
Чтобы запустить скрипт, хранящийся в репозитории, необходимо сначала извлечь репозиторий в средство выполнения. Следующий пример: проверка репозитория; задает рабочий каталог — расположение скриптов в репозитории; и запускает скрипт my-script.sh.
jobs:
example-job:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./scripts
steps:
- name: Check out the repository to the runner
uses: actions/checkout@v4
- name: Run a script
run: ./my-script.sh
Все скрипты, которые требуется выполнить задание рабочего процесса, должны быть исполняемыми. Скрипт можно передать в качестве аргумента интерпретатору, который запускает скрипт, например, run: bash script.sh или путем создания самого исполняемого файла.