当jenkins代理作为systemd服务启动时,returnStdout不起作用

vc6uscn9  于 2023-05-16  发布在  Jenkins
关注(0)|答案(1)|浏览(242)

我已经创建了下面的单元文件来在linux上创建一个systemd服务。此文件将在计算机上启动jenkins代理。在我的管道中有一个阶段,从机将被重新引导。创建一个在重启后启动的服务是我能够想到的解决方案,这样我的管道执行就可以在重启后继续。

[Unit]
Description=Run jenkinsAgent at startup
After=network.target

[Service]
WorkingDirectory=/home/qatest/jenkins
Type=simple
ExecStart=/bin/bash /home/qatest/jenkins/jenkinsAgent.sh
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

我的管道(groovy)使用hostName = sh(script: "hostname", returnStdout: true)。但是当jenkins代理作为systemd服务启动并运行作业时,hostName返回为空。
如果我使用sudo ./jenkinsAgent.sh在shell中手动启动jenkins代理,那么sh可以很好地运行作业。(* 我的用户在sudoers列表中 *)。
我最初认为systemd服务中的std没有正确定向,所以我在单元文件中尝试了StandardOutput=journal+console,但无济于事。
我错过了什么?

iswrvxsc

iswrvxsc1#

我修改了如下所示的单元文件,问题得到了解决。

[Unit]
Description=Run jenkinsAgent at startup
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/java -jar /home/qatest/jenkins/agent.jar -jnlpUrl http://.../slave-agent.jnlp -secret ... -workDir "/home/qatest/jenkins"

[Install]
WantedBy=multi-user.target

相关问题