Агент Сборки Teamcity уничтожается systemd при обновлении

В нашей системе песней мы настроили teamcity агент как systemd сервис. Сервис хорошо работает кроме тех случаев, когда агент выполняет обновление. Затем это уничтожается при выполнении обновления. Я предполагаю, что это происходит из-за того, что systemd следит за созданными процессами и когда основной процесс существует, чтобы позволить второму процессу работать, обновление systemd решает, что это - потерянный процесс и уничтожает его приблизительно после минуты.

Я предполагаю, что это предположение проверено тем, это, когда я непосредственно запускаю teamcity агент работы обновления без проблемы.

Это - конфигурация сервиса:

[Unit]
Description=teamcity agent - local
Requires=network.target
After=network.target

[Service]
Type=forking
PIDFile=/home/teamcityagent/logs/buildAgent.pid
WorkingDirectory=/home/teamcityagent
User=teamcityagent
Group=teamcityagent
ExecStart=/home/teamcityagent/bin/agent.sh start
ExecStop=/home/teamcityagent/bin/agent.sh stop
TimeoutStartSec=900
TimeoutStopSec=60

[Install]
WantedBy=multi-user.target

До сих пор я попытался изменить тайм-аут на 900secs и прокомментировал PIDFile. Ничто не помогло.

Существует ли способ сказать systemd не уничтожать процесс обновления, говоря этому не наблюдать за потерянными процессами?

6
задан 16 January 2015 в 15:20
2 ответа

Добавление

RemainAfterExit=yes

в службу строфа, кажется, исправляет это без необходимости изменять тайм-ауты.

Документировано на https://www.freedesktop.org/software/systemd/man/systemd.service.html#RemainAfterExit=

4
ответ дан 3 December 2019 в 00:35

Прошло много времени с тех пор, как это было впервые опубликовано.

У меня только что была похожая проблема с последней версией TeamCity. В моем случае я настроил systemd для запуска агента от имени специального пользователя. Похоже, у этого пользователя нет необходимых разрешений для выполнения обновления.

Поэтому, когда агент был остановлен, я перезапустил его вручную с правами root с помощью скриптов TeamCity. Обновление прошло успешно, и новый агент был запущен.

Однако на тот момент агент работал от имени пользователя root. Поэтому я остановил его вручную, сбросил права доступа в каталоге агента сборки другому моему пользователю (после обновления некоторые файлы принадлежали root) и перезапустил с помощью systemctl. Это перезапустило агент как надлежащего пользователя.

Кажется, теперь все работает.

0
ответ дан 8 October 2020 в 22:40

Теги

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