Развертывание в Google Compute Engine практически не отличается от AWS, Azure или другого хост-провайдера Linux.
Вам просто нужно ssh-соединение с удаленным компьютером и установить необходимое программное обеспечение для компиляции, сборки, архивирования, развертывания и т. Д.
Я перечислю некоторые подходы от базового (вручную) до продвинутого (автоматизировано):
# 1 Bash-скриптинг
- распаковать и настроить git
- распаковать и настроить java
- распаковать и настроить maven
- распаковать и настроить tomcat (это не требуется, если используется весенняя загрузка)
- настроить хост linux для открытия порта 8080
- создать скрипт с именем /devops/pipeline.sh
Для развертывания на войне:
# get the source code
cd /tmp/folder/3dac58b7
git clone http://github.com/myrepo.git .
# create war
mvn clean package
# move war to deploy tomcat folder
cp target/my_app.war /my/tomcat/webapps
# stop tomcat
bash /my/tomcat/shutdown.sh
# start tomcat
bash /my/tomcat/startup.sh
Или запуск с пружинной загрузкой
# get the source code
cd /tmp/folder/3dac58b7
git clone http://github.com/myrepo.git .
# create jar
mvn clean package
# kill or stop the application
killall java
# start the application
java $JAVA_OPTS -jar $jar_file_name
- После нажатия на git просто подключитесь к своему экземпляру с помощью ssh и выполните
bash /devops/pipeline.sh
Улучшения: Параметризация имени репозитория, имени ветви, профиля mvn, учетных данных базы данных, создание tmp / uпапку uid при каждом выполнении, удаляйте tmp / uuid после развертывания, оптимизируйте запуск и остановку приложения с помощью pid и т. д.
# 2 Docker
- Установка docker в вашем случае
- Создайте Docker-контейнер с именем my-container-name , содержащий все шаги подхода # 1
- После нажатия на git просто подключитесь к вашему экземпляруиспользуя ssh и выполните команду:
docker rm my_app -f
docker run -d --name my_app -p 8080:8080 my-container-name
# 3 Хранилище артефактов (требуется дополнительный экземпляр)
Настроить Nexus или JFrog Artifactory в новом экземпляре.
Укажите настройки maven на компьютере разработчика по URL, предоставленномунастроен репозиторий артефактов.
Измените скрипт # 1 или Dockerfile # 2 так:
- избегайте установки git
- избегайте git clone
- избегать пакета mvn clean (больше не требуется, потому что будет создан файл войныредактировать в машине разработки)
- загрузить файл войны или jar из Репозиторий артефактов
Использовать подходы # 1 или # 2
Когда вы будете готовы к развертыванию, нажмите на git и выполните на компьютере разработчика:
# This will generate the war file and upload to the Artifact Repository.
mvn clean install
# 4 Использовать сервер непрерывной интеграции (требуется дополнительный экземпляр)
- Установить Jenkins в новом экземпляре
- Настроить плагины и другие необходимые вещи в jenkins вЧтобы включить URL-адрес webhook : https://jrichardsz.github.io/devops/configure-webhooks-in-github-bitbucket-gitlab
- Создать задание в jenkins для вызова сценария подхода # 1 или выполнения команд docker для подхода № 2.Если бы вы могли, подход №3 был бы идеальным.
- Настройте свой SCM (github, bitbucket, gitlab и т. Д.) Так, чтобы он указывал на URL-адрес webhook , опубликованный Jenkins.
Когда вы будете готовы к развертыванию, просто отправьте код в вашу scm, jenkins будет уведомлен и выполнит предыдущее созданное задание.Как видите, для развертывания приложения на сервере не требуется человек (за исключением push разработчика)
Примечание: На этом этапе вы можете перенести сценарии подходов№ 1 и № 2 до:
- сценарий конвейера Jenkins
- декларативный конвейер Jenkins
Это более продвинутые и масштабируемые подходы для сопоставления всех команд и конфигураций, необходимых от начала до развертывания.
# 5 Advanced (Sysadminтребуется команда или дополнительные люди и знания)
Потребуются дополнительные экземпляры и технологии.
- Kubernetes
- Ansible
- Высокая доступность / нагрузкаБалансировщик
- Резервные копии
- Управление конфигурациями
- И еще автоматизации
Это будет необходимо, когда все больше и больше веб-приложений, микросервисов требуются в вашей компании / предприятии.
#6 Saas