自动增量发布版本Jenkins

自动增量发布版本Jenkins

本文介绍了自动增量发布版本Jenkins的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在Jenkins中构建的应用程序,并且想要部署到Octopus.在执行此操作时,我必须创建一个发送到Octopus的发行版本.对于此发行版,我必须提供一个数字(例如:"C:\Octopus\Octo.exe" create-release --project APP --version 4.8 --packageversion=4.8)

I have an application that builds in Jenkins and that I want to deploy to Octopus. When I am doing this I have to create a release version that is send to Octopus. For this release version I have to give a number (ex: "C:\Octopus\Octo.exe" create-release --project APP --version 4.8 --packageversion=4.8)

如何使版本号自动递增? (例如:我已经构建了应用程序,并在Octopus中创建了发行​​版本号4.8,下次创建应用程序时,我想创建发行版号4.9)

How can I make so that version number will be auto-incremented ? (ex: I have build the application and created in Octopus the release version number 4.8, the next time I build the application I want to create the release version number 4.9)

谢谢

推荐答案

您可以使用job属性存储版本,然后在每次运行时使用以下脚本对其进行更新(由执行系统常规脚本"构建步骤执行) ):

You can use a job property to store the version, and then update it on each run with the following script (executed by "Execute system groovy script" build step):

import jenkins.model.Jenkins
import hudson.model.*

def jenkins = Jenkins.getInstance()
def jobName = "yourJobName"
String versionType = "minor"
def job = jenkins.getItem(jobName)

//get the current version parameter and update its default value
paramsDef = job.getProperty(ParametersDefinitionProperty.class)
if (paramsDef) {
   paramsDef.parameterDefinitions.each{
       if("version".equals(it.name)){
           println "Current version is ${it.defaultValue}"
           it.defaultValue = getUpdatedVersion(versionType, it.defaultValue)
           println "Next version is ${it.defaultValue}"
       }
   }
}

//determine the next version by the required type
//and incrementing the current version

def getUpdatedVersion(String versionType, String currentVersion){

    def split = currentVersion.split('\\.')
    switch (versionType){
        case "minor.minor":
            split[2]=++Integer.parseInt(split[2])
            break
        case "minor":
            split[1]=++Integer.parseInt(split[1])
            break;
        case "major":
           split[0]=++Integer.parseInt(split[0])
           break;
    }
    return split.join('.')
}

这篇关于自动增量发布版本Jenkins的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-12 02:22