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

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

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

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

  1. Откройте главную страницу SourceCraft.
  2. На вкладке Home перейдите в раздел Repositories.
  3. Выберите репозиторий, в котором хотите создать секрет.
  4. На странице репозитория в разделе Repository settings перейдите в секцию Secrets.
  5. На странице с секретами:
    • Если у вас еще нет ни одного секрета, нажмите New secret.
    • Если у вас уже есть секреты, в правом верхнем углу нажмите Add secret.
  6. В открывшемся окне:
    • В поле Name введите название секрета.
    • В поле Secret введите значение секрета.
  7. Нажмите Add secret.

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

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

Пример

В примере представлен конфигурационный файл .src.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:
  #push:
  #  - workflows: ci-cd-container-registry-serverless
  #    filter:
  #      branches: ["master"]
  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. На вкладке Home перейдите в раздел Repositories.
  3. Выберите репозиторий, в котором хотите посмотреть секрет.
  4. На странице репозитория в разделе Repository settings перейдите в секцию Secrets.
  5. Напротив секрета, значение которого вы хотите посмотреть, нажмите и выберите Edit.
  6. Скопируйте значение секрета.

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

  1. Откройте главную страницу SourceCraft.
  2. На вкладке Home перейдите в раздел Repositories.
  3. Выберите репозиторий, в котором хотите изменить секрет.
  4. На странице репозитория в разделе Repository settings перейдите в секцию Secrets.
  5. Напротив секрета, значение которого вы хотите изменить, нажмите и выберите Edit.
  6. В поле Secret введите новое значение секрета.
  7. Нажмите Save.

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

  1. Откройте главную страницу SourceCraft.
  2. На вкладке Home перейдите в раздел Repositories.
  3. Выберите репозиторий, в котором хотите удалить секрет.
  4. На странице репозитория в разделе Repository settings перейдите в секцию Secrets.
  5. Напротив секрета, который вы хотите удалить, нажмите и выберите Delete secret.
  6. В открывшемся окне нажмите I understand, delete secret.

См. также