我能够通过Jenkins Web GUI创建一个新节点,然后让容器中运行的节点通过名称和-secret值连接回Jenkins主节点
例如 docker run jenkinsci/jnlp-slave -url http://jenkins-server:port <secret> <slave name>
docker run jenkinsci/jnlp-slave -url http://jenkins-server:port <secret> <slave name>
有没有一种方法可以通过编程方式创建Jenkins节点并获取密码和从属名称,因此我不必通过GUI来执行此操作?
您可以使用create-node CLI命令创建具有给定配置的新代理。
create-node
例如,考虑到文件中的此最小JNLP代理配置config.xml:
config.xml
<slave> <remoteFS>/opt/jenkins</remoteFS> <numExecutors>2</numExecutors> <launcher class="hudson.slaves.JNLPLauncher" /> </slave>
您可以create-node通过CLI客户端或SSH界面运行命令:
cat config.xml | java -jar jenkins-cli.jar -s https://jenkins/ create-node my-agent
要查看现有代理的XML配置外观,可以将其附加config.xml到代理URL,例如https://jenkins/computer/some- agent-name/config.xml,也可以使用get-nodeCLI命令。
get-node
要在不使用Jenkins Web UI的情况下获取秘密的十六进制值,可以通过groovyCLI命令运行脚本:
groovy
echo 'println jenkins.model.Jenkins.instance.nodesObject.getNode("my-agent")?.computer?.jnlpMac' \ | java -jar ~/Downloads/jenkins-cli.jar -s https://jenkins/ groovy =
这将直接返回秘密值。请注意,为了groovy通过SSH接口使用该命令,您需要Jenkins 2.46或更高版本。在早期版本中,它只能通过CLI客户端运行。