我希望人们可以通过我的Bamboo查询向我指出正确的方向。
我所在的公司有一台运行相当成功的现有Bamboo CI服务器(尽管是旧版本 - 2.6),我需要设置一个新版本。几乎完成了以前所有Bamboo工作的两个人现在已经离开了,所以我内心没有任何人可以求助于他们。
我希望我能描述一下手动过程,然后让某人建议自动化这个过程的最佳方法。
手动流程(所有在Windows部署服务器上):
批处理文件本身可以分为几个步骤:
我不确定这最适合我们的Bamboo服务器。我开始创建一个新计划,但当它询问使用哪个存储库时(我们使用的是两个服务器和六个存储库),我开始感到非常困惑!
如果我理解正确 - 我可能没有 - 我认为正常的做法是在Bamboo服务器上进行所有构建,然后在调用某些远程启动命令之前将文件移动到服务器上的正确位置。这是我需要做的吗?
即使有人能指出我对Bamboo的好导游,我也会非常感激。如果有人能够简单地解释这些概念,让我明白我需要学习什么才能实现,那就更好了!
非常感谢建议:)
答案 0 :(得分: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中的计划配置为run the script。
所以,让我们谈谈策略!
+我是否在Bamboo服务器上构建我的代码,并将其复制到远程Windows服务器?或者我是否在远程Windows服务器上构建它?
首先,您应该determine if your Bamboo license支持remote agents。登录到Bamboo,然后单击“管理”。然后向下滚动到左侧边距的“系统”菜单。单击“许可证详细信息”。 “支持的远程代理数量”下的值是否大于0?
如果是这样: 好极了!您可以在Windows部署服务器上install a remote agent,并使用capabilities将您的计划配置为在该远程代理上运行。这意味着当您在Bamboo中运行计划时,所有源代码检出/构建/脚本都将在Windows部署服务器上运行。你刚刚为自己节省了大量的工作!
如果不是: 您必须在Bamboo服务器上构建代码,然后将其传输到部署服务器。你需要弄清楚如何做以下事情:
如何将文件从Bamboo服务器传输到Windows服务器。您可能会考虑的一件事是将NFS文件共享一台服务器并将其安装在另一台服务器上。或者在任一台机器上设置FTP服务器。
如何从Bamboo服务器上执行Windows服务器上的命令,这样就可以运行DeployLocal.bat文件并启动JBoss。在Unix环境中,这对ssh来说相当容易。在Windows中 - 呃 - 也许你应该咨询一些Windows偷看?我以前能够成功地使用MobaSSH服务器在Windows机器上远程运行批处理文件,但是如果您的Bamboo机器是Unix,MobaSSH真的才有意义。
如何在构建后打包代码,以便将其从Bamboo服务器复制到Windows服务器。这可以像压缩maven构建的输出并在Windows服务器上解压缩一样简单。
如何将它们整合在一起:编写一个脚本来构建,打包,传输和解压缩代码,然后远程运行DeployLocal.bat和jboss脚本。
+如何让我的Bamboo计划检查多个存储库中的代码?
不幸的是,Bamboo 3.3是第一个允许作业从多个存储库中检出源代码的版本。这里有三个选项,从最好到最差排序:
Upgrade to a newer version of Bamboo。可能是一个痛苦的过程,因为你远远落后,但可能值得努力。有人最终必须升级它 - 现在比以后更好。
作弊svn:externals。在其中一个subversion存储库中创建一个新目录,并在其上设置svn:externals属性,并引用您需要Bamboo检出的六个存储库中的每一个。配置Bamboo以检查新目录 - 瞧,每个svn存储库都将自动检出。
想出解决这个限制的其他一些方法,例如编写一个脚本,为每个存储库运行一次svn客户端。
+这可能需要一段时间才能开始工作。
是。您一定要检查您的同事已经设置的所有计划的配置和脚本 - 他们可能已经为您完成了全部或大部分工作。
答案 1 :(得分:0)
如果您的(或其他开发人员)计划不支持远程代理,则解决方法是使用 tomcat manager (当然要加强它):