Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jenkins - cmd is not recognized

Environment:

  • Master Linux Jenkins server
  • Two Windows slave nodes
  • The windows slaves are running as a service

First Test

  • I create a Pipeline and use a use a "Execute Windows batch command" in the build section
  • In the Command box I put "C:\Jenkins\mytest.bat"
  • I checked the box "Restrict where this project can be run" and write down the name of the Windows slave
  • I built the pipeline and was successful

Second Test

  • I create a Declarative Pipeline as follows:

    pipeline {  
        agent { label 'SiebelWindows' }
    
        stages {
            stage('Test Bat') {
               steps { 
                            bat 'C:\\Jenkins\\mytest.bat'
                            //bat 'start cmd.exe /c C:\\Jenkins\\mytest.bat'
                            //call C:\\Jenkins\\mytest.bat
                            }
                    }
        }
       }
    
  • In this case the build FAIL with error "cmd is not recognized as a internal o external command"

So, why can I run the .bat with a non-declarative pipeline, but fails with a declarative pipeline?

like image 564
Chaves Avatar asked Feb 01 '19 23:02

Chaves


People also ask

Is not recognized as an internal or external command in Jenkins?

If you have installed jenkins on windows and are facing this error while running maven command from your jenkins pipeline: 'mvn' is not recognized as an internal or external command, operable program or batch file, then the first step for you is to check whether the environment variables are setup correctly.

Is not recognized as an internal or external command operable program or batch file CMD?

You can resolve this issue in three ways: First, use the full path of the executable file to launch the program. Second, add the program path to Windows environment variables. Finally, move the files to the System32 folder.


1 Answers

When I display the "Path" and the "PATH" variables, this was the result

Original_Path

The solution was redefine the PATH enviorement variable, like this

environment {

    PATH = "C:\\WINDOWS\\SYSTEM32"

}

@JustAProgrammer aske me if C:\WINDOWS\SYSTEM32 was in the PATH of my Windows machine, and that is correct, but seems like Jenkins master do not know the slave's Windows Path.

I resolve my issue, but I still looking for a complete solution, I need to set the PATH enviorement variable with ALL the path, no only C:\WINDOWS\SYSTEM32

like image 143
Chaves Avatar answered Oct 17 '22 13:10

Chaves