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

С помощью секретов вы можете хранить в репозитории в зашифрованном виде конфиденциальные данные, например пароли, ключи доступа, токены и т. д.

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

Создать секрет

  1. Откройте главную страницу SourceCraft.
  2. На вкладке Домой перейдите в раздел Репозитории.
  3. Выберите репозиторий, в котором хотите создать секрет.
  4. На странице репозитория в разделе Настройки репозитория перейдите в секцию Секреты.
  5. На странице с секретами:
    • Если у вас еще нет ни одного секрета, нажмите Новый секрет.
    • Если у вас уже есть секреты, в правом верхнем углу нажмите Добавить секрет.
  6. В открывшемся окне:
    • В поле Название введите название секрета.
    • В поле Секрет введите значение секрета.
  7. Нажмите Добавить секрет.

Использовать значение секрета в CI/CD

Значения секретов можно использовать в CI/CD-процессах репозитория. Для этого в конфигурационном файле .sourcecraft/ci.yaml укажите секрет в формате ${{ secrets.<название_секрета> }}.

Пример

В примере представлен конфигурационный файл .sourcecraft/ci.yaml для CI/CD-процесса, который запускается при создании пул-реквеста в ветку master и выполняет следующее:

  1. Устанавливает Yandex Cloud CLI и аутентифицируется от имени сервисного аккаунта с помощью авторизованного ключа, хранящегося в секрете.
  2. Аутентифицируется в Yandex Container Registry из docker с помощью Docker credential helper.
  3. Собирает Docker-образ из файла Dockerfile и отправляет его в реестр Container Registry.
  4. Разворачивает контейнер в Yandex Serverless Containers из собранного Docker-образа.
# Для работы данного 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
        

Подробнее см. в репозитории SourceCraft yc-ci-cd-serverless.

Посмотреть секрет в интерфейсе SourceCraft

  1. Откройте главную страницу SourceCraft.
  2. На вкладке Домой перейдите в раздел Репозитории.
  3. Выберите репозиторий, в котором хотите посмотреть секрет.
  4. На странице репозитория в разделе Настройки репозитория перейдите в секцию Секреты.
  5. Напротив секрета, значение которого вы хотите посмотреть, нажмите и выберите Редактировать.
  6. Скопируйте значение секрета.

Изменить секрет

  1. Откройте главную страницу SourceCraft.
  2. На вкладке Домой перейдите в раздел Репозитории.
  3. Выберите репозиторий, в котором хотите изменить секрет.
  4. На странице репозитория в разделе Настройки репозитория перейдите в секцию Секреты.
  5. Напротив секрета, значение которого вы хотите изменить, нажмите и выберите Редактировать.
  6. В поле Секрет введите новое значение секрета.
  7. Нажмите Сохранить.

Удалить секрет

  1. Откройте главную страницу SourceCraft.
  2. На вкладке Домой перейдите в раздел Репозитории.
  3. Выберите репозиторий, в котором хотите удалить секрет.
  4. На странице репозитория в разделе Настройки репозитория перейдите в секцию Секреты.
  5. Напротив секрета, который вы хотите удалить, нажмите и выберите Удалить секрет.
  6. В открывшемся окне нажмите Да, точно удалить секрет.

См. также