---
metadata:
  - name: generator
    content: Diplodoc Platform v5.57.3
alternate:
  - https://sourcecraft.dev/portal/docs/en/sourcecraft/operations/variables.md
  - https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/variables.md
  - href: https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/variables.md
    type: text/markdown
    title: Markdown version
  - href: https://sourcecraft.dev/portal/docs/ru/llms.txt
    type: text/markdown
    title: llms.txt
title: Работа с переменными окружения в SourceCraft
description: Инструкция по использованию переменных окружения в CI/CD-процессах SourceCraft для настройки задач и кубиков.
---
> **Documentation Index:** Fetch the complete configuration index at https://sourcecraft.dev/portal/docs/ru/llms.txt


# Работа с переменными окружения в SourceCraft

<!-- source: ru/_includes/sourcecraft/configuration-tip.md -->
{% note tip %}

Настройка и просмотр конфигураций репозитория доступны в интерфейсе SourceCraft в разделе ![image](../../_assets/console-icons/gear.svg) **Настройки репозитория** в секции ![image](../../_assets/console-icons/nut-hex.svg) **Конфигурации**. Подробнее в инструкции [Настроить конфигурации репозитория в виде кода](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/configuration-edit.md).

{% endnote %}
<!-- endsource: ru/_includes/sourcecraft/configuration-tip.md -->

<!-- source: ru/_includes/sourcecraft/ci-cd/ci-variables-description.md -->
В CI/CD-процессах SourceCraft поддерживаются переменные окружения. Доступны следующие области видимости переменных:
* Глобальная — переменные будут переданы во все кубики всех заданий во всех рабочих процессах.
* [Рабочий процесс](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md#workflows) — переменные будут переданы во все кубики всех заданий конкретного рабочего процесса.
* [Задание](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md#tasks) — переменные будут переданы во все связанные с заданием кубики.
* [Кубик](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md#cubes) — переменные будут переданы только в конкретный кубик.

Переменные можно переиспользовать во вложенных областях видимости.

Также вы можете использовать [предопределенные переменные окружения](https://sourcecraft.dev/portal/docs/ru/sourcecraft/ci-cd-ref/predefined-variables.md).

{% note warning %}

Не храните в переменных окружения конфиденциальные данные, например пароли, ключи доступа, токены и т. д. Для хранения таких данных используйте [секреты](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#secrets).

{% endnote %}
<!-- endsource: ru/_includes/sourcecraft/ci-cd/ci-variables-description.md -->

Чтобы использовать переменные окружения в CI/CD-процессах:

1. [Настройте](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/ci-cd.md) CI/CD в репозитории.
1. В конфигурационном файле `.sourcecraft/ci.yaml` в блоки с заданием (`tasks`) или кубиком (`cubes`) добавьте переменные окружения, например:

    <!-- source: ru/_includes/sourcecraft/ci-cd/config-with-vars.md -->
    ```yaml
    # Здесь определяются переменные с глобальной областью видимости,
    # они будут переданы во все кубики всех заданий во всех рабочих процессах
    env:
      GLOBAL_VAR: global_var
      GLOBAL_SECRET: ${{ secrets.<название_секрета> }}

    workflows:
      my-workflow:
        # Здесь определяются переменные, которые будут доступны во всех кубиках 
        # всех заданий рабочего процесса my-workflow
        env:
          WORKFLOW_VAR: workflow-var
        
        tasks:
          - name: my-task
            # Здесь определяются переменные, которые будут доступны во всех кубиках 
            # внутри задания my-task
            env:
              TASK_ENV_VAR: This variable is available in all cubes of this task.
              # Многострочная переменная
              MULTILINE_VAR: |
                multi-var
                multi-var
                this is my multi-var
            
            cubes:
              - name: my-cube-1
                # Здесь определяются переменные, которые будут доступны только внутри
                # кубика my-cube-1
                env:
                  CUBE_ENV_VAR: This variable is available only in cube my-cube-1.
                  # Переменная, значение которой задается из секрета
                  SECRET_VAR: ${{ secrets.<название_секрета> }}
                  # Переиспользование переменных из глобальной области видимости, 
                  # например GLOBAL_VAR и GLOBAL_SECRET
                  LOCAL_VAR: ${{ env.<глобальная_переменная_1> }}
                  LOCAL_SECRET: ${{ env.<глобальная_переменная_2> }}
                  # Переиспользование переменных из области видимости рабочего
                  # процесса, например WORKFLOW_VAR
                  LOCAL_VAR2: ${{ env.<переменная_рабочего_процесса> }}

                script:
                  - echo "$TASK_ENV_VAR"
                  - echo "$MULTILINE_VAR"
                  - echo "$CUBE_ENV_VAR"
                  - echo "$SECRET_VAR"
                  - echo "$WORKFLOW_VAR"
                  - echo "$LOCAL_VAR"
                  - echo "$LOCAL_VAR2"
                  - echo "$LOCAL_SECRET"

              - name: my-cube-2
                # Здесь определяются переменные, которые будут доступны только внутри 
                # кубика my-cube-2
                env:
                  CUBE_ENV_VAR: This variable is available only in cube my-cube-2.
                script:
                  - echo "$TASK_ENV_VAR"
                  - echo "$CUBE_ENV_VAR"
                  # Использование предопределенной переменной
                  - echo "$SOURCECRAFT_TASK"
                  - echo "$WORKFLOW_VAR"
                  - echo "$GLOBAL_VAR"

          - name: my-task-2
            cubes:
              - name: my-cube-3
                script:
                  - echo "$WORKFLOW_VAR"
                  - echo "$GLOBAL_VAR"
    ```
    <!-- endsource: ru/_includes/sourcecraft/ci-cd/config-with-vars.md -->

1. Отправьте изменения в удаленный репозиторий.
1. [Проверьте](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/ci-cd.md#check-ci-cd) выполнение CI/CD-процесса.

#### Полезные ссылки {#see-also}

* [Непрерывная интеграция и непрерывное развертывание в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md)
* [Настроить CI/CD в репозитории SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/ci-cd.md)
* [Управлять секретами в репозитории SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/secrets.md)
* [Справочник CI/CD](https://sourcecraft.dev/portal/docs/ru/sourcecraft/ci-cd-ref/index.md)
