alo*_*ras 4 jenkins jenkins-plugins jenkins-cli
我正在创建一个 Jenkins 主/从集群,但我无法找到让新从服务器自动向主服务器注册的方法。
我目前的设置是运行一些 Terraform 脚本来创建主站和 5 个从站。然后我必须登录到主节点并管理 Jenkins -> 管理节点 -> 新节点并手动创建我想要的节点数。
然后我 RDP 进入我的奴隶并运行命令java -jar agent.jar -jnlpUrl http://yourserver:port/computer/agent-name/slave-agent.jnlp。这工作得很好,但我想要一种方法来自动增加/减少代理的数量,而不必每次创建一个新的时都手动登录到从属。
是否有关于如何动态自注册节点的插件或一些我遗漏的文档?
注意:这仅适用于 Windows 节点。我正在使用 Kubernetes 插件来自动扩展/缩小 linux 节点,但是 Kubernetes 没有稳定的 Windows 节点支持,所以我不能使用它。我必须支持经典的 .NET 应用程序(不是 .NET Core),所以我必须在 Windows 节点上构建。
这是我在 Linux 上使用的 bash 脚本,它可以很容易地适应 Windows。
#!/bin/bash
set -xe
MASTER_URL=$1
MASTER_USERNAME=$2
MASTER_PASSWORD=$3
NODE_NAME=$4
NUM_EXECUTORS=$5
# Download CLI jar from the master
curl ${MASTER_URL}/jnlpJars/jenkins-cli.jar -o ~/jenkins-cli.jar
# Create node according to parameters passed in
cat <<EOF | java -jar ~/jenkins-cli.jar -auth "${MASTER_USERNAME}:${MASTER_PASSWORD}" -s "${MASTER_URL}" create-node "${NODE_NAME}" |true
<slave>
<name>${NODE_NAME}</name>
<description></description>
<remoteFS>/home/jenkins/agent</remoteFS>
<numExecutors>${NUM_EXECUTORS}</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></label>
<nodeProperties/>
<userId>${USER}</userId>
</slave>
EOF
# Creating the node will fail if it already exists, so |true to suppress the
# error. This probably should check if the node exists first but it should be
# possible to see any startup errors if the node doesn't attach as expected.
# Run jnlp launcher
java -jar /usr/share/jenkins/slave.jar -jnlpUrl ${MASTER_URL}/computer/${NODE_NAME}/slave-agent.jnlp -jnlpCredentials "${MASTER_USERNAME}:${MASTER_PASSWORD}"
Run Code Online (Sandbox Code Playgroud)
这有点类似于 docker slave 映像中包含的代理启动器,但在运行 jnlp 之前,它使用 jenkins cli 在 jenkins 上创建节点。一些参数显然需要适应窗口。
编辑:并获得该 xml 最简单的方法是在 web ui 中创建一个你想要的节点,然后使用 jenkins-cli 来检索它。
小智 1
我一直在 AWS 上对此进行测试。
https://plugins.jenkins.io/swarm
虽然您无法在 AWS 上使用广播,但您可以添加到 java 命令并指定 jenkins master 的 LB 的主机名或 URL。
我还没有检查它在 Windows 上的工作原理,但很快就会这样做,并让您知道它是如何进行的。
| 归档时间: |
|
| 查看次数: |
5363 次 |
| 最近记录: |