如何将jenkins节点配置为只接受通过其标签特别请求该节点的作业?

z3yyvxxp  于 12个月前  发布在  Jenkins
关注(0)|答案(2)|浏览(113)

我知道如何在节点配置页面通过Job name进行限制:

但是现在我们有了(多分支管道)DSL作业脚本,它可以动态地确定它们应该在哪个节点上运行,并通过node(label: 'NODE-LABEL') { ... }请求它。
我想限制我们的一个节点(一个专门负责安装程序签名的mac mini)只接受特别要求在该节点上运行的作业。

ha5z0ras

ha5z0ras1#

在节点配置屏幕中有选项“使用”。此任务可用于将节点设置为仅接受与该节点的标签特别匹配的作业。

剩下的就是为节点设置标签,这样就不会因为部分匹配标签而意外地在其上运行作业。

nnt7mjpx

nnt7mjpx2#

您可以使用标签表达式来确定作业将在何处运行。
例如,所有的Linux代理都有一个“os-linux”标签,所有的windows代理都有一个“os-windows”标签,用于一般开发的代理都有一个“builder”标签,用于代码签名的代理都有一个“code-signing”标签。
用于一般构建操作的代理将配置有诸如“os-linux”、“builder”]之类的标签,用于代码签名的代理将配置有诸如“os-linux”、“code-signing”]之类的标签。
一般开发的管道将有代理标签,表明需要“建筑商”代理:

pipeline {
  agent { label 'os-linux && builder' }
  stages {
    stage('Build') {
      sh "mvn clean deploy"
    }
  }
}

用于代码签名的管道将具有指示需要能够进行代码签名的代理的管道:

pipeline {
  agent { label 'os-linux && code-signing' }
  stages {
    stage('Sign') {
      withCredentials(...) {
        sh "java codesign.jar -keystorePassword=..."
      }
    }
}

或者在这种情况下,DSL将是:

node(label:'os-linux && code-signing') {
  ...
}

这允许您拥有多个构建器代理、多个代码签名者代理等,并且您可以相应地对代理进行分区。

相关问题