我目前正在我们的办公室设置一个构建服务器,我想知道这是什么最好的做法.我知道每种情况都要求采用不同的方法,并且有一百万种方法可以实现相同的目标,但由于我是Jenkins的新手和一般的构建服务器的概念,我想知道我是否这样做'对了".
我们公司专注于为各种客户构建网站,如WordPress或Magento等各种平台.我现在有以下设置:
我们将更改推送到Git中的master或staging-branch.Jenkins轮询这些分支,并在检测到更改时执行以下操作:
从Git中拉出存储库(master
在此示例中)
签出一个叫做的分支 build-master
将此分支重置为 origin/master
是否找到了npm install
a package.json
.
是否找到了grunt build
a Gruntfile.js
.
(这里有其他东西的空间,如phpunit或casperJS测试)
提交更改并将其推回origin/build-master
.
执行a cap build-master deploy
让Capistrano处理远程服务器上的部署.
现在我想知道这是否是使用构建服务器的"正确"方式.我遇到了一些逻辑问题.喜欢:
例如供应商软件.当我有各种带有Bower的JS库(它们位于git-ignored js/vendor
-folder中)时,我可以将它们连接起来并将其uglify为一个缩小的JS文件,这样它们就可以将它们提交到build-master
-repository(对于Capistrano).但是当我有PHP库(例如使用Composer)时,我不知道如何处理这个问题.它们位于git-ignored php/vendor
-folder中,但它们需要包含在-branch中,build-master
以便在实时服务器上部署get.目前我这样做是通过向.gitignore.build
我的存储库添加一个包含php/vendor
-folder的存储库,并.gitignore
在提交和推送之前用这一个覆盖现有的存储库origin/build-master
.
和/或:
编译文件.当我不想包含一些文件(比如从SASS生成的CSS文件)时,我把它们放在了.gitignore
.但同样,当Capistrano要部署它时,我希望编译的,连接的和缩小的CSS文件在我的存储库中,否则它不会放在我的生产服务器上.
任何人都可以告诉我,我是否应该以它应该的方式构建和部署?或者我在这里完全过于复杂了?我真的很感兴趣那些有更多经验的人在他们的构建过程中如何利用Jenkins,Grunt,Bower,Composer,Capistrano等.