---
metadata:
  - name: generator
    content: Diplodoc Platform v5.54.2
alternate:
  - https://sourcecraft.dev/portal/docs/en/sourcecraft/ci-cd-ref/env-vars-between-cubes.md
  - https://sourcecraft.dev/portal/docs/ru/sourcecraft/ci-cd-ref/env-vars-between-cubes.md
  - href: ru/sourcecraft/ci-cd-ref/env-vars-between-cubes.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://sourcecraft.dev/portal/docs/ru/llms.txt

# Передача переменных окружения от одного кубика к другому

В [CI/CD](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md) SourceCraft вы можете передавать переменные окружения от одного кубика к другому с помощью специальных [предопределенных](https://sourcecraft.dev/portal/docs/ru/sourcecraft/ci-cd-ref/predefined-variables.md) переменных окружения [SOURCECRAFT_ENV](#env) и [SOURCECRAFT_OUTPUT](#output).


## SOURCECRAFT_ENV {#env}

Переменная, с помощью которой передаются переменные окружения от одного кубика к последующим в виде пар `KEY=VALUE`. Для записи в переменную используется оператор перенаправления ввода `>>`.

Значения, записанные в `SOURCECRAFT_ENV` в одном кубике, передаются последующим кубикам в рамках того же задания.


### Пример передачи однострочных значений в SOURCECRAFT_ENV {#env-single-line}

```yaml
on:
  push:
    - workflows: [ env-single-line ]

workflows:
  env-single-line:
    tasks:
      - name: env-single-line-task
        cubes:
          - name: input
            script:
              - echo "VER=1.0.1" >> $SOURCECRAFT_ENV  # Запись в переменную
              - echo "VAR1=SOME_VALUE" >> $SOURCECRAFT_ENV  # Запись в переменную
          - name: use-env
            script:
              - echo $VER  # Вывод переменной
              - echo $VAR1  # Вывод переменной
```


### Пример передачи многострочных значений в SOURCECRAFT_ENV {#env-multi-line}

```yaml
on:
  push:
    - workflows: [ env-multi-line ]

workflows:
  env-multi-line:
    tasks:
      - name: env-multi-line-task
        cubes:
          - name: input
            script:  # Запись многострочного значения в переменную
              - |
                echo "my_var_multiline<<EOF
                line1
                line2
                EOF" >> $SOURCECRAFT_ENV
          - name: use-env
            script:
              - echo $my_var_multiline # Вывод переменной
```


## SOURCECRAFT_OUTPUT {#output}

Переменная, с помощью которой от одного кубика к другому передаются пары `KEY=VALUE` через блок `outputs`. Для записи в переменную используется оператор перенаправления ввода `>>`.

Значения, записанные в `SOURCECRAFT_OUTPUT` в одном кубике, становятся доступными для последующих кубиков в рамках того же задания. Чтобы использовать переданное значение, в последующем кубике нужно обратиться к нему через специальный синтаксис: `${{ cubes.<имя_исходного_кубика>.outputs.<ключ> }}`.


### Пример передачи однострочных значений в SOURCECRAFT_OUTPUT {#output-single-line}

```yaml
on:
  push:
    - workflows: [ output-single-line ]

workflows:
  output-single-line:
    tasks:
      - name: output-single-line-task
        cubes:
          - name: inputcube
            script:
              - echo "outputvar=my-value" >> $SOURCECRAFT_OUTPUT  # Запись в переменную
          - name: outputcube
            env:
              MY_ENV: "${{ cubes.inputcube.outputs.outputvar }}"  # Получение значения
```


### Пример передачи многострочных значений в SOURCECRAFT_OUTPUT {#output-multi-line}

```yaml
on:
  push:
    - workflows: [ output-multi-line ]

workflows:
  output-multi-line:
    tasks:
      - name: output-multi-line-task
        cubes:
          - name: inputcube
            script:  # Запись многострочного значения в переменную
              - |
                echo "outputvar<<EOF
                line3
                line4
                EOF" >> $SOURCECRAFT_OUTPUT
          - name: outputcube
            env:
              MY_ENV: "${{ cubes.inputcube.outputs.outputvar }}"  # Получение значения
```