在 Ant Bamboo 构建中使用 Jira 或默认项目版本
Using Jira or default project version in Ant Bamboo build
我要在我们公司的 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 触发器中执行计划时,我受到了 angry Chuck 的欢迎......啊哈......竹子,出了点问题
/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
优先
我要在我们公司的 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 触发器中执行计划时,我受到了 angry Chuck 的欢迎......啊哈......竹子,出了点问题
/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
优先