首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Gulp、Maven和Jenkins组织完整的构建管道,直至集成测试?

问如何使用Gulp、Maven和Jenkins组织完整的构建管道,直至集成测试?
EN

Stack Overflow用户
提问于 2014-09-16 09:31:00
回答 4查看 26.6K关注 0票数 30

我有一个项目:

  • 具有一些有趣的构建过程的JS客户端。这包括编译CSS、缩小JS和CSS、生成和处理HTML以及其他一些步骤。像Grunt或Gulp这样的Node工具在这方面做得很好。
  • Java服务器,即部署在Tomcat上的WAR。它包括这些资产以及所有Java代码。它有各种各样的测试:单元测试,可以实例化DAO并与DB对话的集成测试,以及与运行在Tomcat上的应用程序对话的端到端API测试。
  • 用量角器进行端到端测试。如果您不熟悉,这是包装Selenium的另一个Node工具。

我如何以一种理智、健壮和自动化的方式组织整个过程?

目前我拥有的是Gulp和Maven,Maven基本上拥有整个流程。

  1. 它使用antrun调用生成源中的Gulp资产生成(doh,第三个构建工具!)。
  2. 它运行常规Java构建。
  3. 它从我的战事开始,在前整合测试。
  4. 它运行Java E2E测试,与使用故障安全插件的tomcat对话。
  5. 它再次用antrun调用Gulp,这一次是进行量角器测试。
  6. 在后整合测试中关闭Tomcat。
  7. 它应该在验证中验证测试结果。

这类工作,除了Maven通常是非常僵化的,我觉得我走得太远了。用antrun来称呼Gulp是一个丑陋的诡计。很难控制这些步骤之间的依赖关系并监视它们的结果。在同一阶段很难控制事物的秩序。故障安全验证似乎不处理Gulp生成的外部JUnit报告文件。我可以继续。

我想知道我是否应该在我的构建服务器(Jenkins)中做更多的事情,也许使用构建管道或参数化触发器--但我从来没有这样做过,我也不确定这是否真的更好。

那么,您将如何实现它呢?

EN

回答 4

Stack Overflow用户

发布于 2014-09-18 21:35:27

根据我的经验,前端maven插件是这种构建/部署过程中最好的插件。https://github.com/eirslett/frontend-maven-plugin。这就是我对Grunt使用它的方式,但它也支持Gulp。

代码语言:javascript
复制
<plugin>
    <groupId>com.github.eirslett</groupId>
    <artifactId>frontend-maven-plugin</artifactId>
    <version>...</version>

    <!-- optional -->
    <configuration>
        <workingDirectory>src/main/frontend</workingDirectory>
    </configuration>

   <execution>
    <id>grunt build</id>
    <goals>
        <goal>grunt</goal>
    </goals>

    <!-- optional: the default phase is "generate-resources" -->
    <phase>generate-resources</phase>

    <configuration>
        <!-- optional: if not specified, it will run Grunt's default
        task (and you can remove this whole <configuration> section.) -->
        <arguments>build</arguments>
    </configuration>
</execution>
</plugin>

需要注意的一点是,它将下载正在运行的系统的节点,因此,如果您在构建服务器上有不同的操作系统,则需要确保您已签入版本控制的版本,您的本地版本(对我来说,OSX)必须维护到您的项目的本地版本。

票数 32
EN

Stack Overflow用户

发布于 2014-09-16 21:38:34

我会试着建造一条可怜人的管道。

  1. 让咕噜/吞咽先做好它的工作(处理资产、运行前端测试等等-准备包含在WAR中的工件)。当此步骤失败时,整个构建失败(资产生成或测试)。
  2. 使用步骤1中创建的资产运行常规maven构建生成WAR文件,它将使用常规WAR文件运行自己的测试集。不需要知道什么是咕哝/吞咽的东西。

然后,您将有两个地方,例如运行测试(前端,由咕噜/吞咽运行,后端由maven),但配置正确的记者将让CI服务器检测所有它们(我们使用TeamCity,它处理它很好)。

把它写好一点,它应该比多次调用节点更好。或者,您可以从maven构建中运行第一步,但可能很难控制内容。

票数 1
EN

Stack Overflow用户

发布于 2015-09-02 14:40:02

这个项目大约有2年的历史,但它做了很多你正在寻找的东西。

https://github.com/pankajtandon/PointyPatient/blob/master/pointy-web/pom.xml

做检查父pom,它基本上运行所有的子项目一起从网络到域到回购和失败,如果任何(茉莉花或SpringMVC或SpringServices测试)失败。它也为服务器端部署构建了一场战争。

这是预量角器,所以这将是一个很好的补充。同样,前端maven插件现在看起来也是这个工作的工具。

潘卡杰

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25865251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档