docker——jenkins+git+registry构建自动化持续集成环境(ci/cd)(代码片段)

caoweixiong caoweixiong     2023-04-24     507

关键词:

 

前言

在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署、交付(CD)。

本文基于Jenkins+Docker+GitSvn实现一套CI自动化发布流程,同时支持撤回。

 

 

一、发布流程设计

技术图片

工作流程:

  1. 开发人员提交代码到Git或Svn版本仓库;
  2. Jenkins人工/定时触发项目构建;
  3. Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;
  4. Jenkins在Docker主机创建容器并发布。

 

 

二、环境设计

1、服务器部署信息

服务器主机名IP运行服务
jenkins服务器 jenkins 10.0.xxx.100 安装docker、 运行jenkins容器、git客户端、jdk、maven
docker服务器 docker 10.0.xxx.103 安装docker、创建镜像运行java项目:bsm
Git和私有仓库服务器 git_registry 10.0.xxx.104 安装docker、git服务、运行registry私有仓库容器

2、版本信息

名称版本软件包说明
服务器 Centos 7.4 linux系统
docker 17.12.0-ce yum安装 docker引擎服务
jdk 1.8.0_45 jdk-8u45-linux-x64.tar.gz 运行jenkins需要的JDK环境
maven 3.5.0 apache-maven-3.5.0-bin.tar.gz 构建java项目需要的工具
jenkins 最新版本 docker hub下载最新jenkins镜像 持续集成工具
registry 最新版本 docker hub下载最新registry镜像 docker私有仓库

jdk官方下载地址:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html
maven官方下载地址:https://maven.apache.org/download.cgi
jenkins官方镜像地址:https://hub.docker.com/_/jenkins/
registry官方镜像地址:https://hub.docker.com/_/registry/

3、操作系统信息

  CentOS7.4

 

 

三、部署Git或Svn仓库

具体方法请参考:

 

 

四、部署Jenkins

1、部署JDK
  由于jenkins需要jdk环境,jdk如果放在容器中运行容器又相当重,所以就在宿主机上部署jdk。部署jdk很简单,解压就行:

# tar zxf jdk-8u45-linux-x64.tar.gz 
# mv jdk-8u45-linux-x64 /usr/local/jdk1.8 
# vi /etc/profile 
JAVA_HOME=/usr/local/jdk1.8 
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export JAVA_HOME PATH CLASSPATH
# source /etc/profile

 

2、部署maven
  由于本文后期是通过jenkins运行java项目,所以我们还需要maven工具,maven也和jdk部署一样,也不想在容器中运行maven,所以也是部署在宿主机上然后挂载到容器中。也是直接解压:

# tar -zxvf apache-maven-3.5.0-bin.tar.gz  -C /usr/local/

 

3、部署jenkins

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于代码编译、部署、测试等工作。 Jenkins也是一个跨平台的,大多数主流的平台都支持,而且安装很简单,我们这里以部署war包方式安装它。
官网下载地址:https://jenkins.io/download/
如图点击下载最后一个Generic Java package(war):

技术图片

在【jenkins】主机安装Jenkins,下载Tomcat二进制包将war包到webapps下即可:**

# wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war 
# wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz 
# tar zxf apache-tomcat-8.5.32.tar.gz 
# mv apache-tomcat-8.5.32 /usr/local/tomcat-jenkins 
# rm /usr/local/tomcat-jenkins/webapps/* -rf 
# unzip jenkins.war -d /usr/local/tomcat-jenkins/webapps/ROOT 
# cd /usr/local/tomcat-jenkins/bin/ 
# ./startup.sh 
# tail ../logs/catalina.out -f

日志输出:

... 
Jenkins initial setup is required. An admin user has been created and a password generated. 
Please use the following password to proceed to installation: 

a5f1f7c167fd4b8ab62f9497d32d97db 

This may also be found at: /root/.jenkins/secrets/initialAdminPassword ...

 

4、配置jenkins

  • 第一步:设置密码

通过http://ip:8080 来访问jenkins服务;

技术图片

从上图给出的提示,需要从/var/jenkins_home/secrets/initialAdminPassword获取密码

[root@jenkins /]# cat /var/jenkins_home/secrets/initialAdminPassword
dff1d41be2254f87ad80a65eac621cb8
  • 第二步:点击“选择插件来安装”

登录成功后回让你选择插件的安装,可以选择建议的安装也可以自己进行选择,不清楚的话可以使用建议的安装。由于建议安装的插件比较多,安装的过程有点慢,多等待一会;

技术图片

技术图片 

  • 第三步:创建管理员用户

安装完成后最好新创建一个管理员账户代替之前的临时自动生成的密码账户;

技术图片

  • 第四步:设置Jenkins访问地址

保持默认,点击保存完成,安装完成,开始使用Jenkins:

技术图片

 

 

五、安装Docker

在【jenkins、docker、git_registry】3台主机安装Docker。

安装方法请参考:https://www.cnblogs.com/caoweixiong/p/12186736.html

 

 

六、部署私有镜像仓库

Docker Hub作为Docker默认官方公共镜像;这里搭建私有镜像仓库,官方也提供registry镜像,使得搭建私有仓库非常简单。

在【git_registry】主机上搭建私有镜像仓库,具体方法请参考:https://www.cnblogs.com/caoweixiong/p/12197602.html

 

 

七、构建Tomcat基础镜像

项目需要使用tomcat,这里使用Dockerfile来制作镜像。

具体方法请参考:https://www.cnblogs.com/caoweixiong/p/12230725.html

 

 

八、Jenkins配置全局工具配置

  • 主页面 -> 系统管理 -> 全局工具配置

指定JDK、Maven路径,Git保持默认:

技术图片

 如果Jenkins主机没有git命令,需要安装Git:

# yum install git -y

 

 

九、Jenkins安装必要插件

  • 主页面 -> 系统管理 ->管理插件:

技术图片

安装SSH与Git Parameter插件。

插件说明:

  1. SSH:用于SSH远程Docker主机执行Shell命令
  2. Git Parameter:动态获取Git仓库Branch、Tag

 

  • 配置SSH插件

第一步:先创建一个用于连接Docker主机的凭据。

主页面 -> 凭据 -> 系统 -> 右击全局凭据 -> 添加凭据:

技术图片

 技术图片

 

第二步:添加SSH远程主机
主页面 -> 系统管理 -> 系统设置 -> SSH remote hosts:

技术图片

 

 

十、Jenkins创建项目并发布测试

自己准备1个web项目,我这里的项目名字为bsm,通过svn管理代码。

  • 主页面 -> 新建任务 -> 输入任务名称,构建一个Maven项目

技术图片

 注意:如果没有显示“构建一个Maven项目”选项,需要在管理插件里安装“Maven Integration plugin”插件。

  • 设置参数化构建过程:

技术图片

  • 设置源码管理

技术图片

 注:这里使用svn管理源码

  • 设置maven构建命令选项:

技术图片

利用pom.xml文件构建项目。

  • 在Jenkins本机,构建镜像并推送到私有镜像仓库:

技术图片

上述命令说明:

  1. 根据参数 type 来判断是部署还是撤回;
  2. 部署项目:创建Dockerfile文件,使用当前编译序号做为镜像的版本号;
    •   基于私有镜像仓库的 tomcat 镜像;
    •   先删除webapps目录下的war包;
    •   将jenkins编译好的war包,复制到tomcat镜像中的webapps目录下
    •   启动tomcat
  3. 部署项目:构建镜像;
  4. 部署项目:上传镜像到私有仓库;
  5. 部署项目:删除本地镜像;
  6. 撤回项目:什么也不做;

 

  • 在Jenkins本机,通过SSH远程连接到Docker主机,下载并使用推送的镜像创建容器

 技术图片

上述命令说明:

  1. 根据参数 type 来判断是部署还是撤回;
  2. 部署项目:获取当前编译版本号,从私有镜像仓库下载镜像进行部署;
    •   停止容器;
    •   删除容器;
    •   删除本地历史镜像
    •   启动容器,并暴露端口
  3. 撤回项目:参数【version】为空,默认返回到上一版本;
  4. 撤回项目:参数【version】不为空,撤回到指定版本;
  5. 部署项目:删除本地镜像;
  6. 撤回项目:什么也不做;

 

  • 选择tag,开始构建:

技术图片

注:type=deploy,部署项目;type=rollback,撤回项目

 技术图片

 技术图片

 技术图片

 技术图片

 

 

十一、验证

浏览器访问bsm项目:http://10.0.xxx.103:8888

技术图片

 

 

 

参考:

https://blog.51cto.com/lizhenliang/2159817

git+docker+jenkins持续集成

组成:Git作为版本控制库 Docker搭建测试环境 Jenkins作为持续集成服务Jenkins实现CI(ContinuousIntegration)到CD(ContinuousDelivery)的转换工具。期望:1、解决从开发–测试–上线等一系列环境统一及依赖问题 2、可实现不停服务发... 查看详情

实战docker+jenkins+git构建持续集成环境(代码片段)

本文重点介绍jenkins以及让jenkins如何实现在docker容器中运行。jenkins和docker私有仓库又是怎么结合的。docker说明及安装和git说明及安装在本文中不会特别详细的介绍。?并且,在本文中不着重介绍原理性的东西,比如不会介绍什么... 查看详情

jenkins+docker+git集成平台搭建(代码片段)

一、环境准备以我本地为例【Jenkins:192.168.132.52      Docker:192.168.10.143】1、一台运行Jenkins服务的服务器,需安装插件:gitplugin、GitParameterPlug-In、GitLabPlugin、PublishOverSSH、SSHSlavesplugin2、一台或若干D 查看详情

docker+jenkins+git+python+allure的曲折历程《一》

参考技术A1、Ubuntu(虚拟机、云都可以)2、Docker(Docker安装参考Ubuntu安装docker-)3、Jenkins(Jenkins安装参考Jenkins安装及部署-)4、Python3(3.8)5、Java(11)6、allure(2.14.0)7、Git8、chrome(无界面)本框架适用于,UI自动化、接口自动... 查看详情

springboot+git+jenkins+docker实现ci/cd

...解,不去实践,这次就以Springboot为底,利用Git,jenkins,Docker实现持续集成和持续部署!开发流程下面是常用的开发流程图:我们简单说说这张图:首先我们会将代码文件、测试文件以及Dockerfile都存在代码仓库里,版本控制利用... 查看详情

docker——jenkins+git+registry构建自动化持续集成环境(ci/cd)(代码片段)

...持续集成(CI)及持续部署、交付(CD)。本文基于Jenkins+Docker+GitSvn实现一套CI自动化发布流程,同时支持撤回。  一、发布流程设计工作流程:开发人员提交代码到Git或Svn版本仓库;Jenkins人工/定时触发项目构建;Jenkins拉... 查看详情

基于jenkins+docker+git的ci流程初探(代码片段)

...代码、代码编码、打包镜像、推送到镜像仓库;4.Jenkins在Docker主机创建容器并发布主机环境规划:docker-jenkins:  10.0.0.98docker-git-harbor:10.0.0.991.部署Git代码版本仓库 安装:[[email protected]~]#yuminstallgit-y配置git用户:[... 查看详情

jenkins+git实现docker持续部署

jenkins所做的事情很简单,就拿我现在的情况来说吧,(1)、每次开发完成,我都会push到我的远程仓库;(2)、我再将我push到远程仓库的代码pull到我的测试服务器上;(3)、在测试服务器上,我要重启下我的项目;(4)、我... 查看详情

持续基础怎么搞?jenkins+docker+git实战(代码片段)

...码、代码编码、打包镜像、推送到镜像仓库;Jenkins在Docker主机创建容器并发布主机环境规划:docker-jenkins:  10.0.0.98docker-git-harbor:10.0.0.9901部署Git代码版本仓库安装:[root@docker-git-harbor~]#yuminstallgit-y配置git... 查看详情

怎么在docker中部署jenkins

参考技术A可以使用Jenkins的git插件,将远程的master分支pull到本地(或者用clone,具体看要操作的代码量的大校遇到过pull有问题,还要人工干预git操作的例子。。。)。接着就可以调用code里面的UT或者调用其他工具来做代码测试。... 查看详情

mvn release:prepare release:perform 从 docker image jenkins git 凭证到 docker image

】mvnrelease:preparerelease:perform从dockerimagejenkinsgit凭证到dockerimage【英文标题】:mvnrelease:preparerelease:performfromdockerimagejenkinsgitcredentialstodockerimage【发布时间】:2018-07-2614:17:37【问题描述】:我正在尝试使用执行mvnrelease:preparere 查看详情

ci/cd——构建企业级docker+jenkins+git+harbor流水线自动化持续集成持续发布平台(代码片段)

构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台CI/CD是什么?持续集成(CI)/持续交付(CD)的优势自动化部署流程图GitGithubGitlab的区别前言:一些自己想说的话部署Docker+Jenkins+Git+Harbor流水... 查看详情

ci/cd——构建企业级docker+jenkins+git+harbor流水线自动化持续集成持续发布平台(代码片段)

构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台CI/CD是什么?持续集成(CI)/持续交付(CD)的优势自动化部署流程图GitGithubGitlab的区别前言:一些自己想说的话部署Docker+Jenkins+Git+Harbor流水... 查看详情

基于jenkins+docker+git持续化自动部署项目(详细版一));(代码片段)

软件的安装jenkins的安装jenkins的安装持续集成(CI)持续集成指的是,频繁地(一天多次)将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。持续交付持续交付(Continuousdeliv... 查看详情

jenkins与docker的自动化ci/cd实战(代码片段)

...持续集成(CI)及持续部署、交付(CD)。本文基于Jenkins+Docker+Git实现一套CI自动化发布流程。一、发布流程设计工作流程:开发人员提交代码到Git版本仓库;Jenkins人工/定时触发项目构建;Jenkins拉取代码、代码编码、打包镜像、... 查看详情

从零开始的devops-临时快速实现

...务。问题管理使用bugzilla或者jira。快速实现持续集成流程docker搭建gogs较快docker搭建ftp较快docker搭建邮件服务器或者申请公司发送邮件接口或者用户docker搭建jenkins较快docker搭建bugzilla较快jenkins配置安卓iOS打包细节可能会花一些时... 查看详情

jenkins+docker一键自动化部署springboot项目

本文章实现最简单全面的​​Jenkins+docker+springboot​​ 一键自动部署项目,步骤齐全,少走坑路。环境:centos7+git(gitee)简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运... 查看详情

docker学习|第八篇:docker+jenkins单机部署springboot项目(代码片段)

Docker学习|第八篇:Docker+Jenkins单机部署SpringBoot项目前言最近学了一段时间的jenkins以及Docker之后,自己进行了一些自动持续集成的相关实践。在这里记录一下。环境本文所需环境如下:CentOs7系统已安装Docker已安装... 查看详情