soru
soru

Reputation: 5526

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?

Upvotes: 5

Views: 6216

Answers (1)

Patxi Gortázar
Patxi Gortázar

Reputation: 183

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"
    }
}

Upvotes: 7

Related Questions