Интеграция с 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 хранилище необходимо:
Предварительные условия
Перед осуществлением переноса необходимо убедиться в том что:
- В конфигурационный файл GitFlic (
application.properties
) добавлены необходимые параметры для настройки интеграции с S3 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