Jenkins 詹金斯工作区是在主人还是工人身上?

Jenkins 詹金斯工作区是在主人还是工人身上?,jenkins,Jenkins,谁负责项目的实际克隆,是主节点还是代理节点?如果它是主节点,那么代理节点实际如何执行作业。如果是代理节点,我们如何在浏览器中查看工作区 当人们问“工作区在哪里”时,答案通常是路径,但我更感兴趣的是路径在哪里,在主节点还是代理节点上?或者两者兼而有之 Edit1 与此一致的术语:以避免混淆 在Jenkins设置中,所有机器都被视为节点。主节点连接到一个或多个代理节点。执行器可以在主节点或代理节点上运行 在我的场景中,没有执行者在主机上运行。它们只在代理节点上运行。答案是:视情况而定 首先,尽管在I

谁负责项目的实际克隆,是主节点还是代理节点?如果它是主节点,那么代理节点实际如何执行作业。如果是代理节点,我们如何在浏览器中查看工作区

当人们问“工作区在哪里”时,答案通常是路径,但我更感兴趣的是路径在哪里,在主节点还是代理节点上?或者两者兼而有之

Edit1

与此一致的术语:以避免混淆

在Jenkins设置中,所有机器都被视为节点。主节点连接到一个或多个代理节点。执行器可以在主节点或代理节点上运行


在我的场景中,没有执行者在主机上运行。它们只在代理节点上运行。

答案是:视情况而定

首先,尽管在IMO中这不是一个好的实践,但有些安装让主控器成为实际的工作人员并运行作业。在这种情况下,工作区将位于主控台上

如果将主机配置为不接受作业,则仍有可能在主机上创建工作区。一个很好的例子是当您的作业是“来自SCM的管道脚本”时。在这种情况下,主节点将为作业创建一个工作区,克隆目标repo,读取管道,并在目标从属节点上启动所需的作业,创建一个工作区来运行操作本身。如果管道以多个从属对象为目标,则每个从属对象上都有一个工作区


在简单的情况下(例如maven或freestyle作业),工作区将仅位于目标从属设备上。

我需要更深入地了解这一点

  • 我运行了一个全新的Jenkins实例,并附加了一个代理节点。我使用SSH并将远程(代理)根目录设置为:/home/igorski/jenkins
  • 我一连接到节点,就打开了远程处理文件夹,并显示在该根目录中
  • 我运行了一个基本的GradleJava管道作业(项目中的Jenkinsfile)
  • 工作区显示在从机上。不是在主人身上
  • 从Jenkins GUI,我可以访问工作区并查看其内容
  • 在我杀死代理机器的那一刻,我无法再查看Jenkins中的工作区
  • 我猜remoting.jar会以某种方式进行实时同步

    我还做了一个自由泳项目,我可以证实这一点。一旦代理被终止,我就无法再打开工作区,并得到一个错误堆栈跟踪:

     hudson.remoting.Channel$CallSiteStackTrace: Remote call to JenkoOne
    
    不过,这在管道作业中更为明显。在这里,您将获得一个指向代理的链接,您需要单击该链接才能查看内容。代理一离开,链接就被禁用。并且您确切地知道节点位于哪个代理上。有了自由式的工作,你只需要一个工作区链接。目前还没有迹象表明它是什么代理,或者该代理是否可以访问


    因此,Zeitounatorfabian都是正确的。

    在我的场景中,我有自由式作业,没有执行器在主机上运行,只有在代理节点上运行。如果工作区位于执行器运行的节点上,那么如何在浏览器中查看工作区?是否已同步回主机?@Igorski只要代理仍然连接到主机,主机就可以通过与代理的连接检索目录内容的信息。将代理脱机,您将看到工作区不再作为链接列出(至少管道作业是这样)。