Подтвердить что ты не робот

Непрерывное развертывание с дженкинсами

Я хочу развернуть с jenkins в тестовую среду и в производственную среду. Для этого мне нужно подключиться к серверу требуемой среды, что-то вроде ssh/scp.

Я хотел бы знать, что лучший способ.

Я нашел некоторые плагины, чтобы сделать это, например, Jenkins-Deploy-Plug-in или Jenkins Publish over SSH Plugin. У первого есть много проблем, которые на самом деле не заслуживают доверия для развертывания в производстве, а для второго вам необходимо изменить глобальную конфигурацию, которая является ручной работой для каждого развертывания.

Есть идеи, как это решить? Может быть, с некоторыми скриптами или плагинами?

Единственная текущая идея, которую я имею, это: подключиться с jenkins к серверу (возможно, с помощью SSH Plugin) и выполнить там script, который подключается к желаемой среде. Но это две связи. Это действительно необходимо? Я надеюсь на более простой способ для этого.

спасибо за любой намек.

4b9b3361

Ответ 1

Я предлагаю следующую процедуру:

один единственный скрипт оболочки (хранящийся где-то на сервере jenkins) делает все. По сути, скрипт выполняет scp артефакта сборки, а затем подключается к серверу (ssh) и выполняет все необходимые для развертывания задачи (настройка страницы обслуживания, резервное копирование текущего приложения, развертывание нового приложения и т.д.).

На сервере jenkins есть как минимум 2 задания:

  • первый просто выполняет сборку (используя maven или любой другой скрипт сборки)
  • Второе задание выполняет развертывание: поэтому оно выполняет только сценарий оболочки. (Я предлагаю одно задание развертывания для каждой целевой среды: тестирование, производство,...)

Не требуется никакого "специального" плагина jenkins для реализации этого "развертывания одним щелчком". Требуется только, чтобы пользователь jenkins имел доступ по ssh к целевому серверу.

РЕДАКТИРОВАТЬ

Вот пример сценария оболочки для иллюстрации моего поста

#This script will copy the last artifact build by the job "MyApp" to test.myserver.com
#and remotely execute the deployment script.

#copy the war to the server
#(the job "MyApp" is using maven, that why the war can be found at this location)
scp -i <HOME_DIR>/.ssh/id_dsa $HUDSON_HOME/jobs/MyApp_Build/workspace/myapp/target/myapp.war     [email protected]:/tmp/

#connect to the server and execute the deployment script
ssh -i <HOME_DIR>/.ssh/id_dsa [email protected] 
#The following is just an example of what a deployment script can be.
#of course you must adapt it to your needs and environment
"cd <TOMCAT_DIR>;
#first copy the current war to a backup directory (additionaly, I have a cron task deleting old undeployed apps)
cp -rf myapp-apps/myapp* undeployed/myapp-apps/; 
#execute a script (stored on the server) to properly stop the app
sh bin/myapp.sh stop; 
#delete current app
rm -rf myapp-apps/myapp; 
rm -rf myapp-apps/myapp.war;
#copy the uploaded war in tomcat app directory 
cp /tmp/myapp.war myapp-apps/; 
#execute a script (stored on the server) to start the app
sh bin/myapp.sh start"

Ответ 2

Использование SSH компрометирует безопасность вашей среды
и довольно сложно устранить неполадки.

Лучше установить Jenkins-Slave на удаленном компьютере
и выполните тесты там, выполнив задание на ведомом.

Ведомый контролируется сервером, что экономит вам массу проблем
управление соединением.

Вы можете запустить удаленное задание в конце успешной сборки
и передать ему артефакт этой сборки.
(также может иметь первое хранилище Job Store артефакты на общем диске

и передать местоположение этих артефактов в следующее задание).

Смотрите здесь:

Ответ 3

В идеале вы должны использовать что-то вроде Fabric или Capistrano для развертывания и вызывать эти сценарии у Дженкинса. Я использовал Capistrano для приложений Ruby On Rails и Non-Ruby. Самое большое преимущество, которое я вижу:

  • Интеллект встроен для отката развертывания в случае наличия ошибок при развертывании.
  • Крючки, которые он предоставляет для запуска набора сценариев, таких как миграция БД, перезагрузки службы и т.д.
  • Ручной откат в случае необходимости.

Ответ 4

Привет кто-нибудь, у меня есть одна проблема признания вины

Как развернуть одно окружение в другой среде, такой как (DEV, UAT, Pre-PROD, PROD), используя jenkins?

  • без платных инструментов IBM UCD, удеплой