Auto generate build pipeline for gradle build using Jenkinsfile

39,908

Solution 1

In case you're using Artifactory to resolve your build dependencies or to deploy your build artifacts, it is recommended to use the Pipeline DSL for Gradle build with Artifactory.

Here's an example taken from the Jenkins Pipeline Examples page:

node {
    // Get Artifactory server instance, defined in the Artifactory Plugin administration page.
    def server = Artifactory.server "SERVER_ID"
    // Create an Artifactory Gradle instance.
    def rtGradle = Artifactory.newGradleBuild()

    stage 'Clone sources'
        git url: 'https://github.com/jfrogdev/project-examples.git'

    stage 'Artifactory configuration'
        // Tool name from Jenkins configuration
        rtGradle.tool = "Gradle-2.4"
        // Set Artifactory repositories for dependencies resolution and artifacts deployment.
        rtGradle.deployer repo:'ext-release-local', server: server
        rtGradle.resolver repo:'remote-repos', server: server

    stage 'Gradle build'
        def buildInfo = rtGradle.run rootDir: "gradle-examples/4/gradle-example-ci-server/", buildFile: 'build.gradle', tasks: 'clean artifactoryPublish'

    stage 'Publish build info'
        server.publishBuildInfo buildInfo
}

Otherwise, you can simply run the gradle command with the sh or bat Pipeline steps.

Solution 2

In case your project uses Gradle Wrapper you can use the following snippet in your Jenkinsfile:

stage('Gradle Build') {
    if (isUnix()) {
        sh './gradlew clean build'
    } else {
        bat 'gradlew.bat clean build'
    }
}

If you checkout to subdirectory sub-dir you might want to use

stage('Gradle Build') {
    if (isUnix()) {
        dir('sub-dir') {sh './gradlew clean build'}
    } else {
        dir('sub-dir') {bat 'gradlew.bat clean build'}
    }
}

Solution 3

In jenkins you can creates a jenkins pipeline using a script which is written in Jenkinsfile.

We write a script using 'stages' and 'node' as building block, these building blocks allow you to specify instructions that should be executed as part of jenkins pipeline.

To execute gradle build using JenkinsFile first check for Operating system and call appropriate shell that can execute that gradle task, as below:


Jenkinsfile

stage 'build_Project'
node{
  if(isUnix()){
  sh 'gradle build --info'

  }
  else{
    bat 'gradle build --info'
  }
}

Above code snippet create a stage with name build_project and execute gradle build script of the current project.

Share:
39,908
Aniruddha Sinha
Author by

Aniruddha Sinha

I am a versatile programmer with a high apetite for learning. I am also a big enthusiast of Capabilities of Data processing by means of ETL tools. I am new into hadoop and have a great appetite for exploring it!!!

Updated on July 15, 2022

Comments

  • Aniruddha Sinha
    Aniruddha Sinha almost 2 years


    I am trying to create a build pipeline based upon the Gradle tasks. I have viewed JenkinsFile configuration Pipeline-as-code-demo but I am unable to create a pipeline for gradle tasks. Please suggest me a possible way so that I can use the Jenkinsfile to automatically show the build pipeline just by reading the configurations from the Jenkinsfile.
    Thankyou