【发布时间】:2014-06-26 13:17:23
【问题描述】:
我目前正在我们的办公室设置构建服务器,我想知道对此的最佳做法是什么。我知道每种情况都需要不同的方法,并且有一百万种方法可以实现相同的目标,但是由于我是 Jenkins 的新手,并且通常是构建服务器的概念,所以我想知道我这样做是否“正确” '。
我们公司专注于为各种客户建立网站,使用各种平台,如 WordPress 或 Magento。我现在有以下设置:
我们将更改推送到 Git 中的 master 或 staging-branch。 Jenkins 会轮询这些分支,并在检测到更改时执行以下操作:
- 从 Git 中拉取存储库(本例中为
master) - 签出名为
build-master的分支 - 将此分支重置为
origin/master - 如果找到
package.json,则执行npm install。 - 如果找到
Gruntfile.js,则执行grunt build。 - (这里有其他东西的空间,比如 phpunit 或 casperJS 测试)
- 提交更改并将其推送回
origin/build-master。 - 执行
cap build-master deploy让Capistrano 处理远程服务器上的部署。
现在我想知道这是否是使用构建服务器的“正确”方式。我遇到了一些逻辑问题。喜欢:
供应商软件 例如。例如,当我有各种带有 Bower 的 JS 库时(位于被 git 忽略的 js/vendor-文件夹中),我可以将它们连接并 uglify 成一个缩小的 JS 文件,以便它们 git 提交到 build-master-repository(对于卡皮斯特拉诺)。但是当我有 PHP 库(例如使用 Composer)时,我不确定如何处理这个问题。这些位于 git-ignored php/vendor-文件夹中,但它们需要包含在 build-master-branch 中,以便部署在实时服务器上。目前我正在通过向我的存储库添加一个.gitignore.build 来执行此操作,其中包括php/vendor 文件夹,并在提交并推送到origin/build-master 之前用这个覆盖现有的.gitignore。
和/或:
编译文件。当我不想包含某些文件(例如从 SASS 生成的 CSS 文件)时,我将它们放在 .gitignore 中。但同样,当 Capistrano 将要部署它时,我希望将编译、连接和缩小的 CSS 文件放在我的存储库中,否则它不会放在我的生产服务器上。
谁能告诉我我是否按照“应该”的方式构建和部署?还是我在这里完全把它复杂化了?我真的很感兴趣在这方面有更多经验的人如何在他们的构建过程中使用 Jenkins、Grunt、Bower、Composer、Capistrano 等。
【问题讨论】:
-
我想知道的一件事是提交二进制文件。既然你这样做了,我想知道你是否努力确保开发人员的结帐保持苗条,没有二进制文件?
标签: git jenkins capistrano build-server