8

我目前正在我们的办公室设置构建服务器,我想知道对此的最佳做法是什么。我知道每种情况都需要不同的方法,并且有一百万种方法可以实现相同的目标,但是由于我是 Jenkins 的新手,并且总体上是构建服务器的概念,所以我想知道我这样做是否正确'。

我们公司专注于为各种客户建立网站,使用各种平台,如 WordPress 或 Magento。我现在有以下设置:

我们将更改推送到 Git 中的 master 或 staging-branch。Jenkins 轮询这些分支并在检测到更改时执行以下操作:

  • 从 Git 中提取存储库(master在本例中)
  • 签出一个名为的分支build-master
  • 将此分支重置为origin/master
  • npm install如果找到a则执行 a package.json
  • grunt build如果找到a则执行 a Gruntfile.js
  • (这里有其他东西的空间,比如 phpunit 或 casperJS 测试)
  • 提交更改并将其推回origin/build-master.
  • 执行 acap build-master deploy让 Capistrano 处理远程服务器上的部署。

现在我想知道这是否是使用构建服务器的“正确”方式。我遇到了一些逻辑问题。喜欢:

例如供应商软件。例如,当我有各种带有 Bower 的 JS 库(位于 git-ignored -js/vendor文件夹中)时,我可以将它们连接并 uglify 成一个缩小的 JS 文件,以便它们 git 提交到build-master-repository(用于 Capistrano)。但是当我有 PHP 库(例如使用 Composer)时,我不确定如何处理这个问题。这些位于 git-ignored -php/vendor文件夹中,但它们需要包含在 -branch 中,build-master以便部署在实时服务器上。目前我正在通过向.gitignore.build我的存储库添加一个来做到这一点,其中包括- 文件夹,并在提交和推送到之前用这个php/vendor覆盖现有的。.gitignoreorigin/build-master

和/或:

编译文件。当我不想包含某些文件(例如从 SASS 生成的 CSS 文件)时,我将它们放在.gitignore. 但同样,当 Capistrano 将要部署它时,我希望编译、连接和缩小的 CSS 文件位于我的存储库中,否则它不会放在我的生产服务器上。

谁能告诉我我是否正在以“应该”的方式构建和部署?还是我在这里完全把它复杂化了?我真的很感兴趣有更多经验的人如何在他们的构建过程中使用 Jenkins、Grunt、Bower、Composer、Capistrano 等。

4

1 回答 1

0


我正在寻找完全相同的响应。我处于同样的情况,想知道如何使用最佳启动配置来完成。
由于您想知道使用 grunt 进行部署,因此有本教程对您有用,我希望这会给您一些初步的想法:https ://weluse.de/blog/continuous-deployment-with-yeoman- and-jenkins.html
另外,如果您对当前项目有任何反馈,我很感兴趣。

于 2014-08-18T11:54:43.017 回答