首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何有条件地跳过Jenkins for CI上的maven测试

问如何有条件地跳过Jenkins for CI上的maven测试
EN

Stack Overflow用户
提问于 2014-10-17 05:29:25
回答 2查看 2.1K关注 0票数 3

我们使用GitLab和Jenkins作为CI。每当合并请求被批准到master分支时,GitLab都会向Jenkins发送一个请求,以运行一个构建作业,在成功完成后,该作业将部署到tomcat。

build作业从gitlab master分支检出文件,使用clean install构建项目,并保存工件。

在很多情况下,提交是属性文件更新,html视图文件更新,而我们实际上并没有对这些文件进行任何测试。

我知道在mvn clean install期间有一个跳过所有测试的切换,但是如果提交只包括css、js、properties、html等文件,有没有办法有条件地跳过测试?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2014-10-17 05:55:31

如果您使用的是Jenkins GIT plugin,那么您可以在build中使用GIT_PREVIOUS_COMMIT和GIT_COMMIT变量引用当前和以前的build last commits。将它与git diff命令结合使用,可以获得自上次构建以来修改过的所有文件的列表:

代码语言:javascript
复制
git diff --name-only $GIT_PREVIOUS_COMMIT $GIT_COMMIT

接下来,使用grep命令,您可以检查是否有任何文件的扩展名不是您提到的文件。如果是这样,您可以执行正确的Maven命令行。

票数 2
EN

Stack Overflow用户

发布于 2014-10-17 05:47:49

遵循@PiotrOktaba's answer (命令中的换行符以提高可读性):

代码语言:javascript
复制
~/git/test  (master)$ git diff --name-only $GIT_PREVIOUS_COMMIT $GIT_COMMIT
test.txt

~/git/test  (master)$ git diff --name-only $GIT_PREVIOUS_COMMIT $GIT_COMMIT |
    grep -vE '.*\.css|.*\.js|.*\.properties|.*\.html|.*\.txt' | wc -l
      0

在提交→跳过测试中,除了给定的文件之外,没有其他文件。

代码语言:javascript
复制
~/git/test  (master)$ git diff --name-only $GIT_PREVIOUS_COMMIT $GIT_COMMIT
test.java
test.txt

~/git/test  (master)$ git diff --name-only $GIT_PREVIOUS_COMMIT $GIT_COMMIT |
    grep -vE '.*\.css|.*\.js|.*\.properties|.*\.html|.*\.txt' | wc -l 
      1

提交→中存在与给定文件不同的文件,请勿跳过测试。

在检查Bash脚本返回值的条件构建步骤中使用它。

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

https://stackoverflow.com/questions/26414215

复制
相关文章

相似问题

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