我们使用GitLab和Jenkins作为CI。每当合并请求被批准到master分支时,GitLab都会向Jenkins发送一个请求,以运行一个构建作业,在成功完成后,该作业将部署到tomcat。
build作业从gitlab master分支检出文件,使用clean install构建项目,并保存工件。
在很多情况下,提交是属性文件更新,html视图文件更新,而我们实际上并没有对这些文件进行任何测试。
我知道在mvn clean install期间有一个跳过所有测试的切换,但是如果提交只包括css、js、properties、html等文件,有没有办法有条件地跳过测试?
谢谢!
发布于 2014-10-17 05:55:31
如果您使用的是Jenkins GIT plugin,那么您可以在build中使用GIT_PREVIOUS_COMMIT和GIT_COMMIT变量引用当前和以前的build last commits。将它与git diff命令结合使用,可以获得自上次构建以来修改过的所有文件的列表:
git diff --name-only $GIT_PREVIOUS_COMMIT $GIT_COMMIT接下来,使用grep命令,您可以检查是否有任何文件的扩展名不是您提到的文件。如果是这样,您可以执行正确的Maven命令行。
发布于 2014-10-17 05:47:49
遵循@PiotrOktaba's answer (命令中的换行符以提高可读性):
~/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在提交→跳过测试中,除了给定的文件之外,没有其他文件。
~/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脚本返回值的条件构建步骤中使用它。
https://stackoverflow.com/questions/26414215
复制相似问题