当前位置:网站首页>Jenkins 通过API获取从节点的secret

Jenkins 通过API获取从节点的secret

2022-01-15 02:03:15 markix

注意:调用API一般都需要认证信息,根据认证方式不同可能需要cookie、token、csrf-token等等,详见:Jenkins API接入指南

下文使用 $NODE_NAME 代替具体节点名

方法1:获取节点的jnlp文件,解析得到secret

调用接口 http://ip:port/computer/$NODE_NAME/slave-agent.jnlp,获取jnlp文件内容,解析xml文本,获取节点的secret值。
在这里插入图片描述

方法2:访问节点详情地址,使用正则匹配,获取节点的secret

节点详情的地址是 http://ip:port/computer/$NODE_NAME/,当我们通过浏览器访问时页面上会显示节点的secret值。同样的,我们可以通过HttpClient调用该地址,可想而知,响应体是个html文本,我们可以通过secret前后的固定字符串进行正则匹配,获取secret值
在这里插入图片描述

(推荐)方法3:远程执行grovvy 脚本获取节点secret

远程执行脚本的接口为 http://ip:port/scriptText,示例如下:(注意,示例中没有携带认证token)

curl -L -X POST 'http://ip:port/scriptText' \
--data-urlencode 'script="println(jenkins.model.Jenkins.getInstance().getComputer(\"$NODE_NAME\")?.getJnlpMac())"'

题外话
通过 Swarm插件实现Jenkins集群模式
主节点安装Swarm插件:https://plugins.jenkins.io/swarm/
子节点通过启动swarm-client.jar 即可连接到主节点,连接需要认证,认证方式有如下几种:https://github.com/jenkinsci/swarm-plugin/blob/master/docs/security.adoc#authentication

reference:
https://www.jenkins.io/doc/book/managing/script-console/#remote-access

https://stackoverflow.com/questions/31824639/jenkins-dynamically-connect-slave-to-master-without-knowing-node-secret
https://stackoverflow.com/questions/42683324/create-jenkins-jlnp-slave-programmatically
https://support.cloudbees.com/hc/en-us/articles/222520647-How-to-find-JNLP-Node-s-secret-key-remotely-

https://support.cloudbees.com/hc/en-us/articles/115003896171-Creating-node-with-the-REST-API
https://stackoverflow.com/questions/45466090/how-to-get-the-api-token-for-jenkins

版权声明
本文为[markix]所创,转载请带上原文链接,感谢
https://markix.blog.csdn.net/article/details/119962769

随机推荐