使用Bamboo在远程Windows服务器上构建和部署

Mar*_*tin 3 java jboss bamboo maven

我希望人们可以通过我的Bamboo查询向我指出正确的方向.

我所在的公司有一个运行相当成功的现有Bamboo CI服务器(尽管是旧版本 - 2.6),我需要设置一个新版本.几乎完成了之前所有Bamboo工作的两个人现在已经离开了,所以我内心没有任何人可以求助于建议.

我希望我能描述一下手动过程,然后让某人建议自动化这个过程的最佳方法.

手动进程(所有在Windows部署服务器上):

  1. 在六个单独的工作目录上运行"svn update --force",这些目录又使用两个单独的Subversion存储库
  2. 在所有六个目录上运行"mvn clean install",其中一个目录需要传入额外的-Duser.timezone参数,有时需要运行两到三次才能成功构建
  3. 运行"DeployLocal.bat"批处理文件
  4. 通过执行"bin\run.bat"启动文件启动两个JBOSS实例

批处理文件本身可以分为几个步骤:

  1. 做一些项目的Maven构建(是的,在上面之后是多余的)
  2. 将一些构建子目录复制到部署服务器位置
  3. 为部署服务器设置自签名SSL证书和密钥库
  4. 将更多文件复制到部署服务器目录中的正确位置

我不确定这最适合我们的Bamboo服务器.我开始创建一个新的计划,但当它询问使用哪个存储库时(我们使用的是两个服务器和六个存储库),我开始变得非常困惑!

如果我理解正确 - 我可能没有 - 我认为正常的做法是在Bamboo服务器上进行所有构建,然后在调用一些远程启动命令之前将文件移动到服务器上的正确位置.这是我需要做的吗?

即使有人能指出我对Bamboo的良好指导,我也会非常感激.如果有人能够简单地解释这些概念,让我明白我需要学习什么才能实现,那就更好了!

建议非常感谢:)

cho*_*ver 13

好吧,我没有很多使用Windows运行Bamboo的经验,但我会给出一个镜头:)请允许我首先指导您使用版本2.6的Bamboo管理员指南:

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机器上远程运行批处理文件,但是如果您的Bamboo机器是Unix,MobaSSH真的才有意义.

  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. 想出一些其他的hack来解决这个限制,例如编写一个脚本,为每个存储库运行一次svn客户端.


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

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

  • 谢谢.这是一个非常丰富的答案!! :) (2认同)