Jenkins Track项目版本

时间:2018-08-10 16:58:05

标签: git maven jenkins

我有一个Java多分支管道项目,其中maven是构建工具,而git是SCM。

它被配置为检测标签并从这些标签的提交运行构建。它还针对不同的配置文件和节点,特定的配置文件和节点通过标记名称进行区分。例如:

我有一个staging分支,它针对登台环境,当我要部署时,将所需的提交标记为staging-0.1.0(版本只是一个示例)并将其推送到存储库。此推送触发jenkins,该仓库检查回购并从Jenkinsfile执行作业。 Jenkinsfile检测配置文件并找出目标节点,例如:

string tag = env.BRANCH_NAME // 'staging-0.1.0'

def profiles = [staging: 'staging']
def nodes = [staging: 'staging-node']

def profile = profiles.get(tag.tokenize('-')[0]) // 'staging'
def nodeLabel = nodes.get(profile) // 'staging-node'

node(nodeLabel){...}

然后是结帐,测试,构建和所有其他内容

我想部署项目,但是如果部署失败,我想恢复以前的版本,例如:

try {
    sh "mvn tomcat7:deploy -P${profile}"
} catch (Exception e) {
    echo(message: "Deploy failure, ${e.toString()}")
    input(message: 'Would you like to restore previous version?')
    // Restore it!!!
}

如果构建成功,我将归档工件以供将来使用:

archiveArtifacts artifacts: 'target/*.war'

我想做的是从同一配置文件的最新成功构建中获取工件(将其命名为staging-0.0.9)并进行部署,我知道如何使用复制来实现插件,但我不太确定如何用这种配置文件找到上次构建的正确名称,因为就我所知,staging-0.0.128也是一样,所以我不能只降低当前版本。

是否可以在jenkins作业中存储一些变量并从管道脚本中读取它?这样,每次成功构建后,我将能够为此变量分配最新的构建版本。 >

我也不能仅使用复制工件插件来获得最新的jenkins构建,因为它可能是生产构建之一,有点production-0.0.1,其中可能包含完全不同的代码

由于我对DevOps还是很陌生,而我解决此问题的方法可能不正确,因此我将不胜感激,为所描述的问题提供不同的解决方案

0 个答案:

没有答案