Estou encontrando um problema estranho, quando executo o vagrant, a máquina virtual se acumula bem e funciona conforme o esperado, mas quando executo o mesmo comando em um pipeline do Jenkinsfile, após a conclusão da compilação, a máquina virtual é desligada com um log criado .
Log created: 2021-01-15T12:32:44.144568000Z
Process ID: 9678 (0x25ce)
Parent PID: 1 (0x1)
Executable: /usr/lib/virtualbox/VBoxSVC
Arg[0]: /usr/lib/virtualbox/VBoxSVC
Arg[1]: --auto-shutdown
AddRef: illegal refcnt=3221225469 state=2
Este é o código do pipeline para vagrant
stage('Run Vagrant'){
sh 'cd /var/lib/jenkins/workspace/jenkins-file_master/ansible/; vagrant up'
}
A configuração do Jenkins é definida para o mesmo usuário, para que o ambiente seja o mesmo.
# user and group to be invoked as (default to jenkins)
JENKINS_USER=myusername
JENKINS_GROUP="adm cdrom sudo dip plugdev lpadmin lxd sambashare docker vboxusers"
Você está executando o Process Tree Killer, um "recurso" do Jenkins que mata todos os processos iniciados por uma compilação quando essa compilação termina. A intenção é impedir que as compilações do Jenkins iniciem serviços, daemons ou outros processos de longa duração que possam afetar outras compilações ou a própria máquina do Jenkins.
Existem algumas maneiras de desativar esse recurso, conforme indicado no wiki e nesta pergunta SO:
Essas correções são:
-Dhudson.util.ProcessTree.disable=true
no seu processo Jenkins (pessoalmente, tive a melhor sorte com esta solução)BUILD_ID
(para trabalhos Freestyle e outros que não sejam do Pipeline) ouJENKINS_NODE_COOKIE
(para trabalhos do Pipeline)