jenkins - 以编程方式创建 jenkins JNLP 从站

标签 jenkins

我可以通过 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/

相关文章:

java - Jenkins、Maven、Nexus - 将第 3 方 JAR 部署到需要身份验证的 Nexus

Jenkins 编译器警告插件不显示 C 或 C++ 源代码

ant - 在 Jenkins 上运行时覆盖环境变量

jenkins - 如何在多个代理上对Jenkins管道使用发布步骤?

Jenkins JIRA 插件问题

azure - 使用 Jenkins-agent 作为 Azure 容器实例

Jenkins 限制 Jenkinsfile 对拉取请求的修改

ubuntu - 如何在 Jenkins War Ubuntu 20.04 (Azure VM) 上重置密码

windows - 在构建开始之前将数据推送到 jenkins 的从机

git - SCM 同步不工作