我可以通过 Jenkins Web GUI 创建一个新节点,然后让在容器中运行的节点通过名称和 -secret 值连接回 Jenkins master
例如。
docker run jenkinsci/jnlp-slave -url http://jenkins-server:port <secret> <slave name>
有没有办法以编程方式创建 Jenkins 节点并获取 secret 和从属名称,这样我就不必通过 GUI 来完成此操作?
最佳答案
以编程方式创建代理
您可以使用create-node
CLI使用给定配置创建新代理的命令。
例如,在文件 config.xml
中给出这个最小的 JNLP 代理配置:
<slave>
<remoteFS>/opt/jenkins</remoteFS>
<numExecutors>2</numExecutors>
<launcher class="hudson.slaves.JNLPLauncher" />
</slave>
您可以通过 CLI 客户端或 SSH 界面运行 create-node
命令:
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-node
CLI 命令。
以编程方式获取每个代理的 secret
要在不使用 Jenkins Web UI 的情况下获取 secret 十六进制值,您可以通过 groovy
CLI 命令运行脚本:
echo 'println jenkins.model.Jenkins.instance.nodesObject.getNode("my-agent")?.computer?.jnlpMac' \
| java -jar ~/Downloads/jenkins-cli.jar -s https://jenkins/ groovy =
这将直接返回 secret 值。请注意,为了通过 SSH 接口(interface)使用 groovy 命令,您需要 Jenkins 2.46 或更高版本。在早期版本中,它只能通过 CLI 客户端运行。
关于jenkins - 以编程方式创建 jenkins JNLP 从站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42683324/