使用Jira或Ant Bamboo构建中的默认项目版本



在我们公司的Jira Bamboo Bitbucket设置中,我有以下任务要完成。

我们希望Jira触发Bamboo构建并为项目分配正确的版本号。

我们使用Ant来执行构建。

目前,由于构建计划中的变量,Bamboo管理项目版本控制。

为了从Bamboo或Eclipse运行我的构建脚本,我做了以下

<input addproperty="project.version" message="Input current version or use arguments" />
----
<jar compress="true" destfile="build/publish/${project.name}-${project.version}.jar">

上面几行的意思是,我可以将-Dproject.version=${bamboo.projectVersion}作为Ant参数传递,也可以被Ant询问要构建哪个版本号。如果我从Eclipse运行构建,我要么键入版本号,要么对本地构建使用传统的版本控制。

现在我想向前迈进一步,使用Jira我知道Jira可以覆盖Bamboo中的计划变量,它有一个非常方便的UI。但我的老板要求使用内置的${jira.version}变量,以避免指示人们重写变量。

所以我想:这个想法应该是要么选择Jira提供的版本号,要么使用Bamboo配置的版本号或最终询问用户。

我最终得到了在本地Eclipse环境中工作的以下代码

    <condition property="version" value="${jira.version}" if:set="jira.version">
        <isset property="jira.version" />
    </condition>
    <condition property="version" value="${project.version}" if:set="project.version">
        <isset property="project.version" />
    </condition>
    <input addproperty="version" message="Input current version or use arguments" />

我尝试了一些组合或运行配置,它们都符合我的要求。

渴望在Bamboo中进行测试,我编辑了我的构建脚本,以便通过项目和Jira版本的

Target
"2 - jar" -Dproject.version="${bamboo.project.version}.${bamboo.buildNumber}" -Djira.version="${jira.version}" -Dbuild.number="${bamboo.buildNumber}"

可悲的是,当我试图从独立和Jira触发器运行该计划时,我受到了愤怒的Chuck的欢迎。。。嗯。。。Bamboo说出了问题

/usr/share/ant/bin/ant: line 336: -Djira.version=${jira.version}: bad substitution

Ant似乎接受了Jira之外的任何变量。如何让Ant使用Jira指定的版本号?或者,更一般地说,Jira规定的属性?

似乎是我理解Jira变量替换的错误

错误的

-Djira.version="${jira.version}"

纠正

-Djira.version="${bamboo.jira.version}"

Bamboo实际上将所有变量置于其范围内。无论他们是由Jira注入还是由项目控制。

解决方案的另一部分是在构建计划中定义默认变量jira.version,以避免出现错误的替换错误。

这意味着,如果我从Bamboo手动运行构建(例如,测试最近的提交),那么-Dproject.version将进入version,但如果Bamboo是由Jira触发的,则-Djira.version将具有优先级

最新更新