Bamboo 脚本化构建计划
Bamboo scripted buildplans
我们目前正在使用 bamboo 来构建和测试我们的软件。现在我们的构建计划只是一堆任务:执行这个 bat,执行那个 bat 等。使用 Bamboo UI.
创建
碰巧 months/years 构建计划需要调整:
- 并行化作业
- 添加额外的工作
- 更改一些任务
但是当我们尝试构建旧版本的软件时,这会中断。一些脚本(从 bamboo 任务中调用)在旧版本中不存在。
在我以前的雇主那里,我们使用 Jenkins 管道,其中构建和测试的内容只是源代码库中的一个文件。
现在有了 bamboo,您似乎可以使用 Bamboo Specs。从我读到你创建规格文件,当你 运行 这个时,它将创建构建计划。但我没有看到随着时间的推移改变构建计划(改变步骤)的关系。
例如,开发的 Bamboo 规范用于构建所有计划分支(例如 Pull Requests)。所以如果你想改变 PullRequest 中的构建,你首先需要将它合并到 develop 中,develop 的 Bamboo Spec 更新了 Build Plan。合并前无法对此进行测试。
问题:如何在 Bamboo 中制定脚本化的构建计划,开发的每个分支都可以有其他可能的构建方式?
我们现在将其设置为:
- 构建计划'Product A':计划分支:开发,release_x,发布,y
- 构建计划'Product A PullRequest':计划分支:feature/*
问题:如何在 Bamboo 中制定脚本化构建计划?
要在 Bamboo 中制定脚本化构建计划,您必须使用 Bamboo 规范。由于您已经熟悉 Jenkins,因此 bamboo specs 的工作方式与 Jenkinsfile 完全一样,可以自动化您的管道。使用它的好处是它存在于您的源代码中,并且您在源代码中对此文件所做的更改会在触发 bamboo 构建时自动更改您的计划(管道)。
这就是我用竹子编写构建计划的方式:
- 我将 bamboo.yml 文件添加到我的存储库的根目录下。但目前,我使用 git 子树,我的竹子规格就在那里。但你不必这样做。下面link提供了一个简单的方法。
- Link 我对 bamboo 的回购
- 告诉 bamboo 在 repo 中扫描 bamboo 规格
- 提交并推送
如果我以后必须更改计划,我会编辑 bamboo 规格文件,然后提交并推送。
编辑: 7.0 支持:https://confluence.atlassian.com/bamboo/enhanced-plan-branch-configuration-996709304.html
旧答案:
我找到了 Atlassian 文档:https://jira.atlassian.com/browse/BAM-19620。他们称之为 'divergent plan branches'。 不支持,有一个功能请求。
截至 2019 年 4 月 15 日:
Atlassian Update – [11 April 2019] Hi everyone,
Thank you for your votes and thoughts on this issue.
We fully understand that many of you are dependent on this
functionality.
After careful consideration, we've decided to prioritise [this
feature] on Bamboo roadmap. We hope to start development after our
current projects are completed.
Expect to hear an update on our progress within the next 6 months.
To learn more on how your suggestions are reviewed, see our updated
workflow for server feature suggestions.
Kind regards,
Bamboo Team
我遇到了同样的问题,不幸的是不得不经历一个不愉快的选择
向后移植构建脚本
这不一定在任何地方都可行,但我设法让它在我的项目中工作。
想法是:将构建脚本视为 C#/Java interface
,或更好地视为 contract.
只要您的分支机构在构建软件方面没有提供重大更改,例如你的桌面应用程序变成了网络应用程序,或者你从 Ant 切换到 Gradle,你可以处理这个。
假设我的应用程序始终是一个 Web 应用程序,将作为 JFrog Artifactory 上的 jar 发布,我已经确定了以下所有维护版本通用的步骤:
- 使用
javac
构建所有模块的jar
- 使用
gulp
构建Java脚本资源
- 运行 存储库中的 JUnit
- Baptize版本号通过棘手算法获得的工件
- 将工件推送到 JFrog Artifactory
所以我的想法是,我采用了我的 Ant 构建脚本并大部分重写了它,以便在不同版本的应用程序上执行相同的任务。作为练习,我开始对不再维护的旧版本进行更改。事实上,我的官方 Git 分支看起来像 release/x.y.z
,其中 semver 是 x.y.z.k
并且较新的 bugfix-builds 是从任何 x.y.z
版本的头部构建的。
所以我选择了 release/3.10.0
分支并重写了 Ant。我目前正在使用手动创建的 Bamboo 计划进行测试
Stage: Compile
ant clean ivy-retrieve compile jar #builds the jar in a job
ant gulp-install gulp-prod zip #creates javascript resources
Stage: Test
ant run-junit
Manual Stage: Release
ant baptize ivy-release #tags the artifact using ${bamboo.jira.version} and pushes to JFrog Artifactory
我要用 Yaml 做什么
由于构建脚本相同,但特定任务(例如 Java 编译器版本)可能会在不同版本中发生变化,因此我可以创建一个非常单一的 Yaml 脚本来管理所有版本。
然后我将合并 release/3.10.0
=> release/3.10.1
=> release/3.10.2
... release/3.11.2
通过合并冲突
个人经历
今晚我正在努力让 JUnit 测试工作,因为我还选择将我的测试框架向后移植到项目的旧版本。我承认一些测试会失败,因为较旧的和未维护的版本 包含 错误。对我来说,这是一种证明系统有效的方法。
确实,分支分支是个好主意,但我不得不在办公室使用 Bamboo 6
我们目前正在使用 bamboo 来构建和测试我们的软件。现在我们的构建计划只是一堆任务:执行这个 bat,执行那个 bat 等。使用 Bamboo UI.
创建碰巧 months/years 构建计划需要调整:
- 并行化作业
- 添加额外的工作
- 更改一些任务
但是当我们尝试构建旧版本的软件时,这会中断。一些脚本(从 bamboo 任务中调用)在旧版本中不存在。
在我以前的雇主那里,我们使用 Jenkins 管道,其中构建和测试的内容只是源代码库中的一个文件。
现在有了 bamboo,您似乎可以使用 Bamboo Specs。从我读到你创建规格文件,当你 运行 这个时,它将创建构建计划。但我没有看到随着时间的推移改变构建计划(改变步骤)的关系。
例如,开发的 Bamboo 规范用于构建所有计划分支(例如 Pull Requests)。所以如果你想改变 PullRequest 中的构建,你首先需要将它合并到 develop 中,develop 的 Bamboo Spec 更新了 Build Plan。合并前无法对此进行测试。
问题:如何在 Bamboo 中制定脚本化的构建计划,开发的每个分支都可以有其他可能的构建方式?
我们现在将其设置为:
- 构建计划'Product A':计划分支:开发,release_x,发布,y
- 构建计划'Product A PullRequest':计划分支:feature/*
问题:如何在 Bamboo 中制定脚本化构建计划?
要在 Bamboo 中制定脚本化构建计划,您必须使用 Bamboo 规范。由于您已经熟悉 Jenkins,因此 bamboo specs 的工作方式与 Jenkinsfile 完全一样,可以自动化您的管道。使用它的好处是它存在于您的源代码中,并且您在源代码中对此文件所做的更改会在触发 bamboo 构建时自动更改您的计划(管道)。 这就是我用竹子编写构建计划的方式:
- 我将 bamboo.yml 文件添加到我的存储库的根目录下。但目前,我使用 git 子树,我的竹子规格就在那里。但你不必这样做。下面link提供了一个简单的方法。
- Link 我对 bamboo 的回购
- 告诉 bamboo 在 repo 中扫描 bamboo 规格
- 提交并推送
如果我以后必须更改计划,我会编辑 bamboo 规格文件,然后提交并推送。
编辑: 7.0 支持:https://confluence.atlassian.com/bamboo/enhanced-plan-branch-configuration-996709304.html
旧答案:
我找到了 Atlassian 文档:https://jira.atlassian.com/browse/BAM-19620。他们称之为 'divergent plan branches'。 不支持,有一个功能请求。
截至 2019 年 4 月 15 日:
Atlassian Update – [11 April 2019] Hi everyone,
Thank you for your votes and thoughts on this issue.
We fully understand that many of you are dependent on this functionality.
After careful consideration, we've decided to prioritise [this feature] on Bamboo roadmap. We hope to start development after our current projects are completed.
Expect to hear an update on our progress within the next 6 months.
To learn more on how your suggestions are reviewed, see our updated workflow for server feature suggestions.
Kind regards,
Bamboo Team
我遇到了同样的问题,不幸的是不得不经历一个不愉快的选择
向后移植构建脚本
这不一定在任何地方都可行,但我设法让它在我的项目中工作。
想法是:将构建脚本视为 C#/Java interface
,或更好地视为 contract.
只要您的分支机构在构建软件方面没有提供重大更改,例如你的桌面应用程序变成了网络应用程序,或者你从 Ant 切换到 Gradle,你可以处理这个。
假设我的应用程序始终是一个 Web 应用程序,将作为 JFrog Artifactory 上的 jar 发布,我已经确定了以下所有维护版本通用的步骤:
- 使用
javac
构建所有模块的jar - 使用
gulp
构建Java脚本资源 - 运行 存储库中的 JUnit
- Baptize版本号通过棘手算法获得的工件
- 将工件推送到 JFrog Artifactory
所以我的想法是,我采用了我的 Ant 构建脚本并大部分重写了它,以便在不同版本的应用程序上执行相同的任务。作为练习,我开始对不再维护的旧版本进行更改。事实上,我的官方 Git 分支看起来像 release/x.y.z
,其中 semver 是 x.y.z.k
并且较新的 bugfix-builds 是从任何 x.y.z
版本的头部构建的。
所以我选择了 release/3.10.0
分支并重写了 Ant。我目前正在使用手动创建的 Bamboo 计划进行测试
Stage: Compile
ant clean ivy-retrieve compile jar #builds the jar in a job
ant gulp-install gulp-prod zip #creates javascript resources
Stage: Test
ant run-junit
Manual Stage: Release
ant baptize ivy-release #tags the artifact using ${bamboo.jira.version} and pushes to JFrog Artifactory
我要用 Yaml 做什么
由于构建脚本相同,但特定任务(例如 Java 编译器版本)可能会在不同版本中发生变化,因此我可以创建一个非常单一的 Yaml 脚本来管理所有版本。
然后我将合并 release/3.10.0
=> release/3.10.1
=> release/3.10.2
... release/3.11.2
通过合并冲突
个人经历
今晚我正在努力让 JUnit 测试工作,因为我还选择将我的测试框架向后移植到项目的旧版本。我承认一些测试会失败,因为较旧的和未维护的版本 包含 错误。对我来说,这是一种证明系统有效的方法。
确实,分支分支是个好主意,但我不得不在办公室使用 Bamboo 6