基于 Docker 的 Jenkins 持续集成与持续部署

CentOS+Docker+jenkins+SVN/Github+Tomcat实现持续集成和持续部署 一、Centos安装 Centos安装详情访问:https://www.runoob.com/linux/linux-install.html 二、Docker安装 Docker安装详情访问:https://www.runoob.com/docker/centos-docker-install.html 三、jenkins安装 1、使用docker安装jenkins (1).docker ... 阅读详情

基于 Docker 的 Jenkins 持续集成与持续部署

前言

随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致。

基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化。

持续集成,持续部署,持续交付对于微服务开发来说,是提高团队整体效率不可或缺的一环。合理的使用CI,CD能够极大的提高了生产效率,也提高了产品的交互质量。

本文主要介绍下基于Jenkins+docker 实现自动化部署,希望阅读此文对maven,docker的使用有一定的了解

Jenkins + Docker

下图是构想的网络结构图

 

大体结构

1.开发人员在gitLab上打了一个tag

2.gitLab把tag事件推送到Jenkins

3.Jenkins 获取tag源码,编译,打包,构建镜像

4.Jenkins push 镜像到阿里云仓库

5.Jenkins 执行远程脚本

5-1. 远程服务器 pull 指定镜像

5-2. 停止老版本容器,启动新版本容器

6.通知测试人员部署结果

基于maven构建镜像,上传阿里云docker仓库

maven 构建镜像配置

pom.xml 文件添加 docker 插件

 

.${docker.image.prefix} 是镜像的前缀

.${project.artifactId} 是镜像名字

.${project.version} 版本号,此处也用来当做镜像的版本号

docker-maven-plugin 使用可以自行百度。

src/main/docker 目录下新增文件 Dockerfile,内容如下:

 

以上的配置可以把一个服务打包成镜像,只需要执行


阿里云docker仓库使用

注册或者启用阿里云 docker 仓库就不赘述。下面简单介绍上传拉取docker镜像

登录

 

push 之前生成的镜像

xxx : 是你镜像仓库的namespace

一堆push后,你就可以在阿里云的Docker镜像仓库里面看到你对应的镜像了。下图是我们公司的部分镜像列表。

pull 镜像

登录操作同上

$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/xxx/demo-service:[镜像版本号]

Jenkins 部署配置

构建 Jenkins 镜像

 

一开始使用官方的镜像直接启用,一些插件和配置多少都有点问题,比如不能使用sudo,等等。因此基于官方镜像构建一个更符合我们需要的镜像。

构建命令:

 

启动Jenkins容器

 

简单解释下:

-v /var/run/docker.sock:/var/run/docker.sock 与 -v /usr/bin/docker:/usr/bin/docker 是把宿主机docker 映射到容器内。

-v /home/buxiaoxia/software/jenkins:/var/jenkins_home 指定Jenkins的宿主机存储路径

-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 在centos7 系统下会出现个别的包丢失,对应的引下宿主机的包就可以。

docker在容器内构建的时候,如果出现权限不够什么的。可以在宿主机中使用以下两种方式:

$ sudo chmod 777 /var/run/docker.sock

或者

$ usermod -a -G docker jenkin

Jenkins 启动后,访问对应的Jenkins页面,初始化只要一步步跟着走就可以了。

Jenkins 配置

插件下载

所需要的插件:

Maven Integration plugin

docker-build-step

Docker plugin

Gitlab Hook Plugin

GitLab Plugin

因为使用的是gitlab,对应的插件也是必须的。下载完插件后,maven等相关插件配置好(此处省略…)

maven 镜像地址配置

可以直接在宿主机修改,路径在: /home/buxiaoxia/software/jenkins/tools/hudson.tasks.Maven_MavenInstallation/maven3-1/conf 下的settings.xml

setting.xml 镜像改成阿里云的就OK,飞起。。。

新建一个maven job

源码配置

 

构建

 

构建后执行特定脚本

 

脚本内容如下:

 

jenkins.sh 脚本内容:

 

以上就完成了一个简单的自动化构建

gitlab配置webhook

Jenkins安装完对应的gitlab插件,配置中的构建触发选择如下

 

复制红框中的url

再在gitlab的对应项目中webhooks页面中的url填入前面复制的url

保存即可,右下角可以点击测试哦。

配置完成后,每次该项目有个tag push event ,都会触发Jenkins的自动构建。接着,Jenkins就执行 拉取源码 -> 编译 -> 构建镜像 -> 推送镜像 -> 执行远程启动脚本完成部署。

总结

一步步的配置,基本就跑通了我们基于Jenkins,docker实现自动化部署的初始版本。开发人员完成功能开发后,需要交互一个测试版本,只需要推送一个tag到git仓库,就能够将代码自动部署到特定的服务器上。可喜可贺~

可以省去一堆的从一个服务器跑到另一个服务器,然后执行各种命令的琐碎操作。。。

关于配置

目前我是使用了consul的配置共享,把不同环境的配置放在了consul上,镜像中没有保留可变的配置,而是根据启动的参数就可以自由切换环境配置。

当然,consul的配置共享可以看看我git上关于consul的项目:http://git.oschina.net/buxiaoxia/spring-demo

存在问题

Docker 未使用编排,较为独立,需要知道特定的服务器网络位置

Docker 镜像的 push 与 pull,都需要明文执行阿里云账号密码,可进一步改进

未构建版本回退流程

shell脚本健壮性不够,异常未处理

优化

可以针对以上问题做相应的优化,完善初始化版本的CD流程。例如,docker 使用swarm,让 swarm 管理 docker 容器等等。

如果大家对于学习Python有任何问题,学习方法,学习路线,如何学习有效率的问题,可以随时来咨询我,或者缺少系统学习资料的,我做这行年头比较久,自认为还是比较有经验的,可以帮助大家提出建设性建议,这是我的Python交流qun:785128166,有任何问题可以随时来咨询我。
 

前端docker jenkins nginx CI/CD持续集成持续部署-实战 前端docker jenkins nginx CI/CD持续集成持续部署-实战 阅读详情

相关推荐

持续集成和持续部署(CICD)

## 1. 持续集成(CI) **定义**:持续集成是将代码变更自动测试并合并到共享代码库中的实践,每天多次进行。这一过程有助于在开发周期早期发现集成问题。 ### 关键组成部分: - **版本控制系统(VCS)**:CI 依赖 VCS(如 Git)来管理代码变更。开发者频繁地将代码变更推送到中央代码库。 - **自动化测试**:每次提交代码到代码库时,都会运行自动化测试。这些测试包括单元测试、集成测试和端到端测试,以确保新变更不会破坏现有功能。 - **构建自动化**:CI 工具在代码变更后自动构建

weixin_55361855的博客 2011

Docker搭建Jenkins持续集成

-target指定的是之前创建Python环境的目录,我们需要将库安装在此目录下。因为我们的Python环境使用的是该路径,如果只是执行pip3 install的话,会将库装在全局环境,但我们的Python环境又使用的不是全局环境,执行Python代码时会报错,找不到库。点击添加后,这个报错是因为我是局域网,百度搜索IP查询,将上面的IP重新换为百度查询的公网IP,再次点击添加就好了。但是要注意换地方后这个IP会变的,可能需要重新在这里配置。我在容器内查看系统是debian的,所以使用apt命令。

LJT_1314520的博客 3341

使用Docker和Jenkins实现持续集成和持续部署

Docker是一种开源的容器化平台,它可以将应用程序及其依赖项打包到一个独立的容器中,使其能够在任何环境中运行。Docker的主要优势在于它提供了轻量级、可移植和可扩展的容器化解决方案。通过使用Docker,我们可以确保在不同的环境中运行相同的应用程序,从而消除了因环境差异而导致的问题。Jenkins是一个开源的持续集成和持续交付工具,它提供了一个可扩展的插件生态系统,可以帮助自动化构建、测试和部署软件。Jenkins的核心概念是作业(Job),一个作业代表了一个任务,比如构建应用程序、运行测试等。

DkDebug的博客 207

docker-jenkins 持续集成

docker-jenkins 持续集成 1.1Docker 1.1.1安装 1.1.1.1安装 Docker 查看是否已经安装docker,执行命令 docker 查看系统名称、节点名称、版本号等,执行命令 uname -a 更新yum,安装依赖包 yum update yum install -y yum-utils device-mapper-persistent-data lvm2 设置阿里云镜像源 yum-config-manager \ --add-repo \ http://mirror

架构师的成长之路的博客 1014

【ORB_SLAM系列4】—— 一文搞定如何在Ubuntu20.04中安装运行ORB_SLAM3(包含ROS版本和非ROS版本)

ORB-SLAM3是一款基于特征点的实时单目SLAM系统,是SLAM领域的研究热点之一。它的核心算法是结合了ORB特征点提取和描述子匹配、单目RGB相机的深度估计、运动估计和地图优化等步骤,能够在实时性和精度之间取得平衡,适用于各种环境下的定位和建图任务。在各种应用领域都有广泛的应用。本教程主要是介绍了关于在ubuntu20.04中运行ORB_SLAM3的所有依赖的库的安装过程,和所遇到的一些报错的解决方法。有什么问题,可以评论区里面交流讨论

2401_82458959的博客 5039

野火STM32F407(骄阳)+无刷直流驱动板+永磁同步电机控制学习记录(四)(基于HAL库)

以上内容都是参考别人资料自学的,很多地方都是凭感觉,因为理论部分不太会算,只要电机能转就行,其他性能指标都没考虑,因为不会,所以这纯属是学习记录帖。带宽在500时,电流波动小,但是响应很慢,就是堵转后不太容易恢复转动。速度环带宽设定小了,响应不够快,带宽设定大了波动比较大,电机感觉起来也震一点,而且,当带宽设到200的时候,启动直接就锁死了,应该是PI增益设定太大了。电流环带宽的试验:去掉速度环,让Iq_Set=2,Ud=0,此时电机是电流环闭环控制,用手堵转电机然后松开,看电流的波动以及响应情况。

XUEXIDEXIAOhai的博客 4553

Docker—jenkins + Docker持续集成

框架 1,Jenkins 服务和执行项目的Agent为同一台服务器,当然实际中也可以分开 2,Docker搭建Jenkins服务 3,登录Jenkins安装需要的插件并配置基本信息 4,创建构建项目基本信息和执行命令脚本 5,创建节点,节点机器为搭建Jenkins服务的服务器 6,执行构建 7,调试代码以展示美观的报告,调试邮件模板 搭建Jenkins服务 1,登录远程服务器 2,搭建Docker,配置镜像源 3,pull jenkins 镜像(注意:参数-d后台运行必加 | -p端口映射,–resta

猫的博客 1351

SAP ERP与金蝶云星空的集成案例(新能源光伏行业)

通过建设PLM、SAP、MES、WMS、SCADA、EAM等多系统集成的工业互联网平台作为数字化工厂的控制中枢,不仅可以实现人员、设备、物料、工艺参数、产品等生产全流程追溯管理,同时也可以根据数据采集进行生产现场的控制调节,最大程度降低能耗水平。销售订单创建下推金蝶采购订单创建修改、销售订单创建下推金蝶销售订单创建修改、销售发货过账下推金蝶采购入库单、销售发货过账下推金蝶销售出库单:在SAP ERP系统创建销售订单、销售发货过账单后推送到云星空系统,进行采购/销售订单的创建修改、完成物料的入库和出库流程。

集信通 1615

Docker搭建持续集成平台Jenkins最简教程

持续集成(Continuous Integration,CI)是软件开发中的一种实践,它旨在通过频繁地集成代码变更并自动运行测试,以确保代码的质量和稳定性。Jenkins 是一个广泛使用的开源持续集成工具,它能够自动化构建、测试和部署软件项目。在本文中,我们将使用 Docker 搭建一个基于 Jenkins 的持续集成平台。本文主要介绍了使用docker搭建持续集成平台Jenkins的步骤,Jenkins是最常用的持续集成平台,对于我们测试开发的工作有很大的帮助,希望本文能够帮到大家!

霍格沃兹测试学院的博客 1111

LIN协议栈 AUTOSAR架构下 状态管理

LIN State Manager 通过对这些状态的管理和转换,实现了对 LIN 总线通信状态的精确控制,以满足汽车电子系统中不同场景的需求。

汽车电子从业者,电子爱好者。 2051

海思Hi3516CV610--SPI NAND Flash移植实战:从手册到驱动的完整适配

本文详细介绍了海思Hi3516CV610芯片上SPI NAND Flash的移植实战,包括从手册解读到驱动适配的完整流程。以GD5F2GM7UEYIGR Flash为例,重点讲解了关键参数确认、模式选择、时序配置以及U-Boot和Linux内核驱动的具体实现步骤,帮助开发者快速完成Flash移植工作。

weixin_29158413的博客 446

Docker与Jenkins:实现高性能持续集成

1.背景介绍 1. 背景介绍 持续集成(Continuous Integration,CI)是一种软件开发实践,它要求开发人员定期将自己的工作代码集成到主干分支,以便及时发现并解决集成问题。这种实践有助于提高软件质量、减少集成风险和提高开发效率。 Docker是一个开源的应用容器引擎,它使用标准化的包装格式(容器)将软件应用及其所有依赖项(库、系统工具、代码等)打包成一个运行单元,并可以在任...

AI天才研究院 1203

华为OD机考双机位C卷 - 信道分配(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 信道分配

算法大师! 453

SpringBoot+Docker+Git+Jenkins实现简易的持续集成和持续部署

努力了这么久,但凡有点儿天赋,也该有些成功的迹象了。 前言 本篇文章引导你使用Jenkins部署SpringBoot项目,同时使用Docker和Git实现简单的持续集成和持续部署。(项目地址:sso-merryyou) 流程图如下: push代码到Github触发WebHook。(因网络原因,本篇使用gitee) Jenkins从仓库拉去代码 mavem构建项目 代码静态分析 ...

weixin_34233974的博客 1057

Altair HyperWorks软件二次开发:二次开发成果展示与报告撰写

HyperMesh Python API允许用户通过Python脚本控制HyperMesh的大部分功能,包括模型创建、修改和分析。它提供了丰富的函数库,可以处理节点、元素、材料属性、载荷和边界条件等。二次开发可以用于创建自定义工具,这些工具可以集成到HyperWorks中,提供特定的功能或简化复杂的操作。

kkchenjj的博客 1639

Python爬虫实战:逆向工程与异步处理攻克Pinterest无限滚动瀑布流

我们将从零开始,逐步分析其数据接口,构建一个功能完整的爬虫,并深入探讨反爬虫策略的应对、性能优化以及数据存储等高级主题。: 在实际爬取中,你需要先访问一次Pinterest主页,获取初始的Cookie和CSRF Token,然后再发起API请求。: Python爬虫,Pinterest,无限滚动,瀑布流,异步IO,httpx,逆向工程,API接口,动态内容,反爬虫。你会很快发现一些关键的请求模式。:页面初始加载有限内容,随着用户滚动,新的图片块通过AJAX动态加载,实现“永无止境”的浏览。

2201_76125261的博客 551

使用Docker搭建Jenkins进行持续集成持续部署

devopscube,Devops魔方为个人公众号,主要用于一些有关Devops,容器,kubernetes,自动化运维,以及敏捷开发相关的分享。同时也会不定期的分享一些个人心得,比如推荐一些个人使用的办公小软件,对一些事件的评论等。欢迎大家关注交流。 前言 Jenkins是开源的持续集成持续部署的组件,也是该领域的世界范围内的领导者。 随着Docker技术的不断成熟和普及,让持续集成持续部...

weixin_36938307的博客 2817

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

技术架构图-Jenkins docker Kubernetes持续集成(CI)持续部署(CD)

2846

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【持续集成CI/持续部署CD】四、Docker安装Jenkins

a. 把 “connectionCheckUrl”:"改为 “connectionCheckUrl”:"b. 重启 docker,重启 jenkins。

全栈程序猿的专栏 814

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

docker安装jenkins实现持续部署持续集成

我的环境: 服务器:centos7.3 docker: 1.安装docker:yum install -f docker 2.安装docker-compose: curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-uname -s-uname -m -o /usr/local/bin/...

qq_41595149的博客 519

持续集成与持续部署的强大引擎:Jenkins+Docker集成Harbor

Harbor是一个开源的私有镜像仓库,可以方便地管理和部署Docker镜像。本文将介绍如何使用Jenkins、Docker和Harbor实现持续集成与持续部署。本文将详细介绍如何使用Jenkins、Docker和Harbor实现持续集成与持续部署。文章将涵盖Jenkins的基本概念、Dockerfile的编写、Harbor的搭建以及Jenkins与Harbor的集成方法。通过本文的学习,读者可以掌握Jenkins+Docker+Harbor实现持续集成与持续部署的基本技巧,并在实际项目中得心应手。

qq_44103359的博客 640

docker 打包新镜像原有配置丢失_基于 Docker 的 Jenkins 持续集成与持续部署

前言随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致。基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化。持续集成,持续部署,持续交付对于微服务开发来说,是提高团队整体效率不可或缺的一环。合理的使用CI,CD能够极大的提高了生产效率,也提高了产品的交互质量。本文主要介绍下基于Jenkins+docker ...

weixin_39912163的博客 416
上一篇: 手机弱网测试之弱网设置方法
下一篇: 敏捷测试-最全体系
测试小小小
博客等级 码龄6年 265粉丝 364原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值