---
metadata:
  - name: generator
    content: Diplodoc Platform v5.57.3
alternate:
  - https://sourcecraft.dev/portal/docs/en/sourcecraft/operations/secrets.md
  - https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/secrets.md
  - href: https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/secrets.md
    type: text/markdown
    title: Markdown version
  - href: https://sourcecraft.dev/portal/docs/ru/llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://sourcecraft.dev/portal/docs/ru/llms.txt

# Управлять секретами в репозитории SourceCraft

<!-- source: ru/_includes/sourcecraft/secrets-description.md -->
С помощью _секретов_ вы можете хранить в репозитории в зашифрованном виде конфиденциальные данные, например пароли, ключи доступа, токены и т. д.

Секрет представляет собой пару «ключ-значение», где ключ — название секрета, а значение — конфиденциальные данные.

Поддерживаются секреты двух типов:
* SourceCraft — обычный секрет типа «ключ-значение», который хранится в самом сервисе.
* Lockbox — ссылка на секрет в [Yandex Lockbox](https://yandex.cloud/ru/docs/lockbox/). Сам секрет хранится в Yandex Cloud, а SourceCraft обращается к нему через [сервисное подключение](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/service-connections.md). При обращении используется последняя актуальная [версия](https://yandex.cloud/ru/docs/lockbox/concepts/secret#version) секрета.
<!-- endsource: ru/_includes/sourcecraft/secrets-description.md -->

Подробнее читайте в подразделе [Секреты](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#secrets).

{% note tip %}

<!-- source: ru/_includes/sourcecraft/service-connection-note.md -->
В SourceCraft реализована безопасная аутентификация изнутри процессов [CI/CD](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md) в [API](https://yandex.cloud/ru/docs/api-design-guide/concepts/general) Yandex Cloud с помощью [сервисных подключений](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/service-connections.md).
<!-- endsource: ru/_includes/sourcecraft/service-connection-note.md -->

{% endnote %}

## Создать секрет {#create-secret}

1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий, в котором хотите создать секрет.
1. На странице репозитория в разделе ![image](../../_assets/console-icons/gear.svg) **Настройки репозитория** перейдите в секцию ![image](../../_assets/console-icons/vault.svg) **Секреты**.
1. На странице с секретами нажмите ![image](../../_assets/console-icons/plus.svg) **Новый секрет**.
1. В открывшемся окне:
    * В поле **Тип секрета** оставьте значение **SourceCraft**.

      {% note tip %}

      Чтобы создать секрет, который ссылается на секрет в Yandex Lockbox, выберите тип **Lockbox**. Подробнее о таких секретах на странице [Настроить интеграцию с Yandex Lockbox в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/lockbox-integration.md).

      {% endnote %}

    * В поле **Название** введите название секрета.
    * В поле **Значение** введите значение секрета.
1. Нажмите **Новый секрет**.

## Использовать значение секрета в CI/CD {#use-secret-in-ci-cd}

<!-- source: ru/_includes/sourcecraft/secrets-in-ci-cd.md -->
Значения секретов можно использовать в [CI/CD-процессах](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md) репозитория. Для этого в конфигурационном файле `.sourcecraft/ci.yaml` укажите секрет в формате `${{ secrets.<название_секрета> }}`.
<!-- endsource: ru/_includes/sourcecraft/secrets-in-ci-cd.md -->

{% note tip %}

Для секрета типа Lockbox дополнительно укажите ключ из секрета Yandex Lockbox в формате `${{ secrets.<название_секрета>#<ключ> }}`. Подробнее на странице [Настроить интеграцию с Yandex Lockbox в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/lockbox-integration.md).

{% endnote %}

### Пример {#example-secret-in-ci-cd}

В примере представлен конфигурационный файл `.sourcecraft/ci.yaml` для CI/CD-процесса, который запускается при создании предложения изменений в ветку `master` и выполняет следующее:
1. Устанавливает [Yandex Cloud CLI](https://yandex.cloud/ru/docs/cli/) и аутентифицируется от имени [сервисного аккаунта](https://yandex.cloud/ru/docs/iam/concepts/users/service-accounts) с помощью [авторизованного ключа](https://yandex.cloud/ru/docs/iam/concepts/authorization/key), хранящегося в секрете.
1. Аутентифицируется в [Yandex Container Registry](https://yandex.cloud/ru/docs/container-registry/) из `docker` с помощью [Docker credential helper](https://yandex.cloud/ru/docs/container-registry/operations/authentication#cred-helper).
1. Собирает Docker-образ из файла `Dockerfile` и отправляет его в реестр Container Registry.
1. Разворачивает контейнер в [Yandex Serverless Containers](https://yandex.cloud/ru/docs/serverless-containers/) из собранного Docker-образа.

<!-- source: ru/_includes/sourcecraft/yc-ci-cd-serverless-ci-example.md -->
```yaml
# Для работы данного CI/CD создайте следующие ресурсы в Yandex Cloud:
# • Реестр Yandex Container Registry
# • Контейнер Yandex Serverless Containers
# • Сервисный аккаунт с ролями serverless-containers.editor, 
#   container-registry.images.pusher и iam.serviceAccounts.user
# • Авторизованный ключ для доступа к Container Registry и Serverless Containers

on:
  pull_request:
    - workflows: ci-cd-container-registry-serverless
      filter:
        source_branches: ["**", "!test**"]
        target_branches: "master"

workflows:
  ci-cd-container-registry-serverless:
    tasks:
      - build-push-deploy-serverless
        
tasks:
  - name: build-push-deploy-serverless
    env:
      YC_DOCKER_REGISTRY_URI: cr.yandex/<идентификатор_реестра>
      IMAGE_NAME: <имя_образа>
      YC_SERVERLESS_CONTAINER_NAME: <имя_контейнера>
      YC_SERVICE_ACCOUNT_ID: <идентификатор_сервисного_аккаунта>
      YC_AUTHORIZED_KEY_JSON: ${{ secrets.<название_секрета> }}
      YC_FOLDER_ID: <идентификатор_каталога>
    cubes:
      - name: install-yc
        script:
          - curl -o ./yc-install.sh -L https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash -s -- -a
          - echo 'source /root/yandex-cloud/completion.zsh.inc' >>  ~/.zshrc
          - chmod +x ./yc-install.sh && ./yc-install.sh -i /tmp/yc -n && mv /tmp/yc/bin/yc /usr/bin/yc
          - echo "$YC_AUTHORIZED_KEY_JSON" > key.json
          - yc config profile create sa-profile
          - yc config set service-account-key key.json
          - yc config set format json
          - yc config set folder-id $YC_FOLDER_ID
      
      - name: docker-login
        script:
          - yc container registry configure-docker --profile sa-profile

      - name: docker-build-push
        script:
          - docker build --tag $YC_DOCKER_REGISTRY_URI/$IMAGE_NAME --platform linux/amd64 .
          - docker push $YC_DOCKER_REGISTRY_URI/$IMAGE_NAME:latest
    
      - name: docker-logout
        script:
          - docker logout $YC_DOCKER_REGISTRY_URI

      - name: create-serverless
        script:
          - yc serverless container revision deploy  --container-name $YC_SERVERLESS_CONTAINER_NAME --image $YC_DOCKER_REGISTRY_URI/$IMAGE_NAME:latest --service-account-id $YC_SERVICE_ACCOUNT_ID
```
<!-- endsource: ru/_includes/sourcecraft/yc-ci-cd-serverless-ci-example.md -->

Подробнее в репозитории SourceCraft [yc-ci-cd-serverless](https://sourcecraft.dev/sourcecraft/yc-ci-cd-serverless/).

## Посмотреть секрет в интерфейсе SourceCraft {#get-secret}

1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий, в котором хотите посмотреть секрет.
1. На странице репозитория в разделе ![image](../../_assets/console-icons/gear.svg) **Настройки репозитория** перейдите в секцию ![image](../../_assets/console-icons/vault.svg) **Секреты**.
1. Напротив секрета, значение которого вы хотите посмотреть, нажмите ![image](../../_assets/console-icons/ellipsis.svg).
1. Скопируйте значение секрета.

## Изменить секрет {#edit-secret}

1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий, в котором хотите изменить секрет.
1. На странице репозитория в разделе ![image](../../_assets/console-icons/gear.svg) **Настройки репозитория** перейдите в секцию ![image](../../_assets/console-icons/vault.svg) **Секреты**.
1. Напротив секрета, значение которого вы хотите изменить, нажмите ![image](../../_assets/console-icons/ellipsis.svg).
1. В поле **Значение** введите новое значение секрета.
1. Нажмите **Изменить**.

## Удалить секрет {#delete-secret}

1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий, в котором хотите удалить секрет.
1. На странице репозитория в разделе ![image](../../_assets/console-icons/gear.svg) **Настройки репозитория** перейдите в секцию ![image](../../_assets/console-icons/vault.svg) **Секреты**.
1. Выберите секрет, который вы хотите удалить, и внизу нажмите **Удалить {name}**.
1. В открывшемся окне нажмите **Удалить {name}**.

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

* [Настроить интеграцию с Yandex Lockbox в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/lockbox-integration.md)
* [Секреты](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#secrets)
* [Настроить CI/CD в репозитории SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/ci-cd.md)
