我们目前正在使用Bamboo来构建和测试我们的软件。现在,我们的构建计划只是一堆任务:执行此bat,执行该bat等。使用Bamboo UI创建。
可能需要数月/数年的构建计划调整:
但是,当我们尝试构建较旧版本的软件时,这将中断。在旧版本中不存在某些脚本(从Bamboo任务中调用)。
在我以前的雇主处,我们使用了詹金斯管道,其中构建和测试的内容只是源存储库中存在的文件。
现在用竹子似乎可以使用竹子规格了。从我的阅读中,您可以创建规格文件,运行此文件时,它将创建构建计划。但是我看不到可以随时间更改构建计划(更改步骤)的关系。
例如,开发的Bamboo Specs用于构建所有计划分支(例如,拉取请求)。因此,如果您想在PullRequest中更改构建,则首先需要将其合并到开发中,development Bamboo Spec更新了构建计划。合并前无法测试。
问题:您如何在Bamboo中制定脚本化的建造计划,而每个开发部门都可以使用其他可能的建造方式?
我们现在将其设置为:
答案 0 :(得分:0)
问题:如何在Bamboo中制定脚本化的构建计划?
要在Bamboo中创建脚本化的构建计划,您必须使用Bamboo规格。由于您已经熟悉Jenkins,因此通过自动执行管道可以使Bamboo规范与Jenkinsfile完全一样。使用此方法的好处是它位于源代码中,并且在触发Bamboo生成时,您在源代码中对此文件所做的更改会自动更改您的计划(管道)。 这是我用Bamboo编写构建计划的脚本:
如果将来必须对计划进行更改,请编辑Bamboo specs文件,然后提交并推送。
答案 1 :(得分:0)
我找到了Atlassian文档:https://jira.atlassian.com/browse/BAM-19620。他们称其为“分歧计划分支”。 不支持,有功能要求。
截至2019年4月15日:
Atlassian更新– [2019年4月11日]大家好,
谢谢您对这个问题的投票和看法。
我们完全了解,你们中的许多人都依赖于此 功能。
经过仔细考虑,我们决定将[ 功能]。我们希望在我们 当前的项目已经完成。
期望在未来6个月内听到我们的最新进展。
要了解有关如何审核您的建议的更多信息,请参阅我们的更新 服务器功能建议的工作流程。
亲切的问候,
竹队
答案 2 :(得分:0)
我遇到了同样的问题,不幸的是不得不经历了一个不愉快的选择
这不一定在任何地方都是可行的,但是我设法以某种方式使其适用于我的项目。
想法是:将构建脚本视为C#/ Java interface
,或者更好地视为 contract 。
您的分支机构没有在构建软件方面进行重大更改,例如您的桌面应用程序变成了Web应用程序,或者您从Ant切换到Gradle,就可以进行处理。
假设我的应用程序始终是要在JFrog Artifactory上以jar形式发布的Web应用程序,我已经确定了所有维护版本共有的以下步骤:
javac
构建所有模块的jar gulp
构建Javascript资源因此,我的想法是,我已经采用了Ant构建脚本并大部分重写了它,以便在不同版本的应用程序上执行相同的任务。作为练习,我开始从较旧的版本(不再维护)中进行更改。实际上,我的官方Git分支看起来像release/x.y.z
,其中semver是x.y.z.k
,而较新的错误修复程序构建是从任何x.y.z
版本的开头开始的。
因此,我进入了release/3.10.0
分支并重写了Ant。我目前正在使用手动创建的Bamboo计划进行测试
阶段:编译
ant clean ivy-retrieve compile jar #builds the jar in a job
ant gulp-install gulp-prod zip #creates javascript resources
阶段:测试
ant run-junit
手动阶段:发布
ant baptize ivy-release #tags the artifact using ${bamboo.jira.version} and pushes to JFrog Artifactory
由于构建脚本相同,但是特定任务(例如Java编译器版本)可能会在不同版本中发生变化,因此我可以创建一个非常单一的Yaml脚本来对所有版本进行规则管理。
然后我将通过合并冲突来合并release/3.10.0
=> release/3.10.1
=> release/3.10.2
... release/3.11.2
今晚,我在努力使JUnit测试正常工作的同时,还选择将测试框架移植到该项目的较早版本。我接受一些测试会失败的原因,因为旧版本和未维护的版本包含错误。对我来说,这是一种证明系统有效的方法。
确实,分散分支是一个好主意,但我不得不在办公室中使用Bamboo 6