Пытаясь перезапустить кота 8 с gitlab-бегуном, изодромный с предварением созданный файл, пустой журнал, сервер, не запущенный

Я пытаюсь перезапустить своего кота 8 серверов после развертывания.

Установка:

gitlab-бегун работает с его собственным пользователем (названный gitlab-бегуном)

кот использует своего собственного пользователя, названного котом

  1. sudoers имеет запись так, чтобы gitlab-бегун мог запустить скрипт: gitlab-runner ALL=(tomcat) NOPASSWD: /home/tomcat/deploy.sh

  2. Развернуть сценарий просто копирует файл в каталог веб-приложений, закрывает кота и перезапускает его:

cd /home/tomcat/bin sh catalina.sh stop -force ... sh catalina.sh start

Когда я запускаю скрипт вручную как пользователь gitlab-бегуна, все хорошо работает:

  1. sudo -u tomcat /home/tomcat/deploy.sh

Однако, когда задание запускается с gitlab-ci-multi-runner (с нажатием в gitlab репозиторий), следующие вещи происходят. Gitlab-бегун в основном пишет script.sh, который затем выполняет ту же команду сверху.

  1. Обычно, когда я запускаю кота, я вижу следующий вывод: Для завершения работы:

Using CATALINA_BASE: /home/tomcat/ Using CATALINA_HOME: /home/tomcat/ Using CATALINA_TMPDIR: /home/tomcat/temp Using JRE_HOME: /usr Using CLASSPATH: /home/tomcat/bin/bootstrap.jar:/home/tomcat/bin/tomcat-juli.jar Using CATALINA_PID: /home/tomcat/bin/catalina.pid

Для запуска: Using CATALINA_BASE: /home/tomcat/ Using CATALINA_HOME: /home/tomcat/ Using CATALINA_TMPDIR: /home/tomcat/temp Using JRE_HOME: /usr Using CLASSPATH: /home/tomcat/bin/bootstrap.jar:/home/tomcat/bin/tomcat-juli.jar Using CATALINA_PID: /home/tomcat/bin/catalina.pid Existing PID file found during start. Removing/clearing stale PID file. Tomcat started.

Когда я запускаю его с gitlab-бегуна нет никакого вывода для завершения работы, но сервер закрывается. Это на самом деле работает.

Для запуска только Tomcat started. шоу.

  1. Изодромный с предварением файл создается с pid внутри, но процесс не существует.

  2. Файлы журнала создаются, но они пусты.

Если я запускаю сервер в режиме отладки: sh catalina.sh jpda start файл log/catalina.out просто conatains одна строка: tomcat Listening for transport dt_socket at address: 8080


Моя мысль была то, что среда отличается, таким образом, я сверился env cmd. Все равно за исключением того, что TERM=unknown когда это запускается gitlab-бегуном.

У Вас есть какие-либо подсказки, что могло бы происходить в фоновом режиме или просто вещи, которые я мог протестировать?

gitlab-бегун является открытым исходным кодом и сценарием, который запускается, сценарий сборки - это: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/executors/shell/executor_shell.go#L36

1
задан 3 October 2015 в 11:07
2 ответа

Наконец-то я нашел решение, которое работает.

Что касается проблемы с отображением переменных среды, я обращаюсь к этому: https://bz.apache.org/bugzilla /show_bug.cgi?id=37848 У gitlab-runner нет tty, поэтому выходные данные не отображаются.

Причина неправильного запуска следующая: Заглянув в исходный код gitlab-runner, вы можете найти это: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/executors/shell/executor_shell.go# L84

Обычно, как только gitlab-runner завершает работу, он убивает все оставшиеся процессы. Это означает, что в моем случае сервер действительно работал в течение короткого промежутка времени, прежде чем процесс был остановлен. Вот почему у меня были пустые файлы журнала.

Я решил проблему, просто написав сценарий инициализации для запуска и завершения работы tomcat. У кота теперь есть собственный пользователь (и группа). Теперь дерево процессов tomcat инициируется / sbin / init. Теперь gitlab-runner больше не знает об этом процессе или не может его убить. В любом случае кот продолжит работу после остановки бегуна.

0
ответ дан 4 December 2019 в 07:04

Просто откажитесь от вашего процесса, например, tomcat (напишите это в своем .gitlab-ci.yml ):

deploy_to_tomcat:
  stage: deploy
  script:
    - sudo /opt/apache-tomcat-7.0.77-dbservice/bin/startup.sh &
    - disown
0
ответ дан 4 December 2019 в 07:04

Теги

Похожие вопросы