我试图通过仅从新从属执行操作来自动化新Jenkins从属加入主控的过程。我知道我可以在新的奴隶上运行以下命令:
java -jar agent.jar -jnlpUrl http://<jenkinsURL>/computer/<myNewNode>/slave-agent.jnlp -secret <secret> -workDir <dir>
但是,为了在从属服务器上运行它,必须已经在主服务器上创建了它,否则http://<jenkinsURL>/computer/<myNewNode>
路径将不存在。
要解决此问题,我想知道是否可以将新节点发布到Jenkins API。这样,我可以将其包含在我的新Jenkins从属自动设置中,并在下载和运行agent.jar之前先进行POST。我正在尝试使用以下config.xml作为数据来卷曲它:
<slave>
<name>myNewNode</name>
<description>This is my new node</description>
<remoteFS>/home/jenkins</remoteFS>
<numExecutors>1</numExecutors>
<mode>NORMAL</mode>
<retentionStrategy class="hudson.slaves.RetentionStrategy$Always"/>
<launcher class="hudson.slaves.JNLPLauncher">
<workDirSettings>
<disabled>false</disabled>
<internalDir>remoting</internalDir>
<failIfWorkDirIsMissing>false</failIfWorkDirIsMissing>
</workDirSettings>
</launcher>
<label>label1</label>
<nodeProperties/>
</slave>
,但是它不起作用。它不断返回错误,指出JENKINS CRUMB无效。根据此处的页面(https://support.cloudbees.com/hc/en-us/articles/115003896171-Creating-node-with-the-REST-API),可以发布XML节点。有谁知道如何或以其他方式实现这一目标?