为啥我无法在 Windows 10 中运行的詹金斯管道中运行批处理文件?
Posted
技术标签:
【中文标题】为啥我无法在 Windows 10 中运行的詹金斯管道中运行批处理文件?【英文标题】:why am I not able to run batch file in jenkins pipeline running in windows 10?为什么我无法在 Windows 10 中运行的詹金斯管道中运行批处理文件? 【发布时间】:2019-04-08 12:43:03 【问题描述】:我正在尝试运行 jenkins 工作区中的批处理脚本。我写了一个如下的 groovy 脚本来做到这一点
stage('batchscript')
steps
bat 'start cmd.exe /c C:\\Program Files (x86)\\Jenkins\\workspace\\jenkins Project\\batchfile.bat'\
当我构建作业时,它应该打开一个新的命令窗口并在新的命令提示符下运行我的批处理文件,执行所有 bat 命令。构建成功,但没有打开命令窗口。任何建议都会有所帮助
【问题讨论】:
【参考方案1】:Jenkins 旨在以 background 模式执行 shell 命令,而不是 interactive(UI) 模式。当你运行 start cmd.exe /c c://some/app.exe
时,会打开一个新的 cmd UI,这在 jenkins 中永远不会发生。
单行
如果你需要用 jenkins 执行一个简单的批处理命令:
stage('build')
cmd_exec('echo "Buils starting..."')
cmd_exec('echo "dir /a /b"')
def cmd_exec(command)
return bat(returnStdout: true, script: "$command").trim()
这是一个高级示例:
https://gist.github.com/VladFrost/89e8ccabd40eb0f52374d7982b557c8e多行
steps
echo 'Deploy to staging environment'
// Launch tomcat
bat """
cd c:\\qa\\bin
dir /a /b
startup
"""
bat """
cd c:\\qa\\bin
startup
"""
// Code to move WAR to Tomcat
bat "xcopy /y c:\\webapp\\target\\webapp.war ..."
bat "xcopy /y c:\\webapp\\target\\webapp.war ..."
例子:
https://gist.github.com/timothyshort/a1364b36a0ee1c0dca378e6f438c0e1c调用批处理文件
如果你需要使用 jenkins 执行批处理文件:
stage('build')
dir("build_folder")
bat "run_build_windows.bat"
或
stage('build')
bat "c://some/folder/run_build_windows.bat"
Windows 路径有时很奇怪 :s 。无论如何,linux 是托管 jenkins 的最佳选择。
【讨论】:
【参考方案2】:参考:https://thenucleargeeks.com/2020/11/24/how-to-run-batch-scripts-commands-in-jenkinsfile/
node
stage('Preparation')
//Preparations and checkout the code
stage('Build')
//Build command
stage('Post build action')
bat ''' ECHO Hello World '''
【讨论】:
以上是关于为啥我无法在 Windows 10 中运行的詹金斯管道中运行批处理文件?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 Windows 10 UWP 上收到“无法注册包”部署错误?