Jenkins管道代理与标签或节点调用从节点?

时间:2017-12-07 15:17:30

标签: jenkins jenkins-pipeline jenkins-slave

有人询问如何创建代理并创建一个从属节点(here),我不知道它是真还是否:

agent {
  label 'my-defined-label'
}

agent {
  node {
    label 'my-defined-label'
    customWorkspace '/some/other/path'
  }
}

所以'我定义的标签'只是奴隶的名字?

感谢您的回答

1 个答案:

答案 0 :(得分:1)

它可以匹配精确的节点名称,标签,任何其他支持的标签表达式。例如,java8 && linux(docker || java) && !windowscorp-agent-node-01-name都是有效的标签语法。

documentation明确了内置语法的工作原理:

  

在节点(通常是从属节点)上分配执行程序,并在该从属服务器上的工作区上下文中运行更多代码。

     

label - 计算机名称,标签名称或任何其他标签表达式(如linux && 64bit),以限制此步骤的构建位置。可以留空,在这种情况下可以使用任何可用的执行程序。

     

有效运算符

     

支持以下运算符,按优先顺序排列。

     
      
  • (expr) - 括号

  •   
  • !expr - 否定

  •   
  • expr&& expr - 和

  •   
  • expr || expr - 或

  •   
  • a - > b - “暗示”操作员。相当于!a | b。例如,windows-> x64可以被认为是“如果在Windows奴隶上运行,那个奴隶必须是64位”。 *它仍允许Jenkins在linux上运行此构建。

  •   
  • a< - > b - “当且仅当”运营商。相当于&& b || !急症;&安培;!湾例如,windows< - > sfbay可以被认为是“如果在Windows奴隶上运行,那个奴隶必须在SF托架区域,但如果不在Windows上,它必须不在托架区域。”

  •   
     

所有运算符都是左关联的(即,a-> b-> c< - >(a-> b) - > c)表达式可以包含空格以提高可读性,并且'我会被忽略。

     

如果标签名称或从属名称包含不安全的字符,则可以引用它们。例如,“jenkins-solaris(Solaris)”|| “Windows 2008”