使用Jenkins 2 Jenkinsfile脚本自动进行nexus工件版本控制

时间:2016-06-17 16:33:51

标签: nexus jenkins-workflow jenkins-pipeline jenkins-2

我目前有一个Jenkins DSL脚本定义我的发布管道(如下)。我想知道是否有办法自动增加每个版本的已发布工件的版本号,以便我可以使用新的唯一版本号将其发布到Nexus,而不必手动设置它。我过去曾经使用过一个插件,可以使用常规的Jenkins工作自动执行此操作,但我无法弄清楚如何使用管道脚本。

node('master') {
       //input 'Proceed?'

       stage 'Checkout'
              checkout scm

       stage 'Build'
              dir('./collector') {
                     sh "./gradlew clean build -Penv=${ENVIRONMENT}"
              }

       stage 'Flyway Migrate'
              dir('./database') {
                     sh "./gradlew flywayMigrate -i -Penv=${ENVIRONMENT}"
              } 

       stage 'Run cucumber Tests'
              dir('./collector') {
                     sh "./gradlew cucumber -Penv=${ENVIRONMENT}"
              }

       stage 'Publish artifact to Nexus'
              dir('./collector') {

                withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'NEXUS_PASSWORD',
                    usernameVariable: 'NEXUS_USERNAME', passwordVariable: 'NEXUS_PASSWORD']]) {
                            sh ("./gradlew publish -Pnexus_username=" + env.NEXUS_USERNAME+" -Pnexus_password=" + env.NEXUS_PASSWORD+ " -Penv=${ENVIRONMENT}--stacktrace")
                     }       


                  }

           //stage ''
    }

2 个答案:

答案 0 :(得分:0)

您可以使用管道中的VersionNumberPlugin以高度可配置的方式设置版本号。

哑巴的例子:

script{
    version = VersionNumber(versionNumberString: '1.0.${BUILDS_ALL_TIME}')
}

答案 1 :(得分:0)

您只能在管道中使用${env.BUILD_NUMBER}变量。

基于this答案,您可以在gradle命令行中将其显式设置为

-Pversion=${env.BUILD_NUMBER}(但需要一些预配置,请参见answer