Jenkins—配置工作节点

1、配置节点

创建一个节点,并且设置名称、cpu核心数(根据work节点的cpu数量)、远程工作目录即可。

点击保存后,返回到节点列表并且打开刚刚配置的节点,查看运行节点的命令。

2、在工作节点上配置自启动

在需要运行agent.jar的节点服务器上配置自启动。

#!/bin/sh

CWD=`pwd`

JENKINS_AGENT=/data/jenkins/agent.jar
JENKINS_RUN_CMD="java -jar ${JENKINS_AGENT} -url https://jenkins.xxxxx.com/ -secret b6a9204356d3fcb1a201d7d722b322ece67e0b -name worker-ops -webSocket -workDir /data/jenkins"


case $1 in
        start)
                nohup $JENKINS_RUN_CMD > /dev/null 2>&1 &
                        ;;
        stop)
                kill -9 `ps -ef | grep "${JENKINS_AGENT}"|grep -v "grep"|awk '{print $2}'`
                        ;;
        restart)
                cd "$CMD"
                $0 stop
                $0 start
        ;;
        *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
esac
exit 0

3、配置systemd守护进程

# vim /lib/systemd/system/jenkins-agent.service

[Unit]
Description=jenkins-agent.service
After=network.target

[Service]

LimitNOFILE=65536
LimitNPROC=65536

Type=forking
Environment=JAVA_HOME=/opt/jdk-22/
Environment=PATH=$PATH:/opt/jdk-22/bin:/bin
ExecStart=/data/jenkins/start-agent.sh start
ExecStop=/data/jenkins/start-agent.sh stop
ExecReload=/data/jenkins/start-agent.sh restart

[Install]
WantedBy=multi-user.target

必须设置环境变量,包括JAVE_HOME及PATH,PATH的环境变量中也需要设备/bin等,如果遇到一些命令错误,也需要将对应的目录设置到环境变量中即可。

systemctl enable jenkins-agent
systemctl start jenkins-agent

4、错误解决:

注意,上面的这个问题是因为Jenkins使用了nginx反向代码,但是没有设置websocket的header配置(下图配置的红色部分)。

    server {
        listen          8085;
        server_name  jenkins.xxxxx.com;

        location / {
            proxy_http_version 1.1;
            proxy_buffering off;
            proxy_read_timeout    90;
            proxy_connect_timeout 90;
            proxy_redirect        off;
            proxy_set_header Host $host;

            #设置WebSocket 所需的头信息
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";

            #传递真实的客户端IP
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header X-Forwarded-Port 443;
            proxy_set_header Proxy "";
            proxy_pass http://192.168.58.2:9088/;
        }
    }