Jenkins - 构建循环

标签 jenkins build infinite-loop

解决方案
配置要构建的分支时,删除通配符 *:*/master只是master
此错误仅在 GIT SCM 与 JOB 相关时发生。
例如:我的日常工作是构建一个 Android 项目。
首先我认为这是一个 cron 问题,目前我使用 50 10 * * *,但我尝试过 H 10 * * * 没有任何成功。当时机成熟时,它总是构建作业(失败或成功)并将另一个作业排队......等等......
最后运行时间为 2015 年 5 月 22 日星期五上午 10:01:58 BRT;下次运行时间为 2015 年 5 月 23 日星期六上午 10:01:58 BRT。
即使是带有参数的构建,它每次都会排队另一个作业。
所以它永远停留在构建循环中。

配置:

  • Jenkins 版1.614。
  • Ubuntu 14.04.2 LTS(GNU/Linux 3.13.0-46-generic x86_64)
  • GIT 客户端插件:1.17.1
  • GIT 插件:2.3.5

  • 控制台输出:
    Started by an SCM change
    Building in workspace .../jobs/PROJECT_NAME/workspace
     > git rev-parse --is-inside-work-tree # timeout=10
    Fetching changes from the remote Git repository
     > git config remote.origin.url ssh://GIT_ADDRESS/ # timeout=10
    Cleaning workspace
     > git rev-parse --verify HEAD # timeout=10
    Resetting working tree
     > git reset --hard # timeout=10
     > git clean -fdx # timeout=10
    Fetching upstream changes from ssh://GIT_ADDRESS/
     > git --version # timeout=10
     > git -c core.askpass=true fetch --tags --progress ssh://GIT_ADDRESS/ +refs/heads/master:refs/remotes/origin/master
     > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
     > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
    Multiple candidate revisions
    Scheduling another build to catch up with PROJECT_NAME
    Checking out Revision e6d726c2d31cb0d7e6fad4362ee85e6fac1712c6 (refs/remotes/origin/master)
     > git config core.sparsecheckout # timeout=10
     > git checkout -f e6d726c2d31cb0d7e6fad4362ee85e6fac1712c6
     > git rev-list e6d726c2d31cb0d7e6fad4362ee85e6fac1712c6 # timeout=10
    [Gradle] - Launching build.
    [android] $ gradle clean build assemble
    ...
    
    也许问题是这样的?
     > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
     > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
    Multiple candidate revisions
    Scheduling another build to catch up with PROJECT_NAME
    

    构建循环:
    the build loop

    作业配置:
    Job config

    全局配置:
    Global config

    最佳答案

    查看控制台日志的开头,包括您手动启动的作业和下一个自动排队的作业。

    在控制台日志的开头,它给出了触发构建的原因,例如 09:46:05 Started by an SCM change16:06:58 Started by user Slav .请在问题中添加 的开头两个控制台日志。

    编辑:
    现在我们知道 Jenkins 检测到 SCM 更改触发器,我们可以进一步推测导致此行为的原因是某种 SCM 提交后 Hook ,或者另一个脚本激活向 Jenkins 发送请求。

    如果未启用 SCM 轮询,则提交后 Hook 不应该工作,但没有其他意义,所以让我们调查一下这个途径。添加 /pollingLog/到“由 SCM 更改”触发的内部版本号的内部版本 URL。有可能什么都找不到,但如果有,但让我们确定一下。

    接下来,如果可能,将 Jenkins 绑定(bind)到不同的 IP 地址和/或端口。如果存在触发二次构建的“流氓”脚本,它们将无法适应更改的地址。

    编辑 2:
    中似乎有一个错误git client plugin 本身,它是 已在版本 1.6.2 中修复.请检查您的 git 插件的版本。
    来源:https://issues.jenkins-ci.org/browse/JENKINS-10767https://issues.jenkins-ci.org/browse/JENKINS-20286

    关于 Jenkins - 构建循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30403125/

    相关文章:

    continuous-integration - Jenkins 控制台输出不是实时的

    jenkins - 如何创建参数化的 Jenkins 职位?

    java - 防崩溃扫描仪--无限循环错误(开始java)

    jenkins - 使用作业 DSL 文件从 Git 目录创建 Jenkins 作业

    git - 我如何告诉 Jenkins 编译存储库的一些而不是所有分支?

    java - "Force update of snapshots/releases"- 这是什么意思

    Angular - 构建配置中 "optimization"和 "buildOptimizer"之间的差异(angular.json)

    java - 如何找出不在离线模式下导致 gradle 变慢的原因

    C代码进入死循环

    java - 创建 while 循环的正确方法是什么?我的方法行不通