Jenkins JNLP方式启动 Agent
Jenkins Server配置
如果你是通过Nginx代理了jenkins,那么需要调整下Nginx的配置
map $http_upgrade $connection_upgrade {
       default upgrade;
       '' close;
}
server {
       listen       80;
       server_name  jenkins-server-domain;
       return 308   https://$host$request_uri;
}
server {
       listen       443 ssl http2;
       server_name  jenkins-server-domain;
       include      /etc/nginx/cert/jenkins-server-domain/ssl.conf;
       location / {
           proxy_pass              http://127.0.0.1:8080;
           proxy_set_header        Host            $host;
           proxy_set_header        Upgrade         $http_upgrade;
           proxy_set_header        Connection      $connection_upgrade;
           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;
       }
}
在Node管理中添加一个节点, 如下图

Jenkins Agent配置
- 首先需要安装jdk11, oraclejdk与openjdk均可,并创建所需要的用户与jenkins data目录
 
需要注意,如果你的jenkins server URL是HTTPS的,并且证书是自签的,jdk需要信任你的签发证书所使用的根证书,这一点确实没有SSH方式启动agent方便
groupadd -r jenkins
useradd -r -g jenkins -s /bin/bash -d /home/jenkins -m -c 'Jenkins Agent'
mkdir -p /data/jenkins /var/log/jenkins /usr/lib/jenkins
echo 7e24be8ddbd32fb9853f8fcd07556a6dcd64aaa1c06c187b170620b940c3b556 > /usr/lib/jenkins/secret-file   #这个secret需要换成自己的
curl -L https://jenkins-server-domain/jnlpJars/agent.jar -o /usr/lib/jenkins/agent.jar
chown -Rf jenkins:jenkins /data/jenkins /var/log/jenkins /usr/lib/jenkins
gpasswd -a jenkins docker
- 配置systemd启动jenkins-agent
 
PATH变量可以在jenkins用户下执行env获取
[root@defualt ~]# vim /etc/systemd/system/jenkins-agent.service
[Unit]
Description=Jenkins Agent
After=syslog.target network.target
[Service]
Type=simple
Environment="AGENTNAME=default-agentpool-1"
Environment="JAVA_HOME=/opt/java/jdk11.0.12"
Environment="PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/java/jdk11.0.12/bin:/opt/maven/maven-3.6.3/bin:/opt/gradle/gradle-5.6.4/bin:/opt/node/bin:/opt/golang/bin:/home/jenkins/.local/bin:/home/jenkins/bin"
WorkingDirectory=/usr/lib/jenkins
ExecStart=/opt/java/jdk11.0.12/bin/java \
        -Dfile.encoding=UTF-8 \
        -Duser.timezone=Asia/Shanghai \
        -jar agent.jar \
        -jnlpUrl https://jenkins-server-domain/computer/${AGENTNAME}/jenkins-agent.jnlp \
        -workDir /data/jenkins \
        -secret @secret-file \
        -agentLog /var/log/jenkins/jenkins.log
PermissionsStartOnly=true
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
User=jenkins
Group=jenkins
StandardOutput=null
StandardError=null
[Install]
WantedBy=multi-user.target
- 启动并设置开机自启
 
systemctl enable --now jenkins-agent.service
后记
- 这种方式与SSH不同的是jenkins server不用开通到agent的SSH 22端口的防火墙,也不用管理太多ssh key, agent掉线了会自动提示你怎么加入,这个界面就会有secret,不用手动管理这堆破东西
 - 不好处就是配置起来步骤上比SSH麻烦, 如果jenkins server 是HTTPS的, 可能还需要导入签发用的根证书, agent才能连接上server; 如果有人把jenkins-agent服务停了,这个节点就不能用了, 不像SSH可以自动拉起来
 - 网络环境特殊的情况下,这个方式确实比较好用
 
单纯记录了下自己的部署方式,如果各位有啥好用的办法,可以评论交流。
Jenkins JNLP方式启动 Agent的更多相关文章
- [ci]jenkins server启动,通过jnlp的方式启动slave(容器模式)
		
jenkins server启动,通过jnlp的方式启动slave. java -jar jenkins.jar 配置jnlp端口--全局安全 配置云 配置项目 执行成功
 - Jenkins 四: 启动关闭以及重启jenkins
		
启动 1. 在桌面新建一个jenkins.bat文件.内容如下: cd /d %JENKINS_HOME% java -jar %JENKINS_HOME%\jenkins.war --httpPor ...
 - Jmeter命令行方式启动
		
在性能测试过程中,我们常常遇到这样的问题,使用Jmeter的GUI界面进行大并发量的性能测试时,界面容易卡死,无法继续进行性能测试.通过使用命令行方式启动jmeter是一个不错的方式.下面就简单介绍一 ...
 - ubuntu 修改ssh远程主机名称,mac开机运行命令,静默方式启动virtual box虚拟机,静默执行run脚本
		
一.修改主机名 ssh登陆 vi /etc/hostname vi /etc/hosts hostname ulocal (执行这个命令,无须重启服务器) 保证127.0.0.1 的hostname与 ...
 - 以守护进程方式启动firefly
		
原地址:http://www.9miao.com/question-15-53966.html 最近看源码,查了半天,没找到已守护进程方式启动firefly的方法,自己改了改写了一个,废话不多说直接上 ...
 - Openfire3.8.2在eclipse中Debug方式启动最简单的方式
		
一.前言 最近打算研究一下Openfire,于是打算最好能够以Debug方式启动Openfire的Server,到网上一搜,还果真早到官网的一篇文章来: http://community.ignite ...
 - MySQL安装(以程序的方式启动)zip版
		
电脑环境 win10 64位 企业版 1.解压zip文件到某路径下. 2.复制目录下的my-default.ini 改名字(my.ini) 3.打开my.ini [mysqld]下面加上charact ...
 - 与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦
		
原文:与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦 [索引页][源码下载] ...
 - AM335x(TQ335x)学习笔记——使用dtb方式启动内核
		
老式的u-boot使用ATAGS的方式启动linux内核,本文使用新式的dtb方式启动内核. 我使用的内核是linux-3.17.2版本,下面开始编译内核. (1) 解压内核 [php] view p ...
 
随机推荐
- SAP Smartforms 参数配置
			
DATA : sf_name TYPE rs38l_fnam. DATA : sf_output_options TYPE ssfcompop. DATA : sf_control_parameter ...
 - sql-DML-增删改
			
DML:增删改表中数据 1. 添加数据: insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n); insert into 表名 values(值1,值2 ...
 - Lua5.4源码剖析:二. 详解String数据结构及操作算法
			
概述 lua字符串通过操作算法和内存管理,有以下优点: 节省内存. 字符串比较效率高.(比较哈希值) 问题: 相同的字符串共享同一份内存么? 相同的长字符串一定不共享同一份内存么? lua字符串如何管 ...
 - NC16618 [NOIP2008]排座椅
			
NC16618 [NOIP2008]排座椅 题目 题目描述 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下 ...
 - 强化学习-学习笔记8 | Q-learning
			
上一篇笔记认识了Sarsa,可以用来训练动作价值函数\(Q_\pi\):本篇来学习Q-Learning,这是另一种 TD 算法,用来学习 最优动作价值函数 Q-star,这就是之前价值学习中用来训练 ...
 - 本地使用 Docker Compose 与 Nestjs 快速构建基于 Dapr 的 Redis 发布/订阅分布式应用
			
Dapr(分布式应用程序运行时)介绍 Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言 ...
 - 区间统计——ST算法
			
一.引入 先举一个小栗子. 一数组有 \(n\) 个元素,有 \(m\) 次询问(\(n, m <= 10^5\)).对于每次询问给出 \(l, r\),求出 \([l, r]\)的区间和. 有 ...
 - 分库分表真的适合你的系统吗?聊聊分库分表和NewSQL如何选择
			
曾几何时,"并发高就分库,数据大就分表"已经成了处理 MySQL 数据增长问题的圣经. 面试官喜欢问,博主喜欢写,候选人也喜欢背,似乎已经形成了一个闭环. 但你有没有思考过,分库分 ...
 - python+tkinter 的布局
			
from tkinter import * win = Tk() win.title("布局") # #窗口标题 win.geometry("600x500+200+20 ...
 - Solution -「CF645F」Cowslip Collections
			
设 \(f(i)\) 表示大小为 \(k\),\(\gcd\) 为 \(i\) 的方案数.\(F(i)\) 表示大小为 \(k\),\(\gcd\) 为 \(i\) 的倍数的方案数. 不难看出:\(F ...