是否可以在 jenkins 中使用具有给定 ip 模式的 jenkins-agent?

Is it possible to use jenkins-agent with given ip pattern in jenkins?

基本上,一个 jenkins-server 中有很多 jenkins-nodes。多数的launch-methodlaunch agents via sshlaunch method选项下的host是实际ip。然而,大多数的标签是空的。

主要问题是我的服务器前面有防火墙 10.227.10.10。简而言之,此防火墙将阻止数据包。如果使用如下所示的 jenkins-pipeline,来自某些 jenkins-nodes 的数据包可能会被防火墙阻止。

我看了pipeline syntaxlabel可以解决。但是,配置 jenkins-nodes 的 label 部分需要大量工作。有什么想法吗?

pipeline {
    agent any
    stages {
        stage('stage1') {
            agent any
            //  agent {ip '10.227.*.*'}  // This would be a better solution
            steps {
                sh "curl http://10.227.10.10"
            }
        }
    }

}

我不认为该 IP 地址可用作 Slave or via getComputer()

的 属性

Pipeline Agent, label only supports explicit labels,但确实有条件。您可以创建一个新标签(例如:“227Net”),使用下面的控制台 groovy 脚本将其添加到节点,然后在您的管道中引用该标签:

agent  { node { label '227Net' } }

应该可以正常工作。

def newLabel = '227Net'
Jenkins.instance.slaves.findAll {it.name.contains('10.227') }.each {agent -> 
  oldLabelString = agent.getLabelString()
  println "Relabeling ${agent.name} : ${oldLabelString} + ${newLabel}"
  newLabelString = oldLabelString + " " + newLabel
  agent .setLabelString(newLabelString)
}
return