Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jenkins to run Maven build on Linux or Windows

I have a Maven build of a Java application that runs successfully on either Linux or Windows by typing the identical command mvn install.

However, using the Jenkinsfile method of setting up this build, on Linux that file needs to contain sh mvn install and on windows bat mvn install.

If paths and tools are configured appropriately on Windows, log shows:

[Pipeline] sh
[C:\tools\jenkins\workspace\DSL\master] Running shell script
sh: C:\tools\jenkins\workspace\DSL\master@tmp\durable-60527040\script.sh: command not found

Is there any way for a single Jenkinsfile to allow building in both environments?

like image 279
soru Avatar asked Aug 31 '16 14:08

soru


1 Answers

Pipeline scripts can contain groovy code, so branching with if is allowed. You can test your environment with System.properties['os.name'] and depending on the result, use sh or bat:

node {
    def os = System.properties['os.name'].toLowerCase()
    echo "OS: ${os}"
    if (os.contains("linux")) {
      sh "mvn install" 
    } else {
      bat "mvn install"
    }
}
like image 71
Patxi Gortázar Avatar answered Sep 22 '22 08:09

Patxi Gortázar