Git Jenkins如何仅在发生更改时触发按计划构建

Git Jenkins如何仅在发生更改时触发按计划构建,git,jenkins,incremental-build,Git,Jenkins,Incremental Build,在我们的Jenkins和git设置中,主设备是Windows,从设备是Linux。(在未来几个月的某个时候,将更改为linux all) 在作业中设置轮询SCM时,轮询操作在配置作业以运行的主设备上进行,而不是从设备上。无论如何服务器配置有问题,我无法在那里运行git并通过SSH到达另一台机器上的repo net,在服务器修复之前,我无法使用轮询scm 但是,我有一个构建作业,需要在发生更改时运行,因为它构建用于自动部署应用程序以进行进一步测试的工件。 我可以定期使用Build,但它会每30分钟

在我们的Jenkins和git设置中,主设备是Windows,从设备是Linux。(在未来几个月的某个时候,将更改为linux all)

在作业中设置轮询SCM时,轮询操作在配置作业以运行的主设备上进行,而不是从设备上。无论如何服务器配置有问题,我无法在那里运行git并通过SSH到达另一台机器上的repo

net,在服务器修复之前,我无法使用轮询scm

但是,我有一个构建作业,需要在发生更改时运行,因为它构建用于自动部署应用程序以进行进一步测试的工件。 我可以定期使用Build,但它会每30分钟构建一次(举个例子),每晚和周末都会构建一次,大部分时间都是在浪费时间

所以,我想创建一个定时作业,检查自上次以来是否有变化。构建只针对特定分支中的内容进行

我“认为”我可以使用rev list获得最后一次提交,但我只希望在特定分支中进行提交。然后我可以把它保存到一个文件中,并在下一个副业中重新检查

如果修订不匹配,则触发其他作业


有谁有更好的指导吗?

我相信你错了。SCM轮询在作业配置为运行的其中一个从机上进行。至少这是配置为使用git的作业的工作方式。如果您的轮询在Windows主机上运行,这是因为您没有选中作业配置中的“限制此作业可以运行的位置”框,并且指定了一组排除主机的节点。

我希望您是正确的。。但在我们的例子中,绝对可以确认轮询发生在主节点上。作业被配置为仅在运行linux的从节点上运行。我可以使用windows任务管理器看到git.exe进程挂起,等待ssh密码提示(该提示永远不会出现),最终连接超时(大约10分钟)。。第一个错误是我们仅为unix git可执行文件(/usr/bin/git,而不是c:/git\u windows/git)配置的,它找不到文件(/usr/bin/git)。然后我们离开了小路,它找不到git,真奇怪。它是自由式作业还是多配置作业或其他作业?主机中是否有克隆的工作区?也许删除它有助于迫使Jenkins在一个linux从机中克隆,并希望在工作区所在的位置运行轮询。repo被克隆到从机上,而不是主机上。在此作业上启用SCM轮询之前,主机未安装git。(因此无法克隆到主机)这是jenkins安装中唯一与git相关的作业。(100个作业和20个从机)此从机专用于此基于git的repoI。我将在Manage Jenkins页面的使用设置中添加主设备配置为“尽可能使用此从机”。由于我不是系统管理员,我不想更改它。