【问题标题】:Start program via ssh in Jenkins and using it in Jenkins build在 Jenkins 中通过 ssh 启动程序并在 Jenkins 构建中使用它
【发布时间】:2023-03-19 13:06:01
【问题描述】:

大家好。

我使用 Jenkins 作为 CI 服务器,我需要使用 Jmeter 运行一些性能测试。我已经设置了插件并配置了我的工作区,一切正常,但我必须手动执行一些步骤,我想要更多的“自动化”。

目前我在远程服务器中有一些小程序。这些程序会进行一些特定的验证,例如(只是为了解释):验证电子邮件地址、电话号码等。 所以,在我在 jenkins 中运行构建之前,我必须手动启动我想要的程序(file.sh): 我必须使用 putty(或任何其他 ssh 客户端)连接到服务器,然后运行,例如,命令

./email_validation.sh

Jmeter 测试以正确的方式运行,当测试完成后,我必须手动“关闭”我启动的程序。但我想要的是尝试在 Jenkins 配置中启动我需要的程序(不是在 Jenkins 之外手动启动,而是在“执行 shell”或“使用 ssh 执行远程 shell”构建步骤中)。

我试过启动它,但它卡住了,因为当 Jenkins build 找到命令时

./email_validation.sh

构建停止,它等待命令完成,然后它将继续其他构建步骤,但显然,我需要在执行测试之前不要完成此步骤。

有没有办法做到这一点?谢谢

【问题讨论】:

    标签: ssh jenkins jmeter


    【解决方案1】:

    通过在命令末尾添加 & 符号将命令作为后台进程运行,并使用 nohup command 以防父进程收到挂断信号,例如

    nohup /path/to/email_validation.sh &
    

    如果脚本产生任何输出,它会在脚本启动时默认转到当前目录中的文件 nohup.out。

    您可以通过运行在构建结束时终止该进程:

    pkill email_validation.sh
    

    【讨论】:

    • 感谢您的帮助,但是当我执行“pkill”命令时,进程并没有停止。我不得不手动杀死它,搜索和使用 PID
    • 好的,我找到了解决方法。我不得不使用“pkill -f”和“file.sh”中的进程名称(file.sh是一种快捷方式,这个文件里面是一个大命令行。所以不要每次都执行这个大命令, 我们只运行 file.sh)
    猜你喜欢
    • 2014-11-12
    • 2018-03-11
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多