git - 使用 Grunt 构建和使用 Capistrano 部署的 Jenkins 最佳实践是什么?

标签 git jenkins capistrano build-server

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

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

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

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

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

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

和/或:

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

谁能告诉我我是否按照“应该”的方式构建和部署?还是我在这里对我来说完全过于复杂了?我真的很想知道在这方面有更多经验的人如何在他们的构建过程中利用 Jenkins、Grunt、Bower、Composer、Capistrano 等。

最佳答案


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

关于git - 使用 Grunt 构建和使用 Capistrano 部署的 Jenkins 最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24431629/

相关文章:

git - 如何从 Git 中的 "fatal: Out of memory? mmap failed: Cannot allocate memory"恢复?

Jenkins 核心 API 文档 : How to navigate to find detailed properties and methods?

ruby-on-rails - 部署新代码后,如何让 AWS Auto-scaling Group 中的所有实例保持更新?

capistrano - 部署+重启后 unicorn 继续使用旧代码

git - 在 git merge 期间如何接受特定文件夹中的所有远程文件?

git tag -l 不删除已删除的标签

Jenkins - 共享库 CpsCompilationErrorsException - 无法解析类

jenkins - 如何在 jenkins 管道作业中运行 docker 命令

ruby-on-rails - 如何在服务器启动时运行 capistrano 任务?

ruby-on-rails-3 - Capistrano 3 运行每个命令两次(新安装)- 配置问题