С помощью секретов вы можете хранить в репозитории в зашифрованном виде конфиденциальные данные, например пароли, ключи доступа, токены и т. д.
Секрет представляет собой пару «ключ-значение», где ключ — название секрета, а значение — конфиденциальные данные.
Поддерживаются секреты двух типов:
SourceCraft — обычный секрет типа «ключ-значение», который хранится в самом сервисе.
Lockbox — ссылка на секрет в Yandex Lockbox. Сам секрет хранится в Yandex Cloud, а SourceCraft обращается к нему через сервисное подключение. При обращении используется последняя актуальная версия секрета.
Значения секретов можно использовать в CI/CD-процессах репозитория. Для этого в конфигурационном файле .sourcecraft/ci.yaml укажите секрет в формате ${{ secrets.<название_секрета> }}.
Совет
Для секрета типа Lockbox дополнительно укажите ключ из секрета Yandex Lockbox в формате ${{ secrets.<название_секрета>#<ключ> }}. Подробнее на странице Настроить интеграцию с Yandex Lockbox в SourceCraft.
Пример
В примере представлен конфигурационный файл .sourcecraft/ci.yaml для CI/CD-процесса, который запускается при создании предложения изменений в ветку master и выполняет следующее:
# Для работы данного CI/CD создайте следующие ресурсы в Yandex Cloud:# • Реестр Yandex Container Registry# • Контейнер Yandex Serverless Containers# • Сервисный аккаунт с ролями serverless-containers.editor, # container-registry.images.pusher и iam.serviceAccounts.user# • Авторизованный ключ для доступа к Container Registry и Serverless Containerson:pull_request:-workflows:ci-cd-container-registry-serverlessfilter:source_branches: ["**", "!test**"]
target_branches:"master"workflows:ci-cd-container-registry-serverless:tasks:-build-push-deploy-serverlesstasks:-name:build-push-deploy-serverlessenv: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-ycscript:-curl-o./yc-install.sh-Lhttps://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-ycconfigprofilecreatesa-profile-ycconfigsetservice-account-keykey.json-ycconfigsetformatjson-ycconfigsetfolder-id$YC_FOLDER_ID-name:docker-loginscript:-yccontainerregistryconfigure-docker--profilesa-profile-name:docker-build-pushscript:-dockerbuild--tag$YC_DOCKER_REGISTRY_URI/$IMAGE_NAME--platformlinux/amd64.-dockerpush$YC_DOCKER_REGISTRY_URI/$IMAGE_NAME:latest-name:docker-logoutscript:-dockerlogout$YC_DOCKER_REGISTRY_URI-name:create-serverlessscript:-ycserverlesscontainerrevisiondeploy--container-name$YC_SERVERLESS_CONTAINER_NAME--image$YC_DOCKER_REGISTRY_URI/$IMAGE_NAME:latest--service-account-id$YC_SERVICE_ACCOUNT_ID