1987WEB视界-分享互联网热门产品和行业

您现在的位置是:首页 > WEB开发 > 正文

WEB开发

jenkins添加jnlp-slave节点

1987web2023-10-06WEB开发92
一、前言有时候,jenkins只提供web访问,master节点与node节点无法通过ssh访问,所以无法通ssh的方式添加node,于是只能通过启动javaweb代理,使用jnlp方式配置no

一、前言

有时候,jenkins 只提供web访问,master节点与node节点无法通过ssh访问,所以无法通ssh的方式添加node,于是只能通过启动java web 代理,使用jnlp方式配置node节点

二、nginx 反向代理jenkins 配置,添加websoket

upstream jenkins{

server localhost:8080 fail_timeout=0;

}

map $http_upgrade $connection_upgrade {

default upgrade;

close;

}

server {

listen 80;

server_name jenkins.admin.com;

location / {

proxy_set_header Host $host:$server_port;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_redirect http:// https://;

proxy_pass http://jenkins;

Required for new HTTP-based CLI

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection $connection_upgrade;

proxy_request_buffering off;

proxy_buffering off; Required for HTTP-based CLI to work over SSL

workaround for https://issues.jenkins-ci.org/browse/JENKINS-45651

add_header X-SSH-Endpoint jenkins.admin.com:50000 always;

}

}

三、添加node

启动方式选择--》 通过java web启动代理 --》选择 Use WebSocket

添加后保存,显示连接认证信息,和agent启动方法

四、节点服务器上启动前,需要安装jdk java环境

1、简单启动

验证节点链接是否正常

切换工作目录

cd /home/jenkins/workspec

下载agent.jar包

wget https://jenkinswh.uniontech.com/jnlpJars/agent.jar

验证文件

echo f6b23ae961a2d2b028d446df7b1ebf93ff6625b504dd4ce2 > secret-file

启动agent

setsid java -jar agent.jar -jnlpUrl https://jenkinswh.uniontech.com/computer/arm-kernel-build-31-85/slave-agent.jnlp -secret @secret-file -workDir "/home/jenkins/workspec" > /dev/null &

启动日志路径在工作目录下的 remoting/logs/下

简单启动,默认在前台,而且无法开机自启。 因什么原因挂掉以后,也不会自动重启。 所以,这只是用来验证的启动方式,不推荐正式使用

2、systemd启动

使用systemd作为守护进程

下载agent.jar

切换工作目录

sudo mkdir /home/jenkins/workspace

cd /home/jenkins/workspace

下载agent.jar包

sudo wget https://jenkinswh.uniontech.com/jnlpJars/agent.jar

sudo chmod +x agent.jar

添加

echo f6b23ae961a2d2b028dasdf446df7b1ebf93fcbeaa5695c8a > secret-file

准备env.sh

在sudo vim/home/jenkins/workspace/jenkins_env中,写入以下环境变量:

JNLP_URL=https://jenkinswh.uniontech.com/computer/arm-kernel-build-31-85/slave-agent.jnlp

JNLP_SECRET=f6b23ae961a2d2b028d446df7b1eadfasf3fcbeac8a54ce2

JNLP_WORKDIR=/home/jenkins/workspace

其中,JNLP_URL和JNLP_SECRET需要根据节点信息而修改。

配置systemd

新增文件/etc/systemd/system/jenkins-agent.service

修改对应的用户和路径

[Unit]

Description=Jenkins agent of http://jenkins.example.com

[Service]

注意修改为实际执行的任务的用户和组

User=jenkins

Group=jenkins

Type=simple

EnvironmentFile=/home/jenkins/workspace/jenkins_env

ExecStart=/usr/bin/java -jar "${JNLP_WORKDIR}"/agent.jar -jnlpUrl "${JNLP_URL}" -secret "${JNLP_SECRET}" -workDir "${JNLP_WORKDIR}"

ExecStop=/usr/bin/pkill -f java -jar "${JNLP_WORKDIR}"/agent.jar

Restart=on-failure

RestartSec=15

[Install]

WantedBy=multi-user.target

启动

配置完成后,可以通过systemctl管理,实现开机自启。

sudo systemctl daemon-reload

sudo systemctl enable jenkins-agent.service

sudo systemctl start jenkins-agent.service

查看启动状态

sudo systemctl status jenkins-agent.service

五、使用脚本安装添加systemd

创建node节点后,根据web页面提示信息,修改 USER,URL,SECRET,WORKDIR四个变量信息

sudo 执行脚本

!/bin/bash

jenkins jnlp-slave 添加systemd脚本

agent运行的用户

USER=jenkins

添加node后的链接认证信息,请修改

URL=https://jenkinswh.uniontech.com/computer/arm-kernel-build-31-85/slave-agent.jnlp

SECRET=f6b23ae961a2d2b028d446df7b1eadfasdf3fcbeaasdf5c8a9eb6f6625b504dd4ce2

WORKDIR=/home/jenkins/workspace

创建 工作目录

mkdir -p "$WORKDIR"

下载agent.jar

cd "$WORKDIR" || exit

wget https://jenkinswh.uniontech.com/jnlpJars/agent.jar

创建变量认证文件

echo JNLP_URL="${URL}" > "$WORKDIR"/agent_env

echo JNLP_SECRET="${SECRET}" >> "$WORKDIR"/agent_env

echo JNLP_WORKDIR="${WORKDIR}" >> "$WORKDIR"/agent_env

chown -R ${USER}:${USER} ${WORKDIR}

添加systemd

cat > /etc/systemd/system/jenkins-agent.service <

[Unit]

Description=Jenkins agent of http://jenkins.example.com

[Service]

注意修改为实际执行的任务的用户和组

User=jenkins

Group=jenkins

Type=simple

EnvironmentFile=/etc/agent_env

ExecStart=/usr/bin/java -jar "${JNLP_WORKDIR}"/agent.jar -jnlpUrl "${JNLP_URL}" -secret "${JNLP_SECRET}" -workDir "${JNLP_WORKDIR}"

ExecStop=/usr/bin/pkill -f java -jar "${JNLP_WORKDIR}"/agent.jar

Restart=on-failure

RestartSec=15

[Install]

WantedBy=multi-user.target

EOF

修改服务启动用户和变量位置

sed -i s^User=.*User="${USER}"g /etc/systemd/system/jenkins-agent.service

sed -i s^Group=.*Group="${USER}"g /etc/systemd/system/jenkins-agent.service

sed -i s^EnvironmentFile=.*EnvironmentFile="${WORKDIR}"\/agent_envg /etc/systemd/system/jenkins-agent.service

启动agent

systemctl daemon-reload

systemctl enable jenkins-agent.service

systemctl start jenkins-agent.service

systemctl status jenkins-agent.service

点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍,小窗口回复资源、测试工具包领取测试资源。

本文1905字,阅读约需5分钟

Hi,大家好。在上一篇Jenkins系列文章:Jenkins介绍及安装,主要介绍Jenkins简介、docker安装Jenkins及Jenkins配置。

在Jenkins做项目构建及持续集成过程中,我们需要考虑权限问题。比如不同项目组用户只能看到自己项目的任务,那如何实现用户权限管理呢,接下来我们详细介绍。

准备工作

Jenkins用户权限管理