Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 2声明性管道-是否可以在节点内运行所有阶段(任何代理),但其中一些阶段在没有它的情况下运行?_Jenkins_Jenkins Pipeline_Continuous Delivery_Jenkins 2_Jenkins Declarative Pipeline - Fatal编程技术网

Jenkins 2声明性管道-是否可以在节点内运行所有阶段(任何代理),但其中一些阶段在没有它的情况下运行?

Jenkins 2声明性管道-是否可以在节点内运行所有阶段(任何代理),但其中一些阶段在没有它的情况下运行?,jenkins,jenkins-pipeline,continuous-delivery,jenkins-2,jenkins-declarative-pipeline,Jenkins,Jenkins Pipeline,Continuous Delivery,Jenkins 2,Jenkins Declarative Pipeline,我有一个CD管道,在某些阶段需要用户确认,因此我希望在管道等待用户输入时释放服务器资源 pipeline { agent any stages { stage ('Build Stage') { steps { ... } } stage ('User validation stage') { agent none steps { input message: 'Are you su

我有一个CD管道,在某些阶段需要用户确认,因此我希望在管道等待用户输入时释放服务器资源

pipeline {
  agent any
  stages {
    stage ('Build Stage') {
      steps {
        ...
      }
    }
    stage ('User validation stage') {
      agent none
      steps {
         input message: 'Are you sure you want to deploy?'
      }
    }
    stage ('Deploy Stage') {
      steps {
        ...
      }
    }
  }
}
您可以在上面看到,我有一个全局代理any,但在用户验证阶段,我添加了代理none

有人能确认这是我想要的吗?没有代理/节点在等待用户输入?我不知道如何验证它,在执行日志中没有什么不同


如果没有,我该怎么做呢?

这不会像您预期的那样起作用。不能在整个管道上指定代理any,然后期望代理none不占用执行器

为了证明这一点,您可以按原样运行此代码,当它在输入阶段等待时,转到jenkins主页并查看构建执行器状态。你会看到有一个执行者仍在执行你的工作

接下来,将管道切换到“无代理”,并将“任何代理”添加到输入步骤之外的所有其他步骤中,然后执行相同的测试。您可以看到,在输入阶段等待时,没有一个执行器被占用

至于你关于不同节点上不同工作区的问题。。。假设您使用的是来自SCM的代码,那么它将在每个新节点上检出,所以这并不重要。您唯一需要担心的是您在每个阶段中创建的工件

希望你留在同一个节点上是不安全的,尽管詹金斯会尽力让你留在那里。但即使如此,也不能保证您将获得相同的工作区目录


处理此问题的正确方法是隐藏您在以后阶段可能创建或修改的所有文件。然后在以下阶段中,取消对所需文件的转储。永远不要假设文件将在具有自己节点声明的阶段之间运行

您在这里得到的回答看起来不错,但仍然提出了一些问题,使用相同的标签,您可以在不同的阶段获得不同的节点工作区吗?我们怎么处理呢?谢谢你提供的信息。只是有几个疑问:我在藏匿时是否必须使用唯一的名称?例如,连接stashedArtifact+buildNumber。在存储高达80MB的war或jar文件等工件时是否有任何问题?您可以根据需要命名它,并使用它来取消存储。但我不知道用同一个名字多次藏匿会有什么影响。它会撞击还是结合?不确定。有关尺寸的问题,请参见以下文档: