【问题标题】:Node.js and TeamCityNode.js 和 TeamCity
【发布时间】:2013-02-23 20:39:05
【问题描述】:
我有以下问题:
在我们公司,我们开始了一个新的 Web 项目,其中包含很多 .js .css 文件。
我们公司是一家 Java 公司,这意味着所有的开发都是在:Java/Maven/Team City 中完成的。
由于公司已经在使用 TeamCity,我们也想将它用于 Web 构建,我们正尝试在构建过程中引入 Node.js 和 GruntJs。我想知道是否有人像 TeamCity 中的跑步者一样有设置/配置 Node.js 的经验?
最后我们想要“提交”一个更改然后构建,这个构建将使用 Node.js 运行器完成。我为 TeamCity 找到了以下 plugin。
任何帮助将不胜感激
【问题讨论】:
标签:
node.js
plugins
gruntjs
npm
teamcity
【解决方案1】:
我在 Web 项目中使用 GruntJS 和 TeamCity,其中包含几个站点,例如 API、用户和管理员门户以及单元/Smock/集成测试。经过几次原型设计后,我最终决定将所有逻辑放在一个 GruntJS 文件中,以分别构建项目的每个部分。
为此,我向源存储库添加了一个新项目,仅用于部署。在该项目中,我有我的基本 Gruntfile.js,它只是项目每个部分的子 Grunt 构建过程的入口点。我可以通过 Grunt-CLI 将参数传递给 base 以选择构建目标,例如: grunt --target=api (注意:我也传递版本/修订版和其他东西,但为简单起见,我不会深入这个答案)
然后我创建了一个 shell 脚本,它使用所有可能的参数按顺序运行 grunt。最后,在 TeamCity 中创建了构建配置的一个步骤来运行该 shell 脚本!
通过这种方式,我获得了很多好处,例如:
- 将所有部署逻辑置于源代码控制中,以提高可维护性。
- 每个开发人员都可以访问它,甚至可以在本地机器上构建
- TeamCity 集成变得如此简单,您还可以轻松地将其移至其他 CI 平台!
如果您想将每个项目放在单独的存储库中,那么您可以使用基本 GruntJS 设置一个部署存储库,并为其他存储库创建子模块。