在Jenkins中执行WIndows bat文件

时间:2017-04-21 20:21:29

标签: windows jenkins jenkins-pipeline devops

我正在使用Jenkins 2.46.1 我安装了一个构建管道插件,我想在其中执行一个Windows批处理文件。批处理文件应该在新的命令窗口中执行,而不是在jenkins控制台输出上执行。我给出了以下Jenkins管道groovy脚本:

node {  
    stage 'Init'
    bat '''
        call C:\\myprj\\mybat.bat stop
        EXIT /B 0
    '''
    stage 'Deploy'
    bat '''call C:\\myprj\\mybat.bat'''
}

init 阶段,如果进程已经打开并且在阶段部署,我想要终止进程,它应该打开一个新的命令窗口并运行我的批处理文件。 问题是以上不起作用。构建成功但没有打开命令窗口。请建议

2 个答案:

答案 0 :(得分:5)

从技术上讲,要做你所要求的,你应该能够运行

bat 'start cmd.exe /c C:\\myprj\\mybat.bat'

这将启动一个新命令windows(cmd.exe)并运行给定的批处理文件。根据Jenkins奴隶的运行方式,您可能看不到任何东西。 (例如,如果它作为Windows服务或不同的用户运行,您将看不到任何内容)

答案 1 :(得分:1)

如果代理程序正在服务中运行并且您希望获得输出,则为替代解决方案:

bat(readFile("mybat.bat"))

注意:bat文件将需要在您的工作空间中。

其他说明:您不再从原始位置运行bat文件。相反,它是从基础持久性任务系统创建的临时位置运行的。这意味着脚本中的%~dp0之类的内容不会返回您期望的路径。