我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Jenkins-slave分布式跨网络发布

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Jenkins-slave分布式跨网络发布

Jenkins的Master-Slave分布式架构主要是为了解决Jenkins单点构建任务多、负载较高、性能不足的场景。Master-Slave相当于Server和Agent的概念。

Master提供web接口让用户来管理job和Slave,job可以运行在Master本机或者被分配到Slave上运行构建。

一个Master(Jenkins服务所在机器)可以关联多个Slave用来为不同的job或相同的job的不同配置来服务。

 

环境说明

系统版本主机名ip地址说明
centos 7.6jenkins10.212.82.86jenkins服务器
centos 7.6office-145192.168.31.145办公室测试

 

 

 

 

 

说明:

jenkins-->office-145  网络是不通的。

office-145-->jenkins  网络是通的。

 

现在要求jenkins能一键发布到office-145,那么很明显一个问题。网络是不通的,怎么实现。

后来我研究发现,通过Jenkins-slave就能实现跨网络发布。

 

配置前准备

jenkins服务器已经安装好了,请参考链接:

https://www.cnblogs.com/xiao987334176/p/13032339.html

 

office-145需要安装一下jdk

解压jdk

mkdir /data
tar zxvf jdk-8u211-linux-x64.tar.gz -C /data/

 

添加环境变量

vim /etc/profile

 

最后一行添加

set java environment
JAVA_HOME=/data/jdk1.8.0_211/
JRE_HOME=/data/jdk1.8.0_211/jre     
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH


重新加载环境变量

source /etc/profile

 

查看java版本

java -version

 

安全配置

登录Jenkins服务器-->Manage Jenkins-->Configure Global Security

找到代理,勾选随机端口

1.png

 

 

新建节点

登录Jenkins服务器-->Manage Jenkins-->Manage Nodes and Clouds

点击新建节点

1.png

 

 

输入节点名称,第一次配置只能选这个选项,表示所有配置重新填写。

1.png

 

填写相关信息

 1.png

 

说明:

名称:节点名称,上一步新建时的名字

描述:节点描述,主要说明这个节点机器主要用来做什么工作,可随意填写。

并发构建数:此机器可同时执行任务的数量

远程工作目录:这个目录就填写Jenkins服务器的安装目录即可,其实也可以指定其他目录

标签:标记节点机器的一个标记,后面会用到这个名字,可随意填写。

用法:此项根据根据自己的需求选择即可。

           Only build jobs with label expressions matching this node 表示仅生成标签表达式与此节点匹配的作业。注意:我这里是执行特定的任务,不是执行所有任务。

           如果需要执行所有Jenkins任务,选择:Use this node as much as possible

启动方式:此项是说明节点链接Jenkins时的方式,不同版本略有不同。这个启动方式大体意思是通过代理连接服务器,但是后期你会发现和java web启动是一样的(具体有啥区别就不清楚了,也许就是java web启动吧)

 

点击保存

1.png

 

点击节点

1.png

 

跳转页面,下载2个文件,分别是slave-agent.jnlp和agent.jar 

1.png

上面的命令任选其一,我这里选择第一个。

 

登录主机office-145,创建目录

mkdir -p /data/jenkins
mkdir -p /data/jenkins-slave

 

将下载好的2个文件,上传到/data/jenkins-slave目录。

启动代理

cd /data/jenkins-slave/
java -jar agent.jar -jnlpUrl http://10.212.82.86:8080/computer/office-145/slave-agent.jnlp -secret f6bfb3d0a0e58f71704aebb4af9417bdf3a85b105ab587b808f7339e6aaf7d15 -workDir "/data/jenkins"

输出

六月 17, 2020 4:00:03 下午 org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
信息: Using /data/jenkins/remoting as a remoting work directory
六月 17, 2020 4:00:03 下午 org.jenkinsci.remoting.engine.WorkDirManager setupLogging
信息: Both error and output logs will be printed to /data/jenkins/remoting
六月 17, 2020 4:00:04 下午 hudson.remoting.jnlp.Main createEngine
信息: Setting up agent: office-145
六月 17, 2020 4:00:04 下午 hudson.remoting.jnlp.Main$CuiListener <init>
信息: Jenkins agent is running in headless mode.
六月 17, 2020 4:00:04 下午 hudson.remoting.Engine startEngine
信息: Using Remoting version: 4.2.1
六月 17, 2020 4:00:04 下午 org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
信息: Using /data/jenkins/remoting as a remoting work directory
六月 17, 2020 4:00:04 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Locating server among [http://10.212.82.86:8080/]
六月 17, 2020 4:00:04 下午 org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver resolve
信息: Remoting server accepts the following protocols: [JNLP4-connect, Ping]
六月 17, 2020 4:00:04 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Agent discovery successful
  Agent address: 10.212.82.86
  Agent port:    20251
  Identity:      1d:f0:4e:5f:34:5f:87:63:60:42:13:e5:38:b1:1b:f0
六月 17, 2020 4:00:04 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Handshaking
六月 17, 2020 4:00:04 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Connecting to 10.212.82.86:20251
六月 17, 2020 4:00:04 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Trying protocol: JNLP4-connect
六月 17, 2020 4:00:05 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Remote identity confirmed: 1d:f0:4e:5f:34:5f:87:63:60:42:13:e5:38:b1:1b:f0
六月 17, 2020 4:00:08 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Connected

查看状态。提示已经同步了

1.png

自由风格

接下来配置一下Job,测试一下项目在节点主机上是否能够成功构建并执行

新建项目,选择自由风格。

1.png

 

配置general

1.png

 

 

 标签表达式输入的是之前配置的节点标签名。

 

添加构建步骤

1.png

 

 这里的命令是查看主机名

 

保存之后,执行一下构建。

1.png

 

 

查看控制台输出

1.png

 

 发现输出的主机名是正确的。

 

流水线

 1.png

 

 

配置greneral,注意:这里是不能选择slave节点的。

1.png

 

 

流水线

1.png

 

 完整代码如下:

pipeline{
    agent{ label '192.168.31.145'}
    stages{
        stage('test cmd'){
            steps{
                sh 'hostname'
            }
        }
    }
}

这里指定了slave节点为192.168.31.145

 

保存配置之后,点击构建

 1.png

 

 

查看输出结果

1.png

 

 可以看到输出结果正确

 

本文参考链接:

https://www.cnblogs.com/linuxchao/p/linunx-Jenkins-slave.html

https://blog.csdn.net/tellmewhyto/article/details/81546477


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Jenkins-slave分布式跨网络发布

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Jenkins-slave分布式跨网络发布

Jenkins的Master-Slave分布式架构主要是为了解决Jenkins单点构建任务多、负载较高、性能不足的场景。Master-Slave相当于Server和Agent的概念。Master提供web接口让用户来管理job和Slave,
2023-01-31

DDoS攻击是怎么利用分布式网络来发起攻击的

DDoS(分布式拒绝服务)攻击利用多个分布在不同地区的计算机或网络设备向目标服务器或网络发送大量的请求,使其无法正常响应其他合法用户的请求。这些分布在不同地区的计算机或网络设备被控制者(攻击者)通过恶意软件感染或控制,形成一个庞大的网络,被
DDoS攻击是怎么利用分布式网络来发起攻击的
2024-04-15

网络操作系统:跨越物理藩篱,实现分布式计算的无限可能

网络操作系统横空出世,突破了地理位置、时空距离的限制,构建出分布式计算的新格局。借助网络操作系统,可将其分布于多个独立节点的运行资源进行整合和优化调度,由此实现强强联合,打破计算瓶颈。
网络操作系统:跨越物理藩篱,实现分布式计算的无限可能
2024-02-11

网络操作系统之神:掌控分布式世界的利刃

网络操作系统是统领分布式世界的神秘利刃,通过软件定义网络,赋予网络灵活性和弹性,使之能承载海量应用,并满足不断扩展的需求
网络操作系统之神:掌控分布式世界的利刃
2024-02-26

网络操作系统:掌握分布式应用的制胜关键

网络操作系统(NOS)是分布式应用领域的重要基础设施,它通过提供统一的管理和控制平台,帮助企业和组织高效部署和运行分布式应用。本文将探讨 NOS 的核心概念、优势和实施策略,并提供一些实际的演示代码示例,帮助读者深入理解 NOS 的工作原理和应用场景。
网络操作系统:掌握分布式应用的制胜关键
2024-02-26

计算机网络中分布式爬虫使用代理IP的方法

这篇文章主要介绍了计算机网络中分布式爬虫使用代理IP的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、方法一,每个进程从接口API中随机取一个IP来运用,失败则再调用A
2023-06-15

网络操作系统:分布式计算的基石,连接世界的纽带

网络操作系统作为分布式计算的基石,在现代计算机网络中发挥着至关重要的作用,它连接着全球各地的计算机,使它们能够相互通信和共享资源。
网络操作系统:分布式计算的基石,连接世界的纽带
2024-02-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录