逐步分解,一文教会你如何用 jenkins+docker 实现主从模式

news2025/2/11 15:49:45

♥  前  言

jenkins 主从模式想必大家都不陌生,大家在学习过程中为了学习方便都在自己本地搭建了 jenkins 环境,然后通过 javaweb 方式实现,对于 docker 下实现主从模式大家好像兴趣挺大。今天就通过这篇文章给大家讲讲怎么玩,希望对大家有帮助。

一、环境准备

  1. 准备一台 Linux 服务器(云服务器、自建 Linux 服务器都可以)

  2. 在 Linux 服务器上安装 docker

  3. 拉个 jenkins 镜像下来,再启动一个 jenkins 容器

  4. docker 中把这个镜像 jenkins/ssh-slave 拉下来(jenkins 提供的专门用来做主从的镜像)

  5. OK 准备工作就做完了

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386     

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a

二、准备开工
第一步:docker 开启远程访问,需要开启 2375 端口,这个端口慎重开启(我用的是 centos)
  1. 打开 docker.service 文件
    VIM /usr/lib/systemd/system/docker.service

  2. 在 docker.service 文件的[Service]下添加如下内容
    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

  3. 重新启动 docker 服务,让 docker 重新读取配置文件
    systemctl daemon-reload
    systemctl restart docker

  4. 验证,查看 docker 进程,如果 docker 守护进程在已经监听 2375 的 tcp 端口,就算成功开启了 2375 端口

    图片

  5. 进一步验证,通过其他机子访问 docker 宿主机
    sudo docker -H tcp://139.129.130.123:2375 images
    上面这个命令相当于直接在 docker 宿主机上执行 docker images 命令,能正确返回就表示没问题

第二步:下载官网镜像(顺便再提一下,不要忘记了)
  1. docker pull jenkins/ssh-slave

第三步:以 jenkins/ssh-slave 为基础打一个有 python3 环境的新镜像
  1. 创建一个 dockerfile 目录

  2. 将项目执行依赖的 python 包文件放到 dockerfile 目录下(怎么生成依赖文件不写了,默认你们是高手都会)

requests==2.24.0
openpyxl
ddt
pytest
selenium
pymysql
pyyaml==5.3.1
faker
jsonpath
BeautifulReport
unittestreport
rsa
pytest-html
Appium-Python-Client
  1. 创建一个名为 sources.list 的文件(名字不能改必须是这个名字),加入如下内容
    在 jenkins/ssh-slave 镜像/etc/apt/目录下
    deb http://mirrors.163.com/debian/ buster main non-free contrib
    deb http://mirrors.163.com/debian/ buster-updates main non-free contrib
    deb http://mirrors.163.com/debian/ buster-backports main non-free contrib
    deb-src http://mirrors.163.com/debian/ buster main non-free contrib
    deb-src http://mirrors.163.com/debian/ buster-updates main non-free contrib
    deb-src http://mirrors.163.com/debian/ buster-backports main non-free contrib
    deb http://mirrors.163.com/debian-security/ buster/updates main non-free contrib
    deb-src http://mirrors.163.com/debian-security/ buster/updates main non-free contrib
    sources.list 作用说明:官方提供的 jenkins/ssh-slave 并没有 python,需要安装 python 就要去更新他的安装包,此时如果使用他默认的镜像源会非常慢,因此我们换一个更快的源,将它原来的文件覆盖掉就行了,这里要根据自己的版本号进行修改,我的是 buster 版本,当然你下载后也应该是和我的一样。

  2. 写 Dockerfile

FROM jenkins/ssh-slave:latest
USER root
WORKDIR /app
ADD requirements.txt  /app
ADD sources.list /etc/apt/
RUN echo export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8" >> /etc/profile
RUN apt-get -y update  && apt-get -y install python3 && apt-get -y install python3-pip && pip3 install -r requirements.txt -i https://pypi.douban.com/simple
  1. 执行镜像构建命令
    docker build -t jenkins/ssh-slave:v2.0 .

第四步:配置 jenkins 从节点
  1. 进到节点配置页面
    manage jenkins---> Slave Node(节点管理)--->ConfigureClouds

图片

你将看到如下页面

 

  1. 点 Add a new cloud 下拉选择 docker,点完来到如下页面

    图片

  2. 点开 Docker Cloud details 进行配置,点开后页面如下

    图片

  3. 点开 Docker Agent templates,你将看到如下页面

    图片

  4. 点开下图的高级选项

    图片

  5. 高级选项具体配置如下图

    图片

    图片

  6. 配置完成后记得保存,最好是边配置边保存,养成好习惯。

第五步:将 docker slave 绑定到你的 jenkins 任务
  1. 新建任务,选择自由风格项目

    图片

  2. 限制项目运行节点,选择新建的节点(Labels)

    图片

  3. 配置 Git

    图片

  4. 配置 shell 命令

    图片

  5. 配置测试报告

图片

图片

图片

第六步:构建你的项目
  1. 开始构建后在你的构建队列那会看到如下图所示

图片

2. 构建完成之后,点你的项目,来到这里会有构建记录,点进去可以看构建日志

图片

3. 查看测试报告

图片

4. 测试报告如下

图片

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaEE进阶】Bean 作用域和生命周期

文章目录 一. 关于Bean作用域的实例1. lombok2. 实例代码 二. 作用域定义1. Bean的六种作用域2. 设置作用域 三. Spring 执行流程和 Bean 的生命周期1. Spring 执行流程2. Bean生命周期 一. 关于Bean作用域的实例 注意在此例子中需要用到lombok 1. lombok lombok是什么? Lo…

android ndk clang交叉编译ffmpeg动态库踩坑

1.ffmpeg默认使用gcc编译,在android上无法使用,否则各种报错,所以要用ndk的clang编译 2.下载ffmpeg源码 修改configure文件,增加命令 cross_prefix_clang 修改以下命令 cc_default"${cross_prefix}${cc_default}" cxx…

Jmeter请求接口返回值乱码解决

乱码示例 解决步骤: 1.打开Jmeter安装目录下的bin目录,找到jmeter.properties 2.使用记事本或其他编译工具打开jmeter.properties文件,然后全局搜索sampleresult.default.encoding 3.在文件中添加sampleresult.default.encodingutf-8,保存…

C++入门篇7---string类

所谓的string类,其实就是我们所说的字符串,本质和c语言中的字符串数组一样,但是为了更符合C面向对象的特性,特地将它写成了一个单独的类,方便我们的使用 对其定义有兴趣的可以去看string类的文档介绍,这里…

【在树莓派上安装cpolar内网穿透实战】

文章目录 前言1.在树莓派上安装cpolar2.查询cpolar版本号3.激活本地cpolar客户端4.cpolar记入配置文件 前言 树莓派作为一个超小型的电脑系统,虽然因其自身性能所限,无法如台式机或笔记本等准系统一样,运行大型软件或程序(指望用…

ecology-自定义浏览按钮实现多处引用可定制不同查询条件。

1.新建ecode代码,前置加载,代码内容: ecodeSDK.overwritePropsFnQueueMapSet(WeaBrowser,{ //组件名fn:(newProps)>{ //newProps代表组件参数 if(newProps.type162 || newProps.type161){//console.log("自定义浏览框");if(!ne…

日常BUG——使用Long类型作id,后端返回给前段后精度丢失问题

😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 数据库long类型Id: 前端返回的Id实体类: Data ApiModel("xxx") public class …

数据结构顺序表

今天主要讲解顺序表,实现顺序表的尾插,头插,头删,还有尾删等操作,和我们之前写的通讯录的增删查改有类似的功能。接下来让我们开始我们的学习吧。 1.线性表 线性表(linear list)是n个具有相同特…

保证接口数据安全的10种方式

我们日常开发中,如何保证接口数据的安全性呢?个人觉得,接口数据安全的保证过程,主要体现在这几个方面:一个就是数据传输过程中的安全,还有就是数据到达服务端,如何识别数据,最后一点…

安达发|企业如何提高生产实现精细化管理

随着市场竞争的加剧,企业如何提高生产效率和降低成本成为了关键。本文将探讨生产计划排程表的制定方法,帮助企业实现精细化管理,提升竞争力。 在传统的生产管理中,企业往往依赖于人工经验和直觉来制定生产计划,导致生产…

docker复现Nginx配置漏洞

目录 1.docker环境搭建 2.复现过程 2.1CRLF(carriage return/line feed)注入漏洞 2.2.目录穿越 2.3.add_header覆盖 1.docker环境搭建 1.安装docker apt-get update apt-get install docker.ioyum install docker.io 2.下载并解压docker环境Nginx配置漏洞安装包 链接&am…

最强的表格组件—AG Grid使用以及License Key Crack

PS: 想要官方 License Key翻到最后面 Ag Grid简介 Ag-Grid 是一个高级数据网格,适用于JavaScript/TypeScript应用程序,可以使用React、Angular和Vue等流行框架进行集成。它是一种功能强大、灵活且具有高度可定制性的表格解决方案,提供了丰富…

23款奔驰AMG GT50升级原厂HUD抬头显示系统,增加您的行车安全性

HUD是平视显示器的简称,它原先是运用在航空器上的飞行辅助仪器。指飞行员不需要低头,就能够看到他需要的重要资讯。由于HUD的方便性以及能够提高飞行安全,这项技术后来也发展到汽车行业。汽车搭载的HUD抬头数字显示功能,是利用光学…

类的默认成员函数(C++)

类的默认成员函数 1.构造函数特性 2.析构函数特性 3.拷贝构造函数特性 4.赋值重载函数运算符重载赋值运算符重载 const成员函数取地址运算符重载 1.构造函数 构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用&#xff0c…

怎么制作gif动态图?gif图片在线制作攻略分享

现在许多品牌和营销活动也使用gif动态图来吸引用户注意力、提升品牌形象或传递特定的信息,那么gif制作的过程到底难不难呢?其实只需要使用gif图片在线制作工具就非常简单了,下面以图片制作gif(https://www.gif.cn)为例…

一个事务插入,另外一个事务更新操作,是否会更新成功?

1.前言 同样另外一个非常有意思的题目,值得我们思考。大概背景是这个样子的。如果有一个事务A进行插入 id > 100, 同时另外一个事务B进行更新update id > 100。那么事务B是否会更新成功。我们来画一个时序图: time事务A事务B备注T1insert id >…

MPAS-A原理及陆面模式的基本概念

跨尺度预测模式(The Model for Prediction Across Scales - MPAS)是由洛斯阿拉莫斯实验室和美国国家大气研究中心(NCAR)共同开发,其由3个部分组成,分别称为 MPAS-A(大气模型)、MPAS-O(海洋模型&…

Nginx+Tomcat负载均衡、动静分离实例详细部署

一、反向代理两种模式 四层反向代理 基于四层的iptcp/upd端口的代理 他是http块同一级,一般配置在http块上面。 他是需要用到stream模块的,一般四层里面没有自带,需要编译安装一下。并在stream模块里面添加upstream 服务器名称,…

uni-app日期选择器

写个简单的日期选择器&#xff0c;还没搞样式&#xff0c;所以有点丑 大概长这样吧 首先是这个picker选择器&#xff0c;mode选择日期&#xff0c;end是写一个范围前日期&#xff0c;:end就是这个日期是动态变化的&#xff0c;还有change函数 <template><view>&l…

LeetCode150道面试经典题--验证回文串(简单)

1.题目 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&#xff0c;如果它是 回文串 &#xff0c;返回 true &#xff1b;否…