jenkins分步式构建环境(agent)

在这里插入图片描述
root@jenkins:~# netstat -antp|grep 50000
tcp6 0 0 :::50000 ::😗 LISTEN 5139/java

1.52 安装Jenkins

root@ubuntu20:~# dpkg -i jenkins_2.414.3_all.deb

配置各种类型的Agent的关键之处在于启动Agent的方式
◼ JNLP Agent对应着“通过Java Web启动代理”这种方式
◼ Master与Slave之间建立一个基于HTTPS协力的Web连接
◼ Slave首次接入Master时,需要提供用于认证的Secret以完成
Bootstrap
配置JNLP Agent创建分布式构建环境的简要步骤
◼ 准备Agent节点,部署好Jenkins
◼ 在Master节点上,添加Agent节点的定义
◼ 在Master节点上,获取将Agent节点连接至Master时需要执行的
命令
◼ 在Agent节点上,打开命令终端,运行Master提示的命令
◼ 在Master节点上验证添加的结果

在这里插入图片描述

在这里插入图片描述
/home/jenkins/agent

点击创建的
在这里插入图片描述
agent 1.52 运行命令

root@ubuntu20:~# mkdir /home/jenkins/agent -pv
root@ubuntu20:~# chown -R jenkins.jenkins /home/jenkins/agent/

curl -sO http://192.168.1.51:8080/jnlpJars/agent.jar
java -jar agent.jar -jnlpUrl http://192.168.1.51:8080/computer/jenkins01%2D192%2E168%2E1%2E52/jenkins-agent.jnlp -secret db32e82e85dddf69f96f0f50bd13b5380f5f6de1789f0535c01bb650843c844a -workDir “/home/jenkins/agent”

编辑流水线填写agent的标签
在这里插入图片描述

查看流水线会在agent1.52中部署
在这里插入图片描述

ssh方式连接agent

root@ubuntu20:/var/lib/jenkins/plugins# passwd jenkins
New password: 123456
Retype new password:
passwd: password updated successfully

在这里插入图片描述

使用ssh连接成功
在这里插入图片描述

报错,授权即可

Building remotely on jenkins01-1.52 (linux-agent) in workspace /home/jenkins/agent/workspace/spring-boot-helloword2
The recommended git tool is: NONE
java.lang.ClassNotFoundException: org.jenkinsci.plugins.gitclient.Git$GitAPIMasterToSlaveFileCallablechown -R jenkins:jenkins /var/lib/jenkins/workspace/

使用docker agent

root@jenkins:~/learning-jenkins-cicd/07-jenkins-agents# cat docker-compose-inbound-agent.yml 
version: '3.6'volumes:agent01_data: {}agent02_data: {}networks:jenkins_net:driver: bridgeipam:config:- subnet: 172.31.9.0/24services:agent01:image: jenkins/inbound-agent:alpine-jdk11hostname: agent01.magedu.comuser: rootenvironment:TZ: Asia/ShanghaiJENKINS_URL: http://192.168.1.51:8080   #jenkinsmaster地址JENKINS_AGENT_NAME: agent01.magedu.com  #agent名字JENKINS_AGENT_WORKDIR: /home/jenkins/agentJENKINS_SECRET: 7eecbd2daa66612cac412d4fc484faf80fcee0fc0e8502b12abec11605744074    #jenkins添加节点后的密钥,保持一致# SECRET is automatically generated by the master when adding agent01.volumes:- agent01_data:/appdata/jenkins/networks:jenkins_net:ipv4_address: 172.31.9.11aliases:- slave01- agent01#extra_hosts:#  - "jenkins.magedu.com:172.29.7.7"#restart: alwaysagent02:image: jenkins/inbound-agent:alpine-jdk11hostname: agent02.magedu.comuser: rootenvironment:TZ: Asia/ShanghaiJENKINS_URL: http://192.168.1.51:8080JENKINS_AGENT_NAME: agent02.magedu.comJENKINS_AGENT_WORKDIR: /home/jenkins/agentJENKINS_SECRET: be0e53b93558553ee9694fced68d6443138ee13c5eeaf5d07bfad026d2fd36a6# SECRET is automatically generated by the master when adding agent02.volumes:- agent02_data:/appdata/jenkins/networks:jenkins_net:ipv4_address: 172.31.9.12aliases:- slave02- agent02#extra_hosts:#  - "jenkins.magedu.com:172.29.7.7"#restart: always

yaml文件 JENKINS_SECRET和jenkins中添加的密钥要一致

在这里插入图片描述
运行
docker-compose -f docker-compose-inbound-agent.yml up
在这里插入图片描述

运行成功后
在这里插入图片描述

添加流水线可以使用

通过docker ssh 连接

ssh-keygen -t rsa -b 2048 -P ‘’
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): .jenkins-ssh-agent-rsa
Your identification has been saved in .jenkins-ssh-agent-rsa
Your public key has been saved in .jenkins-ssh-agent-rsa.pub

查看并替换yanl

root@jenkins:~# cat .jenkins-ssh-agent-rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPIv6Hjrl0r4QroJe++/xx3wMJesjoKW7Or16ilVTEXLP5PahwJyNlRZIJN5JdmFwu6QV/izQw0JvyceOo5Gebo1LZW6qZmhMJAJB537U38l1Wex7iIpnTlugrLkq2CtaOPKNEYEXBXH0SOaZuTosMoSLI83CBHlWWzAKcd/WRWQOMB48eABGvxC8LZDzrsA/uA3kIRaJS56PeWkBWK/OU/inCfzmSUVbN5uY3eRV/WHZ32R2dk9ELbmBjcxt+w2h+a0aWCuWj4wSQd8Oy0LfFTuuP+PwCpWasJqhIf3r+nms72oXk1qS9P7peFGybSDGePbW8BD209gJ3UzERif/j root@jenkins
 cat docker-compose-ssh-agent.yml 
version: '3.6'volumes:ssh_agent01_data: {}ssh_agent02_data: {}networks:jenkins_net:driver: bridgeipam:config:- subnet: 172.31.9.0/24services:ssh-agent01:image: jenkins/ssh-agent:jdk11hostname: ssh-agent01.magedu.com#user: jenkinsenvironment:TZ: Asia/ShanghaiJENKINS_AGENT_HOME: /home/jenkinsJENKINS_AGENT_SSH_PUBKEY: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPIv6Hjrl0r4QroJe++/xx3wMJesjoKW7Or16ilVTEXLP5PahwJyNlRZIJN5JdmFwu6QV/izQw0JvyceOo5Gebo1LZW6qZmhMJAJB537U38l1Wex7iIpnTlugrLkq2CtaOPKNEYEXBXH0SOaZuTosMoSLI83CBHlWWzAKcd/WRWQOMB48eABGvxC8LZDzrsA/uA3kIRaJS56PeWkBWK/OU/inCfzmSUVbN5uY3eRV/WHZ32R2dk9ELbmBjcxt+w2h+a0aWCuWj4wSQd8Oy0LfFTuuP+PwCpWasJqhIf3r+nms72oXk1qS9P7peFGybSDGePbW8BD209gJ3UzERif/j  root@jenkins# SSH PRIVATE KEY and PUBLIC KEY is generated by you.networks:jenkins_net:ipv4_address: 172.31.9.21aliases:- ssh-slave01- ssh-agent01ports:- "22022:22"#restart: alwaysssh-agent02:image: jenkins/ssh-agent:jdk11hostname: ssh-agent02.magedu.com#user: jenkinsenvironment:TZ: Asia/Shanghai#JENKINS_AGENT_HOME: /home/jenkinsJENKINS_AGENT_SSH_PUBKEY: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPIv6Hjrl0r4QroJe++/xx3wMJesjoKW7Or16ilVTEXLP5PahwJyNlRZIJN5JdmFwu6QV/izQw0JvyceOo5Gebo1LZW6qZmhMJAJB537U38l1Wex7iIpnTlugrLkq2CtaOPKNEYEXBXH0SOaZuTosMoSLI83CBHlWWzAKcd/WRWQOMB48eABGvxC8LZDzrsA/uA3kIRaJS56PeWkBWK/OU/inCfzmSUVbN5uY3eRV/WHZ32R2dk9ELbmBjcxt+w2h+a0aWCuWj4wSQd8Oy0LfFTuuP+PwCpWasJqhIf3r+nms72oXk1qS9P7peFGybSDGePbW8BD209gJ3UzERif/j  root@jenkins# SSH PRIVATE KEY and PUBLIC KEY is generated by you.networks:jenkins_net:ipv4_address: 172.31.9.22aliases:- ssh-slave02- ssh-agent02ports:- "22122:22"#restart: always

运行容器
root@jenkins:~/learning-jenkins-cicd/07-jenkins-agents# docker-compose -f docker-compose-ssh-agent.yml up

在jenkins创建,私钥保存为认证凭证

cat  .jenkins-ssh-agent-rsa
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEAzyL+h465dK+EK6CXvvv8cd8DCXrI6Cluzq9eopVUxFyz+T2ocCcj
ZUWSCTeSXZhcLukFf4s0MNCb8nHjqORnm6NS2VuqmZoTCQCQed+1N/JdVnse4iKZ05boKy
5KtgrWjjyjRGBFwVx9Ejmmbk6LDKEiyPNwgR5VlswCnHf1kVkDjAePHgARr8QvC2Q867AP
7gN5CEWiUuej3lpAVivzlP4pwn85klFWzebmN3kVf1h2d9kdnZPRC25gY3MbfsNofmtGlg
rlo+MEkHfDstC3xU7rj/j8AqVmrCaoSH96/p5rO9qF5NakvT+6XhRsm0gxnj21vAQ9tPYC
d1MxEYn/4wAAA8goLZHGKC2RxgAAAAdzc2gtcnNhAAABAQDPIv6Hjrl0r4QroJe++/xx3w
MJesjoKW7Or16ilVTEXLP5PahwJyNlRZIJN5JdmFwu6QV/izQw0JvyceOo5Gebo1LZW6qZ
mhMJAJB537U38l1Wex7iIpnTlugrLkq2CtaOPKNEYEXBXH0SOaZuTosMoSLI83CBHlWWzA
Kcd/WRWQOMB48eABGvxC8LZDzrsA/uA3kIRaJS56PeWkBWK/OU/inCfzmSUVbN5uY3eRV/
WHZ32R2dk9ELbmBjcxt+w2h+a0aWCuWj4wSQd8Oy0LfFTuuP+PwCpWasJqhIf3r+nms72o
Xk1qS9P7peFGybSDGePbW8BD209gJ3UzERif/jAAAAAwEAAQAAAQAj3Qg6ykBb7qOwtg5v
98seoCEze/nbEIlp6b014ysZEH/ssHtAZ9ZeC2ycge2qnN2hFaFpEt4Hcab+lC95p4o0zV
Nj5NYl4CJZlapuH4iN1j3I4mpXduwxUViDWXGAEWJSoDcYeJ67OttA05B4WssCdcfDCTs6
b9kb0djF5JM1Bee0A6O1g8nQPWtxjkFLfS5M0/PEwoMj7Slq+mQirZSzXeTMu5mZ4bLtNd
n7lTJxAV5zKDX1QsKvWFw5Rj74AG4ppGfGTuUkM5tBSkim7DSl0TiEW4Y9Q2oALZiDSrXy
g8EfTGrtVphJZzKCfFdJ7TtWaSqYohDWKt5xMZK0+f2xAAAAgFCJKXFxjCMf5NOke8EId0
mo0tEaxmyFdSfgqdWZqY2ZTZ+G/JODs4R8YOhIpmL6UfqD8MUw/B+smBPE02IDFjPpAYof
OQTPQSZxJdvSzyxfnUZIC3UlUIBm2u1qWxXTWxLJ5yg4JbUmF39U1O2Ye9oVpCxzT09iVs
7b8EitCQ9VAAAAgQDoMGkkM4XNIo2bmLTx0o3JntkrxpeKm4igX52/cgpnUVLvgXRBv2tM
Mif7baxWwtecW9p0y0w2WkqWsZZGRVQvUBf0NWx21xw1KWayCWXWCJgznjePJc7KzzxTod
eCW1pS0WbGqeCDx100xxxuCJCe4FB/YMpO5zyClAZUCRjqqwAAAIEA5GDj7zXXwNb1viJO
fMLCcK28Qhho2ueIOZIZF2TqcgElQaPUHVrBHQUtr/wEPqFYGLRP2qAiBNEQCL0QmuA94P
FxaKbQThtW/MZxSweitRxl5brua8jVofx2+6w/CNTco4DdmSceV0mZEKm+LPPaZsdM9g/b
huHbDn6nuAsFP6kAAAAMcm9vdEBqZW5raW5zAQIDBAUGBw==
-----END OPENSSH PRIVATE KEY-----

在这里插入图片描述

jenkins添加从节点
在这里插入图片描述

192.168.1.51 是jenkins容器运行所在的宿主机
Host Key Verification Strategy 选non
/opt/java/openjdk/bin/java 是容器里面的java路径
在这里插入图片描述查看正常
在这里插入图片描述

基于Docker容器的动态Agent

#192.168.1.52
docker service 添加
vim /usr/lib/systemd/system/docker.service
-H tcp://0.0.0.0:2376

root@ubuntu20:~/.ssh# systemctl daemon-reload
root@ubuntu20:~/.ssh# systemctl restart docker.service

jenkins 服务器测试

root@jenkins:~# curl http://192.168.1.52:2376/version
{"Platform":{"Name":"Docker Engine - Community"},"Components":[{"Name":"Engine","Version":"24.0.7","Details":{"ApiVersion":"1.43","Arch":"amd64","BuildTime":"2023-10-26T09:08:01.000000000+00:00","Experimental":"false","GitCommit":"311b9ff","GoVersion":"go1.20.10","KernelVersion":"5.4.0-81-generic","MinAPIVersion":"1.12","Os":"linux"}},{"Name":"containerd","Version":"1.6.24","Details":{"GitCommit":"61f9fd88f79f081d64d6fa3bb1a0dc71ec870523"}},{"Name":"runc","Version":"1.1.9","Details":{"GitCommit":"v1.1.9-0-gccaecfc"}},{"Name":"docker-init","Version":"0.19.0","Details":{"GitCommit":"de40ad0"}}],"Version":"24.0.7","ApiVersion":"1.43","MinAPIVersion":"1.12","GitCommit":"311b9ff","GoVersion":"go1.20.10","Os":"linux","Arch":"amd64","KernelVersion":"5.4.0-81-generic","BuildTime":"2023-10-26T09:08:01.000000000+00:00"}

安装插件docker-plugin
在这里插入图片描述

tcp://192.168.1.52:2376 #docker所在的地址

在这里插入图片描述
docker-agent2 docker-dyn-agent-2 #标签 ,流水线要配置标签才能使用
jenkins/inbound-agent:jdk11 #镜像
在这里插入图片描述

构建提示失败重启jenkins后成功:
在这里插入图片描述

在这里插入图片描述

在Docker Cloud上添加ssh Agent模板

系统管理-clounds
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

编辑修改流水线
在这里插入图片描述
查看使用了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/191841.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【电路笔记】-诺顿定理(Norton‘s Theorem)

诺顿定理(Norton’s Theorem) 文章目录 诺顿定理(Nortons Theorem)1、概述与定义2、诺顿模型确定3、一些线性电路的诺顿模型3.1 单电压源3.2 单电流源3.3 多电流/电压源 5、总结 本文是我们上一篇有关戴维南定理的文章的延续。 在…

计算机缺失vcruntime140.dll如何修复?超简单的5个解决方法

在我们日常使用电脑的过程中,可能会遇到各种各样的问题和错误提示。其中,一个比较常见的错误提示就是“vcruntime140.dll丢失”。这个错误通常发生在我们尝试运行某个程序或应用时,系统无法找到或加载所需的vcruntime140.dll文件。 vcruntime…

2021年06月 Scratch(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 小猫位置在舞台中心,点击一次小猫后能前进10步的程序为? A: B: C: D: 答案:B 第2题 快速切换到下一个背景图片应该使用哪个积木? A: B:

Java入门篇 之 继承

本篇碎碎念:最近的课程遇到瓶颈了,看的时候感觉自己会了,但是结束仔细一回顾还是一知半解,一点一点来吧,基础必须要打好(自己给自己好的心里暗示,结局一定是好的) 今日份励志文案:慢慢改变,慢慢…

酷柚易汛ERP-购货订单操作指南

1、应用场景 先下购货订单,收货入库后生成购货单。 2、主要操作 2.1 新增购货订单 打开【购货】-【购货订单】新增购货订单。(*为必填项,其他为选填) ① 录入供应商:点击供应商字段框的 ,在弹框中选择供…

hive和spark-sql中 日期和时间相关函数 测试对比

测试版本: hive 2.3.4 spark 3.1.1 hadoop 2.7.7 1、增加月份 add_months(timestamp date, int months)add_months(timestamp date, bigint months)Return type: timestampusage:add_months(now(),1) 2、增加日期 adddate(timestamp startdate, int days)…

如何判断从本机上传到服务器的文件数据内容是一致的?用md5加密算法!

问题场景 最近在帮导师做横向,我想把整个项目环境放到服务器中,需要把一个很大的数据文件传到服务器,传上去很方便,但是涉及到文件的压缩上传和服务器内解压环节,不是太确定文件在本机和服务器的数据内容是否一致。 解…

由于找不到msvcp140.dll无法继续执行代码有哪些解决方法

msvcp140.dll是Microsoft Visual C 2015 Redistributable的一个组件,它是运行许多Windows应用程序所必需的。当msvcp140.dll丢失或损坏时,可能会导致以下问题: 1. 程序无法启动或崩溃。 2. 系统出现错误提示,如“找不到msvcp140…

开启学历新征程,电大搜题助您轻松获取知识

作为一名电大学者,有肩负着传递真实信息、宣传正面价值的使命,而今天我要向您介绍的是一款非常实用的学习工具——电大搜题微信公众号。通过该平台,您可以获得更多关于浙江开放大学和广播电视大学的学习资源,助您在学习和工作上取…

酷柚易汛ERP- 组装单与拆卸单操作

1、功能介绍 组装单用来处理企业组装等加工业务,拆卸单用来处理企业拆卸等加工业务,支持一对多的产品加工业务。 2、主要操作 2.1 新增组装单 打开【仓库】-【组装单】新增组装单。 录入组合件与子件,单据审核后,系统根据存货…

【Python】Matplotlib-多张图像的显示

一,情景描述 大家在写论文或者实验报告的时候,经常会放多张图片或数据图像在一起形成对比。比如,我现在有一张经过椒盐噪声处理的图像,现在进行三种滤波,分别是均值,高斯,中值滤波,…

面向对象基础(以python语言为例)

1、定义一个类;实例化类的对象;调用类中的方法 #定义一个类 class Student:#类方法(即函数)def study(self,course_name):print(f学生正在学习{course_name})def play(self):print("xx学生正在玩游戏")#实例化&#xf…

如何在 macOS 中删除 Time Machine 本地快照

看到这个可用82GB(458.3MB可清除) 顿时感觉清爽,之前的还是可用82GB(65GB可清除),安装个xcode都安装不上,费解半天,怎么都解决不了这个问题,就是买磁盘情理软件也解决不了…

Windows上基于Tesseract OCR5.0官方语言库的LSTM字库训练

系列文章目录 Tesseract OCR引擎 文章目录 系列文章目录前言一、LSTM字库训练是什么?二、使用步骤1. 环境准备1.1下载Tesseract 程序并安装1.2下载Tesseract 训练字库1.3下载工具jTessBoxEditor 2. LSTM训练2.1 将要训练的图片(jpg/tif)合并成一个文件2.2 生成box文…

自定义Matplotlib中的颜色映射(cmap)

要自定义Matplotlib中的颜色映射(cmap),您可以按照以下步骤进行操作: 导入所需的库: import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import LinearSegmentedColormap创建自定义颜色映…

面试官问 Spring AOP 中两种代理模式的区别?很多面试者被问懵了

面试官问 Spring AOP 中两种代理模式的区别?很多初学者栽了跟头,快来一起学习吧! 代理模式是一种结构性设计模式。为对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,并允许在将请求提交给对象前后进行一…

C++模拟实现——AVL树

AVL树 1.介绍 AVL树是对搜索二叉树的改进,通过特定的方法使得每个节点的左右子树高度差绝对值不超过1,使得避免出现歪脖子的情况,最核心的实现在于插入值部分是如何去实现平衡调整的,由于前面详细实现和解析过搜索二叉树&#x…

OV5640的参数与配置方法

分辨率和速率(FPS) 寄存器配置 I/O 板的驱动能力和方向控制 system clock control OV5640 PLL 允许输入时钟频率范围为 6~27 MHz,最大 VCO 频率为 800 MHz。 MipiClk 用于 MIPI,SysClk 用于图像信号处理 (ISP) 模块的内部时钟。 …

新版本Idea设置启动参数

1.进入配置页面 2.点击下图红框的部分,会看到有很多操作可选 3.选择添加VM参数即可 此时就会多出一个可以输入参数的框了,如下:

网络和Linux网络_1(网络基础)网络概念+协议概念+网络通信原理

目录 1. 网络简介 1.1 独立模式和互联网络模式 1.2 局域网LAN和广域网WAN 2. 协议和协议分层 2.1 协议的作用 2.2 协议分层 2.3 OSI七层模型 3.2 TCP/IP四层(五层)模型 3. 网络通信原理 3.1 协议报头 3.2 局域网和解包分用 3.3 广域网和跨网络 4. 网络中的地址 4…