监控 Jenkins 中的存储库,但不要拉取

Monitor a repository in Jenkins, but don't pull

是否可以选择在 Jenkins 中监控 git 存储库,但在提交时不执行 pull/clone/fetch?

我希望根据对存储库中指定分支的提交来触发构建作业,但我不希望 Jenkins 构建作业自动执行 pull/clone/fetch。

让我在这里了解您的需求。

您想监控存储库但不想提取任何内容:每当有人提交到存储库时,您希望检查存储库的完整性而不是克隆。

我认为以上要求没有任何意义;而不是詹金斯,您可以对其进行监控。

你还是想实现这个。您可以在 SCM 部分中不指定任何 git URL 来设置作业,并且可以在执行 shell 部分中添加以下内容。

git ls-remote <GIT-URL>

(确保您拥有通过 shell 执行此操作的适当权限)。

如果一切顺利,您将获得所有分支、标签和拉取请求信息,然后您可以决定退出状态。

希望对您有所帮助。

显然,无法通过轮询 github 存储库来启动 Jenkins 任务而不下载上述 github 存储库。

假设您将作业配置为每分钟轮询一次,运行此命令是否可以实现您的目标?

git log --since="1 minute ago" | wc -l

您必须在设置 Jenkins 工作区时拉取存储库,但之后您可以关闭 SCM 连接。

虽然没有办法在不先拉取该作业的代码的情况下轮询 git 集线器存储库以启动该作业,但您可以通过使用 jenkins multijob plugin 来解决此问题设置多阶段作业,配置如下:

  • 配置驻留在 WORKSPACE-A 中的主作业。这份工作将 轮询您正在监视的 git 存储库。进行更改时,作业 将拉取更改(您不会使用),然后继续构建,其步骤将启动其他两个系列作业。
  • 配置第二个作业作为第一个构建阶段触发 主人的工作。此作业将驻留在 WORKSPACE-B 中,并且不会跟踪 git 存储库。这个工作可以做任何你想要的预配置。 因为它存在于与master不同的工作空间 作业,它不会被来自git.
  • 的源代码污染
  • 配置第三个作业作为第二个也是最后一个构建阶段触发 主人的工作。这项工作可能驻留在您需要的任何地方—— 包括 WORKSPACE-AWORKSPACE-B(如果这是您想要的)。你可以 要么让这个工作跟踪与主工作相同的回购协议,以便 更改会自动拉入工作区,或复制 文件已经从 WORKSPACE-A 的 git 存储库克隆到此作业的 工作区。

注意:只有主作业应该有构建触发器——与 git 存储库的更改相关的触发器。其他两个作业将从主作业外部触发。