监控 Jenkins 中的存储库,但不要拉取
Monitor a repository in Jenkins, but don't pull
是否可以选择在 Jenkins 中监控 git 存储库,但在提交时不执行 pull/clone/fetch?
- 源代码管理设置为"Git"
- 存储库URL设置为
git@github.com:name/branch.git
- 要构建的分支设置为
origin/1.0
我希望根据对存储库中指定分支的提交来触发构建作业,但我不希望 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-A
或 WORKSPACE-B
(如果这是您想要的)。你可以
要么让这个工作跟踪与主工作相同的回购协议,以便
更改会自动拉入工作区,或复制
文件已经从 WORKSPACE-A
的 git 存储库克隆到此作业的
工作区。
注意:只有主作业应该有构建触发器——与 git 存储库的更改相关的触发器。其他两个作业将从主作业外部触发。
是否可以选择在 Jenkins 中监控 git 存储库,但在提交时不执行 pull/clone/fetch?
- 源代码管理设置为"Git"
- 存储库URL设置为 git@github.com:name/branch.git
- 要构建的分支设置为 origin/1.0
我希望根据对存储库中指定分支的提交来触发构建作业,但我不希望 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-A
或WORKSPACE-B
(如果这是您想要的)。你可以 要么让这个工作跟踪与主工作相同的回购协议,以便 更改会自动拉入工作区,或复制 文件已经从WORKSPACE-A
的 git 存储库克隆到此作业的 工作区。
注意:只有主作业应该有构建触发器——与 git 存储库的更改相关的触发器。其他两个作业将从主作业外部触发。