我使用maven2,这是哈德森和声纳,而这样做的声纳分析 - 我想一些方法来追加哈德森打造#该项目的Maven版本
该项目的版本变化,每2个星期 - 所以要在第2周的例子:
<version>abc-SNAPSHOT</version>
两个星期后,下一个版本会是这样的:
<version>xyz-SNAPSHOT</version>
我要的是生成#追加到版本已经出现在POM - 这是被拾起,并传递到声纳
注意:
-Dsonar.projectVersion=xyz-SNAPSHOT-${BUILD_NUMBER}
在这里 - 我硬编码的版本,并通过动态构建#
我想要的是能够动态地拿起从行家的版本(不改变的话),只是动态追加构建#
如何任何想法可以实现吗? 谢谢,萨蒂什
您可以使用Groovy脚本读取的版本,把对环境的变量: 获取Maven版本在詹金斯
我用这个时间脚本解析版本:
def project = new XmlParser().parse("/pom.xml")
def artifactId = project.artifactId.text().trim()
def version = project.version.text().trim()
println "ArtifactId: [" + artifactId + "]"
println "Version: [" + version + "]"
设置 “其他属性” 字段后:-Dsonar.projectVersion = $ {MAVEN_VERSION} - $ {} BUILD_NUMBER
如果詹金斯没有得到变量,尽量安装: https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin
您可以使用此功能詹金斯: https://github.com/jenkinsci/jenkins/pull/933/files
基本上你可以在制作的访问ENV变量,从Maven的GAV信息詹金斯映射
- POM_DISPLAYNAME
- POM_DISPLAYNAME
- POM_VERSION
- POM_GROUPID
- POM_ARTIFACTID
- POM_PACKAGING
- POM_RELATIVEPATH
这是不是一个真正的声纳问题。 这是Maven的项目版本。
Snaphots被设计为动态的。 你会说Maven是节省了时间标记的版本在Maven仓库引擎盖下发现(我不知道这些时间戳是如何被传递到声纳,这也许是你想要什么)。 快照版本是理想的CI工作。 从未使用由非开发软件。
什么是我建议要么停止使用快照(建“放”每次),或只接受一个事实,即有在Maven的2种构建。 我的原则是,如果代码被他人使用那么它不再是一个快照,应被视为释放。 这为像持续部署新的办法挑战.....如果每个构建都要到生产(或生产副本),那么快照变得无关紧要。
构建一个版本,每次并不坏。 首先命名约定的,我建议:
<major>.<minor>.<patch>.<hudson build num>
在Maven的版本插件会自动最痛苦的管理中释放的细节(更新POM,标记您的SCM系统)。 最后还有一个有用的M2_Release插件 ,使您能够触发哈德森GUI释放。
感谢安德烈指着我我也尝试其他链接,但也陷入了一些问题,如假设我所做的评论中指出仅仅是一个解决办法,有一个更好的解决办法? (我用哈德森),所以我定义在哈德森新的工作(建立一个Maven 2/3的项目(旧))在这里,我所定义的“常规PostBuild”复制链接中的代码,安德烈向我指出:
import hudson.model.*;
import hudson.util.*;
def thr = Thread.currentThread();
def currentBuild = thr?.executable;
def mavenVer = currentBuild.getParent().getModules().toArray()[0].getVersion();
def newParamAction = new hudson.model.ParametersAction(new
hudson.model.StringParameterValue("MAVEN_VERSION", mavenVer));
currentBuild.addAction(newParamAction);
然后,我“在其他项目上触发参数化建设”,并提到在我的POM希望行家版本mentioend工作
定义的参数 - $ {} MAVEN_VERSION
当时我能够得到的“其他”工作这个参数的值
因此,首先感谢安德烈 - 他为我提供了一个解决方案,我很好奇,想知道这是否是一个好办法另一个问题我已经是(这或许我将开始一个新的线程)是 - 如何哈德逊“自由风格”的工作有所不同一个“Maven的2/3遗产项目”
我想问的原因是“自由风格”的失败,而它的“Maven的遗产”的工作相同的Groovy脚本
谢谢,萨蒂什
有同样的需求,并为用Groovy解析POM建议解决。
import jenkins.util.*;
import jenkins.model.*;
def thr = Thread.currentThread();
def currentBuild = thr?.executable;
def workspace = currentBuild.getModuleRoot().absolutize().toString();
def project = new XmlSlurper().parse(new File("$workspace/pom.xml"))
def param = new hudson.model.StringParameterValue("project.version", project.version.toString())
currentBuild.addAction(new hudson.model.ParametersAction(param));
添加此脚本类型的后工序“执行系统Groovy脚本”(所以安装的Groovy是没有必要的),并粘贴在“常规命令”的代码。