Перейти к содержанию

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


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

Конфигурация S3

В качеcтве примера используется S3 на cloud.yandex.ru

Для настройки интеграции потребуются следующие данные:

Параметр Описание Значение на cloud.yandex.ru Параметр в application.properties
Endpoint S3 Хост хранилища Object Storage https://storage.yandexcloud.net/ gitflic.object-storage.connection.endpoint
Регион Регион, в котором находится бакет S3 ru-central1 gitflic.object-storage.connection.region
Бакет Имя контейнера для хранения файлов Уникальное название созданного бакета gitflic.object-storage.default-bucket
Идентификатор статического ключа доступа Вместе с секретным ключом идентификатор используется для аутентификации в Object Storage Получить идентификатор ключа можно после его создания для сервисного аккаунта gitflic.object-storage.connection.awsAccessKeyId
Секретный статический ключ доступа Часть ключа доступа, который используется для аутентификации в сервисе Object Storage Получить секретный ключ можно после его создания для сервисного аккаунта gitflic.object-storage.connection.awsSecretAccessKey

Настройка application.properties

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

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

# Данные для подключения к S3.

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

# Данные, которые необходимо хранить в хранилище S3. Все старые данные, для которых было настроено локальное хранилище на файловой системе до подключения s3, останутся на предыдущем месте

# Хранить пакеты в S3
gitflic.object-storage.objects.packages.enabled=true
gitflic.object-storage.objects.packages.provider=s3
# Имя бакета, в котором будут храниться пакеты. Необязательный параметр. Если не указан, то все пакеты будут храниться в бакете по умолчанию, который указан в gitflic.object-storage.default-bucket
#gitflic.object-storage.objects.packages.bucket=kos-name-packages-bucket

# Хранить релизы и картинки в S3
gitflic.object-storage.objects.uploads.enabled=true
gitflic.object-storage.objects.uploads.provider=s3
# Имя бакета, в котором будут храниться релизы и картинки. Необязательный параметр. Если не указан, то все релизы и картинки будут храниться в бакете по умолчанию, который указан в gitflic.object-storage.default-bucket
#gitflic.object-storage.objects.uploads.bucket=name-uploads-bucket

# Хранить артефакты ci/cd в S3.
gitflic.object-storage.objects.artifacts.enabled=true
gitflic.object-storage.objects.artifacts.provider=s3
# Имя бакета, в котором будут храниться артефакты ci/cd. Необязательный параметр. Если не указан, то все артефакты ci/cd будут храниться в бакете по умолчанию, который указан в gitflic.object-storage.default-bucket
#gitflic.object-storage.objects.artifacts.bucket=name-artifacts-bucket

# Хранить LFS-файлы в S3
gitflic.object-storage.objects.lfs.enabled=true
gitflic.object-storage.objects.lfs.provider=s3
# Имя бакета, в котором будут храниться LFS-файлы. Необязательный параметр. Если не указан, то все LFS-файлы будут храниться в бакете по умолчанию, который указан в gitflic.object-storage.default-bucket
#gitflic.object-storage.objects.lfs.bucket=name-lfs-bucket

Перенос данных с файловой системы в S3

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

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

Предварительные условия

Перед осуществлением переноса необходимо убедиться в том что:

  1. В конфигурационный файл GitFlic (application.properties) добавлены необходимые параметры для настройки интеграции с S3
  2. CLI запускается пользователем, который имеет права на чтение статических директорий (/var/gitflic/)

Запуск GitFlic CLI

1. Распакуйте архив с ПО GitFlic в любую удобную директорию

unzip gitflic_4.0.0_free_onpremise.zip

2. Перейдите в директорию CLI внутри распакованного архива

cd /path/to/arhive/cli

3. Сделайте скрипт gitflic-cli.sh исполняемым

chmod +x ./gitflic-cli.sh

4. Для запуска CLI воспользуйтесь следующей командой, добавив в качестве опции путь до конфигурационного файла вашего инстанса GitFlic:

./gitflic-cli.sh /путь/до/application.properties

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

1. Перенос пакетов реестра в S3 осуществляется с помощью команды

s3 migrate-to packages

2. Перенос релизов в S3 осуществляется с помощью команды

s3 migrate-to releases

3. Перенос LFS-файлов в S3 осуществляется с помощью команды

s3 migrate-to lfs

4. Перенос картинок (аватарки команды, компаний, Oauth-приложений, а также аватарки и баннеры пользователей) в S3

Формат хранения картинок

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

Команда для обновления логики хранения картинок

fix images

Команда для переноса картинок с файловой системы в S3

s3 migrate-to images