0

我有一个由 Jenkins 构建的仅 pom 项目。它真正做的唯一一件事就是将它发送到我的仓库。这被其他几个项目使用。出于某种原因,Jenkins 没有保留这些构建。它甚至似乎正在删除工作区。颠覆轮询日志显示:“没有现有的构建。正在安排新的构建。” 这会触发一个新构建,这会触发所有下游项目的新构建。这可能是因为在构建过程中没有生成文件吗?我没有在项目配置中选中“删除旧版本”。有任何想法吗?

4

1 回答 1

1

在 Jenkins 中,Subversion 轮询可以从主节点或从节点进行。默认情况下,为了减少主服务器上的负载(因为轮询比来自 Subversion 服务器上的 PostCommit 挂钩的推送通知更耗费资源 - 即推荐的方式)默认是从从属服务器轮询。

如果您使用虚拟机从属池,或定期清除从属工作区等。那么基于从属的轮询将必须进行结帐才能完成(我认为,但我不确定,这是因为svn:external条目可能会被取消固定因此触发更新......但这听起来很愚蠢)

您可以通过在 Jenkins 中设置以下系统属性来将默认设置更改为 master:

hudson.scm.SubversionSCM.pollFromMaster=true

您将需要重新启动 Jenkins 以获取更改。

如果您想使用 Groovy 控制台,您可以将更改应用到正在运行的 Jenkins 实例...我认为以下内容将通过更改来修复我可能出现的语法错误:

import jenkins.model.*
import hudson.scm.*
Jenkins.instance.items.each { job ->
    if (job.scm instanceof SubversionSCM) { 
        job.scm.setPollFromMaster(true);
    }
}

虽然我应该指出,groovy 脚本只会在下次重新启动 Jenkins 之前进行更改,因为它调整的字段是暂时的。

于 2013-01-28T12:18:29.963 回答