Estou tentando reiniciar meu servidor tomcat 8 após a implantação.
Configuração:
O gitlab-runner é executado com seu próprio usuário (chamado gitlab-runner)
o tomcat usa seu próprio usuário chamado tomcat
-
sudoers tem uma entrada para que o gitlab-runner possa executar um script:
gitlab-runner ALL=(tomcat) NOPASSWD: /home/tomcat/deploy.sh
-
O script de implantação simplesmente copia um arquivo para o diretório webapps, desliga o tomact e o reinicia:
cd /home/tomcat/bin
sh catalina.sh stop -force
...
sh catalina.sh start
Quando executo o script manualmente como o usuário do gitlab-runner, tudo funciona bem:
-
sudo -u tomcat /home/tomcat/deploy.sh
No entanto, quando o trabalho é iniciado a partir do gitlab-ci-multi-runner (com um push para o repositório do gitlab), as seguintes coisas estão acontecendo. O gitlab-runner basicamente escreve um script.sh que então executa o mesmo comando acima.
- Normalmente, quando eu inicio o tomcat, vejo a seguinte saída:
Para encerramento:
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
Para inicialização:
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.
Quando eu inicio com o gitlab-runner, não há saída para o desligamento, mas o servidor é desligado. Isso está realmente funcionando.
Para a inicialização, apenas Tomcat started.
mostra.
-
Um arquivo pid é criado com um pid dentro, mas o processo não existe.
-
Arquivos de log são criados, mas estão vazios.
Se eu iniciar o servidor no modo de depuração: sh catalina.sh jpda start
o arquivo log / catalina.out apenas contém uma linha: tomcat Listening for transport dt_socket at address: 8080
Meu pensamento é que o ambiente é diferente, então eu verifiquei com env
cmd. Tudo é igual exceto que TERM=unknown
quando é iniciado pelo gitlab-runner.
Você tem alguma pista sobre o que pode acontecer em segundo plano ou apenas coisas que eu poderia testar?
O gitlab-runner é open source e o script que inicia o script de construção é o seguinte: link