3

I'm hoping people might be kind enough to point me in the right direction with a Bamboo query I have, please.

The company I'm at has an existing Bamboo CI server that's running quite successfully (despite being an old version - 2.6) and I need to set up a new build. The two people who've done almost all of the previous Bamboo work have now left, and so I don't really have anyone internally to turn to for advice.

I was hoping I could describe the manual process, and then have someone suggest the best way to automate this.

Manual process (all on the Windows deployment server):

  1. Run "svn update --force" on six separate working directories, which in turn use two separate Subversion repositories
  2. Run "mvn clean install" on all six directories, with one of them needing an extra -Duser.timezone parameter passed in, and which sometimes needs running two or three times before it builds successfully
  3. Run a "DeployLocal.bat" batch file
  4. Start two JBOSS instances, by executing their "bin\run.bat" startup files

The batch file itself can be broken down into several steps:

  1. Do a Maven build of some of the projects (yes, redundant after the above)
  2. Copy some build subdirectories to the deployment server location
  3. Set up self-signed SSL certificates and keystores for the deployment servers
  4. Copy lots more files into the right place in the deployment server directories

I'm not sure how this best works with our Bamboo server. I started creating a new plan, but when it asked which repository to use (we're using two servers and six repositories) I started to get mightily confused!

If I understand correctly - which I may not - I believe that the normal thing to do would be to do all the building on the Bamboo server and then move files to the right place on the servers, before calling some remote startup command. Is this what I need to do here?

Even if someone can point me to a good guide to Bamboo, I'd be very appreciative. If someone can explain the concepts briefly enough for me to understand what specifically I need to learn to achieve, then that'd be even better!!

Advice much appreciated :)

4

2 回答 2

13

好吧,我没有很多在 Windows 上运行 Bamboo 的经验,但我会试一试 :) 首先请允许我将您引导至 Bamboo 管理员指南 2.6 版:

https://confluence.atlassian.com/display/BAMBOO026/Bamboo+Administrator%27s+Guide

查看有关计划代理的部分。

使用您拥有的 Bamboo 版本,计划基本上由脚本组成。它可以是 Ant 脚本或 Maven 脚本或批处理或 bash 脚本。但你只能得到一个。Bamboo 的更高版本允许您运行多个脚本——您真的应该考虑升级。

但是,如果你绝对不能升级,你需要编写一个单一的、整体的脚本来运行每个 maven 任务,然后运行 ​​DeployLocal.bat 文件,然后启动两个 JBoss 实例。(Bamboo 会为您处理源代码签出位。)然后您必须在 Bamboo 中配置您的计划以运行脚本

所以,让我们谈谈策略!


+ 我是否在 Bamboo 服务器上构建我的代码,并将其复制到远程 Windows 服务器?还是我在远程 Windows 服务器上构建它?

首先,您应该确定您的 Bamboo 许可证是否支持远程代理。登录到 Bamboo 并单击管理。然后向下滚动到左侧边缘的系统菜单。单击“许可证详细信息”。“支持的远程代理数量”下的值是否大于 0?

如果是这样: 耶!您可以在 Windows 部署服务器上安装远程代理,并使用功能配置您的计划以在该远程代理上运行。这意味着当您在 Bamboo 中运行计划时,所有源代码检查/构建/脚本都将在 Windows 部署服务器上运行。您刚刚为自己节省了大量工作!

如果不是: 您必须在 Bamboo 服务器上构建代码,然后将其传输到部署服务器。您需要弄清楚如何执行以下操作:

  1. 如何将文件从 Bamboo 服务器传输到 Windows 服务器。您可能会考虑的一件事是在一台服务器上设置 NFS 文件共享并将其安装在另一台服务器上。或者在任何一台机器上设置一个 FTP 服务器。

  2. 如何从 Bamboo 服务器在 Windows 服务器上执行命令,以便运行 DeployLocal.bat 文件并启动 JBoss。在 Unix 环境中,使用 ssh 很容易做到这一点。在 Windows 中——嗯——也许你应该咨询一些 Windows 窥视者?我之前已经能够成功地使用MobaSSH服务器在 Windows 机器上远程运行批处理文件,但 MobaSSH 真的只有当你的 Bamboo 机器是 Unix 时才有意义。

  3. 如何在构建后打包代码,以便将其从 Bamboo 服务器复制到 Windows 服务器。这可以像压缩 maven 构建的输出并在 Windows 服务器上解压缩一样简单。

  4. 如何将它们整合在一起:编写一个脚本来构建、打包、传输和解包您的代码,然后远程运行 DeployLocal.bat 和 jboss 脚本。


+ 如何让我的 Bamboo 计划从多个存储库中签出代码?

不幸的是,Bamboo 3.3 是第一个允许作业从多个存储库中检出源代码的版本。您在这里有三个选项,从最好到最差排序:

  1. 升级到更新版本的 Bamboo。可能是一个痛苦的过程,因为你落后太多,但可能值得付出努力。最终有人将不得不升级它——现在比以后更好。

  2. 用svn:externals作弊。在您的 subversion 存储库中创建一个新目录,并在其上设置 svn:externals 属性,并引用您需要 Bamboo 签出的六个存储库中的每一个。配置 Bamboo 以检出您的新目录——瞧,这些 svn 存储库中的每一个都将被自动检出。

  3. 想出一些其他的技巧来解决这个限制,例如编写一个脚本,为每个存储库运行一次 svn 客户端。


+ 这可能需要一段时间才能开始工作。

是的。您绝对应该检查您的同事已经设置的所有计划的配置和脚本——他们可能已经为您完成了所有或大部分工作。

于 2012-07-18T00:38:19.920 回答
0

如果您(或其他开发人员)的计划不支持远程代理,解决方法是使用tomcat 管理器(当然要加强它):

  • 所以在你的竹服务器上做你的 svn 或 git checkout,无论是在 linux 还是 windows
  • mvn clean install 在同一台服务器上
  • 使用竹作业通过 scp 复制工件
  • 使用 tomcat 管理器部署战争
  • 对于本地windows服务器上的其他批处理文件,可以通过powershell脚本或任务调度器触发
于 2015-11-13T04:39:17.073 回答