Jenkins is aimed to execute shell commands in background mode, not for interactive(UI) mode. When you run start cmd.exe /c c://some/app.exe
a new cmd UI is opened and this will never happen in jenkins.
Single line
If you need to execute a simple batch commands with 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()
}
Here a advanced example :
Multiline
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 ..."
}
Example:
Invoke batch file
If you need to execute a batch file with jenkins :
stage('build') {
dir("build_folder"){
bat "run_build_windows.bat"
}
}
or
stage('build') {
bat "c://some/folder/run_build_windows.bat"
}
Windows paths some time are bizarre :s . Anyway, linux is the best choice to host jenkins.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…