maven - Jenkins pipeline、bitbucket hook 和 maven 发布插件无限循环

标签 maven jenkins bitbucket maven-release-plugin jenkins-pipeline

我没有找到任何关于这方面的信息,所以我希望你们能帮助我

我有一个托管在 bitbucket 中的 Maven 项目,该项目有一个指向 someurl/bitbucket-hook/的 BitBucket WebHook,此 Hook 会触发由具有以下结构的管道定义的项目的构建:

node {
   stage 'Checkout'
   git url: 'https:...'

   def mvnHome = tool 'M3'

   #Various stages here
   ...
   stage 'Release'
   sh "${mvnHome}/bin/mvn -B clean install release:prepare release:perform release:clean"
}

问题是maven发布插件将更改推送到BitBucket,这再次触发jenkins脚本,造成构建的无限循环,有没有办法防止这种情况?

我尝试在 Jenkins 中设置一段安静时间,但没有成功

最佳答案

从我的角度来看,您应该有特定的构建和发布作业,并且应该手动触发发布作业。无论如何,如果出于某种原因让它们参与工作,您可以检查上次提交的消息:

node {
  git 'https...'
  sh 'git log -1 > GIT_LOG'
  git_log = readFile 'GIT_LOG'
  if (git_log.contains('[maven-release-plugin]')) {
    currentBuild.result = 'ABORTED'
    return
  }
  ... // continue with release or whatever

}

关于maven - Jenkins pipeline、bitbucket hook 和 maven 发布插件无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38270738/

相关文章:

java - 在 maven 测试运行中执行时,使用 Spring 注释进行测试会导致 ClosedByInterruptException

mercurial - 如何在BitBucket上使用Mercurial修补程序队列

java - Maven有Java持续测试插件吗?

Java Maven 项目 "Source option 5 is no longer supported. Use 6 or later."

docker - 将 ssh-agent 传递给 dockerfile 以安装私有(private)存储库模块

jenkins - 在 Jenkins 管道超时后重试 - 解决方法

android - 为什么 Jenkins Android 模拟器插件会在每个构建中重新创建我的模拟器快照?

configuration - 是否可以针对bitbucket管道中不同的更改文件触发不同的任务?

azure - 一次从一个 Bitbucket 部署到不同 Web 应用程序中的代码

java - 断点未在 maven 多模块 Web 应用程序的 eclipse 中注册