安装程序运行所需 JDK 11(17 版本也可以)
sudo apt install openjdk-11-jre-headless
创建用户和用户组
sudo adduser --group --home /var/lib/jenkins --shell /bin/bash jenkins
sudo adduser --system --quiet --home /var/lib/jenkins --no-create-home --ingroup jenkins --disabled-password --shell /bin/bash --gecos 'Jenkins' jenkins
创建工作目录
sudo mkdir /var/lib/jenkins
创建程序运行脚本,写入以下内容
#!/usr/bin/env bash
JK_DOMAIN="172.16.16.201"
JK_AGENT_HOME="/var/lib/jenkins"
JK_AGENT_URL="http://172.16.16.201:80/manage/computer/builder/jenkins-agent.jnlp"
JK_AGENT_SECRET="xxxxxxxx"
JK_WORK_DIR="/var/lib/jenkins/"
RE_CODE=0
if [ ! -d $JK_AGENT_HOME ]; then
echo "Error"
exit 1
fi
case "$1" in
start)
cd $JENKINS_HOME
curl -sO http://$JK_DOMAIN/jnlpJars/agent.jar
java -jar agent.jar -jnlpUrl http://$JK_DOMAIN/computer/worker/jenkins-agent.jnlp \
-secret $JK_AGENT_SECRET \
-workDir $JK_WORK_DIR \
-failIfWorkDirIsMissing
exit 0
;;
stop)
ps -ef | grep jenkins | grep agent | grep -v grep | awk '{print $2}' | xargs kill -9
code=$?
;;
*)
echo "Error"
exit 7
;;
esac
exit $code
小贴士:上述脚本中的地址和密钥请按实际情况进行修改。
创建工作子目录并授权
sudo mkdir -p /var/lib/jenkins/remoting
sudo chmod +x /var/lib/jenkins/agent.sh
sudo chown -R jenkins:jenkins /var/lib/jenkins
创建守护单元 /usr/lib/systemd/system/jenkins-agent.service
,写入以下内容
[Unit]
Description=Jenkins Agent
[Service]
User=jenkins
Group=jenkins
Environment="JENKINS_HOME=/var/lib/jenkins"
WorkingDirectory=/var/lib/jenkins
ExecStart=/bin/bash /var/lib/jenkins/agent.sh start
Restart=always
[Install]
WantedBy=multi-user.target
重新加载单元
sudo systemctl daemon-reload
sudo systemctl enable jenkins-agent.service
sudo systemctl restart jenkins-agent.service
在 Jenkins 页面中配置 Node 属性,将 Number of executors 改为 2 (不建议超过工作节点实际 CPU 核心数),将 Remote root directory 改为 /var/lib/jenkins/ ,勾选 Fail is workspace is missing 和 Use WebSocket 选项。
服务启动成功后,可查看节点工作状态。
附录
参考链接
- Create a new Jenkins node, and run your Jenkins agent as a service - Jenkins Blog
- 通过 SSH 或 JNLP 方式创建 Jenkins Linux Slave - CSDN
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2023-07-10 14:22 PM