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的更多相关文章

  1. [ci]jenkins server启动,通过jnlp的方式启动slave(容器模式)

    jenkins server启动,通过jnlp的方式启动slave. java -jar jenkins.jar 配置jnlp端口--全局安全 配置云 配置项目 执行成功

  2. Jenkins 四: 启动关闭以及重启jenkins

    启动 1. 在桌面新建一个jenkins.bat文件.内容如下: cd /d %JENKINS_HOME% java -jar %JENKINS_HOME%\jenkins.war --httpPor ...

  3. Jmeter命令行方式启动

    在性能测试过程中,我们常常遇到这样的问题,使用Jmeter的GUI界面进行大并发量的性能测试时,界面容易卡死,无法继续进行性能测试.通过使用命令行方式启动jmeter是一个不错的方式.下面就简单介绍一 ...

  4. ubuntu 修改ssh远程主机名称,mac开机运行命令,静默方式启动virtual box虚拟机,静默执行run脚本

    一.修改主机名 ssh登陆 vi /etc/hostname vi /etc/hosts hostname ulocal (执行这个命令,无须重启服务器) 保证127.0.0.1 的hostname与 ...

  5. 以守护进程方式启动firefly

    原地址:http://www.9miao.com/question-15-53966.html 最近看源码,查了半天,没找到已守护进程方式启动firefly的方法,自己改了改写了一个,废话不多说直接上 ...

  6. Openfire3.8.2在eclipse中Debug方式启动最简单的方式

    一.前言 最近打算研究一下Openfire,于是打算最好能够以Debug方式启动Openfire的Server,到网上一搜,还果真早到官网的一篇文章来: http://community.ignite ...

  7. MySQL安装(以程序的方式启动)zip版

    电脑环境 win10 64位 企业版 1.解压zip文件到某路径下. 2.复制目录下的my-default.ini 改名字(my.ini) 3.打开my.ini [mysqld]下面加上charact ...

  8. 与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦

    原文:与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦 [索引页][源码下载] ...

  9. AM335x(TQ335x)学习笔记——使用dtb方式启动内核

    老式的u-boot使用ATAGS的方式启动linux内核,本文使用新式的dtb方式启动内核. 我使用的内核是linux-3.17.2版本,下面开始编译内核. (1) 解压内核 [php] view p ...

随机推荐

  1. BUUCTF-后门查杀

    后门查杀 后门查杀这种题最好还是整个D盾直接扫描目录方便. 查看文件得到flag

  2. node环境下怎样优化引入多文件(实现自动化)

    const mocks = [];function getJsonFiles(jsonPath) {function findJsonFile(path) {let files = fs.readdi ...

  3. Json多层级动态结构数据解析

    一.工具 (1)GSON Google Gson是一个简单的基于Java的库,用于将Java对象序列化为JSON,反之亦然. 它是由Google开发的一个开源库. 以下几点说明为什么应该使用这个库 - ...

  4. colab解压.tar.gz文件指令

    !tar -zxvf flower_photos.tar.gz 成功后如图:

  5. idea如何实现Servlet接口

    idea如何实现Servlet接口 project structure ---> Libraries ---> 点击加号+ ----> 找到安装tomcat的目录,再找lib下的se ...

  6. C++ 练气期之二维数组与矩阵运算

    1. 前言 C++中的一维数组可以存储线性结构的数据,二维数组可以存储平面结构的数据.如班上所有学生的各科目成绩就有二个维度,学生姓名维度和科目成绩维度. 这样的表格数据可以使用二维数组进行存储. 当 ...

  7. 2022省选前联考 AVL树/平衡树

    题目描述 pks 得到了一棵 \(N\) 个节点,权值为 \(1\sim N\) 的 \(AVL\) 树,他觉得这棵树太大了,于是他想要删掉一些节点使得最后剩下的树恰好有 \(K\) 个节点.如果 p ...

  8. Visual Studio 生产环境配置方案:SlowCheetah

    原文 SlowCheetah 能满足你不同编译模式产生不同 app.config 配置的需求,已被微软纳入麾下,支持XML,JSON格式. 下面我们用XML的格式来试试如何使用SlowCheetah, ...

  9. 【学习笔记】带你从0开始学习 01Trie

    01Trie Section 1:普通 Trie Section 1.1 什么是 Trie Trie 树,即字典树,是一种树形结构.典型应用是用于统计和排序大量的字符串前缀来减少查询时间,最大限度地减 ...

  10. C++ 处理类型名(typedef,auto和decltype)

    随着程序越来越复杂,程序中用到的类型也越来越复杂,这种复杂性体现在两个方面.一是一些类型难于"拼写",它们的名字既难记又容易写错,还无法明确体现其真实目的和含义.二是有时候根本搞不 ...