Контекст GitVerse

Контекст — это набор данных, описывающих текущее состояние системы во время выполнения workflow. С его помощью можно получать значения переменных, статусов, имён веток, пользователей, событий и многое другое.

Что такое контекст

Контекст — это встроенная структура данных, доступная в каждом шаге workflow. Она позволяет обращаться к информации о:

  • текущем репозитории, коммите, ветке;
  • джобах и шагаx (их статусах, результатах);
  • пользователе, событии-триггере, секретах и переменных;
  • среде выполнения (runner, ОС, архитектура, путь и т.д.).

Контексты делают workflow динамичным — вы можете подставлять значения в runtime, не захардкоживая их в YAML.


Пример использования

Контексты вызываются через синтаксис ${{ ... }} и доступны во всех выражениях (if:, run:, env: и т.д.).

name: Простой пример использования контекста
 
on: [push]
 
jobs:
  show-context:
    runs-on: ubuntu-latest
    steps:
      - name: Выведем ветку и инициатора пуша
        run: echo "Commit by ${{ gitverse.actor }} on branch ${{ gitverse.ref_name }}"
КонтекстОписаниеПример обращения
gitverseИнформация о событии, репозитории и.т.д${{ gitverse.repository }}
githubТо же самое что и gitverse, для собратной совместимости${{ github.repository }}
envПеременные окружения${{ env.MY_VAR }}
jobДанные о текущей job в workflow${{ job.build.result }}
jobsДанные о всех job в workflow${{ jobs.build.result }}
runnerСведения о среде выполнения (ОС, архитектура)${{ runner.os }}
secretsСекреты, заданные в настройках репозитория${{ secrets.TOKEN }}
strategyДанные о matrix-сборке${{ strategy.job-index }}
matrixТекущие значения matrix-параметров${{ matrix.python-version }}
stepsРезультаты предыдущих шагов${{ steps.test.outputs.coverage }}
inputsВходные параметры для workflow_call${{ inputs.name }}
varsПеременные, заданные на уровне репозитория или организации${{ vars.ENVIRONMENT }}

Пример с условиями

steps:
  - name: Деплоить только из ветки main
    if: ${{ gitverse.ref_name == 'master' && gitverse.event_name == 'push' }}
    run: echo "Deploying to production..."
  - name: Печатаем env контекст
    run: echo '${{ toJson(env) }}