2014-10-08 45 views

回答

6

我们有一个工作系统可以自动执行此操作;我无法分享代码,但我可以总结一下。

  1. 我们维持git的项目,我们的deployables在一个单独的混帐回购协议(每詹金斯的工作之一,例如project-devproject-qa等)。
  2. 我们将我们的依存关系列表维护在cpanfile中,并使用carton install使其保持最新状态。
  3. 创建项目后,每当依赖关系发生变化时,我们提交cpanfile.snapshot
  4. 詹金斯的工作检查了源代码回购并运行carton install --deployment(实际上它在每个回购中运行一个脚本,加上该项目的任何其他必要的构建任务)。
  5. 测试等运行。
  6. 如果这是第一个jenkins构建,它会将整个树(包括由纸箱创建的local目录,但不包括.git)复制到一个新目录git init,创建一个新的提交并将其推送到部署回购。
  7. 否则,它会检查出部署库中最后一个成功构建的新目录,rsync s构建树的内容(不包括.git)到部署树上,并提交并推送为新的建立。

在所有情况下,构建都会作为以内部版本号命名的分支推送到部署回购。然后,部署工具可以向jenkins询问成功构建的列表,并通过让服务器在部署回购结算中执行git fetch ; git reset --hard origin/$BUILDNUMBER来部署构建。

+0

感谢你的回答,这绝对是我们需要采取的方向。 – NickJHoran 2014-10-09 08:45:07