Интеграция с S3

S3 или Simple Storage Service — сервис, где хранятся цифровые данные большого объема. Работает по одноименному протоколу. Описание S3 на cloud.yandex.ru.

Для настройки S3 вам потребуются следующие данные, в качестве примера я буду использовать данные с cloud.yandex.ru:

Название Описание Параметр
Endpoint S3 Для cloud.yandex этот параметр равен https://storage.yandexcloud.net gitflic.object-storage.connection.endpoint=https://storage.yandexcloud.net
Регион Для cloud.yandex этот параметр равен https://storage.yandexcloud.net gitflic.object-storage.connection.region=ru-central1
Bucket Здесь описан процесс создания bucket gitflic.object-storage.default-bucket=yourNAMEbucket
Идентификатор ключа, Секретный ключ Здесь указываем два параметра статического ключа доступа. В яндексе они создаются для сервисного аккаунта. Идентификатор ключа - это awsAccessKeyId. awsSecretAccessKey - Ваш секретный ключ. gitflic.object-storage.connection.awsAccessKeyId=yourkeyid gitflic.object-storage.connection.awsSecretAccessKey=yourkey

Для подключения файлового хранилища S3 необходимо заполнить и добавить следующие параметры в application.properties с которым вы запускаете бинарный файл gitflic.

# Активация работы с хранилищем S3
gitflic.object-storage.enabled=true

# Данные для подключения к S3.
# Указываем регион. Для cloud.yandex он равен ru-central1
gitflic.object-storage.connection.region=ru-central1
# Название Bucket по умолчанию.
gitflic.object-storage.default-bucket=YourBucketName
# Указываем endpoint, если его не указывать, то будет использоваться параметр http://localhost:4566/
gitflic.object-storage.connection.endpoint=https://storage.yandexcloud.net
# Здесь указываем два параметра статического ключа доступа. В яндексе они создаются для сервисного аккаунта. Идентификатор ключа - это awsAccessKeyId. awsSecretAccessKey - Ваш секретный ключ.
gitflic.object-storage.connection.awsAccessKeyId=YorAccessKeyId
gitflic.object-storage.connection.awsSecretAccessKey=YorSecretAccessKeyKey

# Ниже указываются данные которые необходимо хранить в хранилище S3. Если у вас до этого было настроено локальное хранилище данных, то все старые данные останутся на предыдущем месте.

# Хранить пакеты в S3
gitflic.object-storage.objects.packages.enabled=true
gitflic.object-storage.objects.packages.provider=s3
# Опционально, если не указать, то все данные будут складываться в Bucket определенном в gitflic.object-storage.default-bucket параметре
#gitflic.object-storage.objects.packages.bucket=packages-bucket


# Хранить релизы в S3
gitflic.object-storage.objects.uploads.enabled=true
gitflic.object-storage.objects.uploads.provider=s3
# Опционально, если не указать, то все данные будут складываться в Bucket определенном в gitflic.object-storage.default-bucket параметре
#gitflic.object-storage.objects.uploads.bucket=packages-bucket

# Хранить артефакты ci/cd в S3. 
gitflic.object-storage.objects.artifacts.enabled=true
gitflic.object-storage.objects.artifacts.provider=s3
# Опционально, если не указать, то все данные будут складываться в Bucket определенном в gitflic.object-storage.default-bucket параметре
#gitflic.object-storage.objects.artifacts.bucket=packages-bucket

# Хранить файл lfs в S3
gitflic.object-storage.objects.lfs.enabled=true
gitflic.object-storage.objects.lfs.provider=s3
# Опционально, если не указать, то все данные будут складываться в Bucket определенном в gitflic.object-storage.default-bucket параметре
#gitflic.object-storage.objects.lfs.bucket=packages-bucket

Перенос данных в S3

Начиная с версии 3.0.0 вместе со сборкой поставляется cli.jar и gitflic-cli.sh для запуска.

Для того чтобы перенести данные, которые ранее хранились на файловой системе, в S3 хранилище нужно:

  1. Настроить application.properties параметры для работы с S3
  2. Запустить скрипт gitflic-cli.sh <путь до application.properties>. Например, gitflic-cli.sh /user/admin/gitflic/default-config/application.properties
  3. Дожидаемся запуска.
  4. Команда для миграции пакетов реестра в S3: s3 migrate-to packages
  5. Команда для миграции файлов релиза в S3: s3 migrate-to releases
  6. Команда для миграции LFS-файлов проекта в S3: s3 migrate-to lfs