【问题标题】:How to conditionally skip maven tests on Jenkins for CI如何有条件地跳过 Jenkins for CI 的 Maven 测试
【发布时间】:2014-12-12 09:35:04
【问题描述】:

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

构建作业从 gitlab masterbranch 签出文件,使用 clean install 构建项目,并保存工件。

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

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

谢谢!

【问题讨论】:

  • css, js, html, properties这些东西制作一个单独的模块怎么样?
  • @khmarbaise,我们在同一个 GitLab 存储库的同一个“母亲”项目中有多个模块。对任何模块的任何更改都会触发 Maven 构建。

标签: git maven testing jenkins continuous-integration


【解决方案1】:

如果您使用Jenkins GIT plugin,那么您可以在构建中使用 GIT_PREVIOUS_COMMIT 和 GIT_COMMIT 变量引用当前和先前构建的最后提交。将其与 git diff 命令结合使用,以获取自上次构建以来所有修改文件的列表:

git diff --name-only $GIT_PREVIOUS_COMMIT $GIT_COMMIT

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

【讨论】:

  • 感谢您的回答。是否有一个环境变量不仅包括以前的提交,还包括合并请求中的所有提交?
  • @Jason “合并请求” 到底是什么意思? git-merge 中没有提到 “请求”。无论如何,no, there isn't.
  • @GeriBroser 在 GitLab 中,在 git push origin 从 dev 分支提交几次之后,开发人员可以向 master 提交“合并请求”。在审阅者批准合并请求后,GitLab 将提交合并到 master 并 ping Jenkins 以启动构建。
  • @Jason 我明白了。谢谢你的解释。如果合并请求中的提交在主 GIT_PREVIOUS_COMMIT 上是连续的,则应该是您想要的:"the previous built commit from the same branch" 或者 GitLab 中可能有一个选项到squash the merge commits?
【解决方案2】:

按照@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 脚本返回值的条件构建步骤中使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-14
    • 1970-01-01
    • 2014-09-03
    • 2021-04-30
    • 1970-01-01
    相关资源
    最近更新 更多