Таким образом, в настоящее время мы удаляемся от нашего текущего поставщика развертывания: Beanstalk, который великолепен, но мы находимся на верхнем уровне, и у нас не хватает места или мы ограничиваем наши хранилища.Итак, мы уходим, поэтому, пожалуйста, не предлагайте никаких других SaaS-провайдеров.
Я лично использую Gitlab для своих собственных проектов и проектов нескольких компаний, и это удивительно, что мы используем собственную версию на нашем локальном сервере в нашей компании.building.
Мы настроили CI и в настоящее время используем следующий код развертывания (я уменьшил биты только до развертывания для разработки) - для развертывания используется исполняющий модуль оболочки при развертывании на существующем сервере Linux.
variables:
HOSTNAME: '<hostname>'
USERNAME: '<username>'
PASSWORD: '<password>'
PATH_DEV: '/path/to/www'
# Define the stages (we can add as many as we want)
stages:
# - build
- deploy
# The code for development deployment
deploy_dev:
stage: deploy
script:
- echo "Deploying to development environment..."
- rm .gitlab-ci.yml
- rsync -urltvz --filter=':- .gitignore' --exclude=".git" -e "sshpass -p"$PASSWORD" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" * $USERNAME@$HOSTNAME:$PATH_DEV
- echo "Finished deploying."
environment:
name: Development
url: http://dev.domain.com
only:
- envdev
Проблема:
Когда мы используем приведенный выше код для развертывания, он идеален и работает действительно хорошо, а также развертывает весь код после оптимизации и т. Д., Номы нашли здесь небольшую ошибку.
Когда вы удаляете файл, команда rsync не удаляет файл, теперь я провел поиск и нашел флаг --remove, который вы можете добавить, и это сработало - ноон также удалил весь загруженный пользователем контент.Теперь я добавил .gitignore в фильтрацию, чтобы он игнорировал некоторые файлы в их (которые обычно создаются пользователем) или конфигурационные файлы и / или библиотеки (npm и т. Д.).Это нормально, пока пользователь не начал загружать файлы с помощью менеджера мультимедиа в нашей инфраструктуре, который хранится в папке, которой нет в файле .gitignore, и не может этого сделать, поскольку он содержит другие файлы, так как мы также добавляем туда свои собственные файлы, так чтоони доступны для редактирования пользователем, так что теперь я не уверен, как с этим справиться.
Нам нужна настройка CI, которая будет загружать изменения файлов на сервер, поэтому она будет искать последниефиксирует и находит последние файлы, которые были изменены, а затем отправляет только эти файлы.Конечно, я хотел бы сделать это с помощью Gitlab CI, поэтому любые примеры идей или учебные пособия будут удивительными.
Заранее спасибо.
~ Дэнни