Jenkins-自动部署持续集成

1. DockerMaven插件

Docker基础请参考之前博客:总结 Docker学习(使用centos7-1804)
微服务部署有两种方法:

  • 手动部署:首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚拟机并拷贝至JDK容器。
  • 通过Maven插件自动部署。

对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们这里学习如何自动部署,这也是企业实际开发中经常使用的方法。
Maven插件自动部署步骤:
(1)修改宿主机的docker配置,让其可以远程访问

vi /lib/systemd/system/docker.service

其中ExecStart=后添加配置-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
原有的一句-H fd:// --containerd=/run/containerd/containerd.sock
修改后如下:
在这里插入图片描述
(2)刷新配置,重启服务

systemctl daemon-reload
systemctl restart docker
docker start registry

(3)在工程pom.xml 增加配置

     <build>
		<finalName>app</finalName>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin -->
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>0.4.13</version>
				<configuration>
					<imageName>192.168.17.129:5000/${project.artifactId}:${project.version}</imageName>
					<baseImage>jdk1.8</baseImage>
					<exposes>8080</exposes>
					<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
					<resources>
						<resource>
							<targetPath>/</targetPath>
							<directory>${project.build.directory}</directory>
							<include>${project.build.finalName}.jar</include>
						</resource>
					</resources>
					<dockerHost>http://192.168.17.129:2375</dockerHost>
				</configuration>
			</plugin>
		</plugins>
	</build>

以上配置会自动生成Dockerfile

FROM jdk1.8
ADD /app.jar //
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]

(5)选择想需要打包的项目输入以下命令,进行打包和上传镜像

mvn clean package docker:build -DpushImage

执行后,会有如下输出,上传成功。
在这里插入图片描述
(6)进入宿主机 , 查看镜像

docker images

在这里插入图片描述
可以看到刚构建的项目已经做成镜像

浏览器访问 http://192.168.17.129:5000/v2/_catalog ,输出

{"repositories":["article-rebuilding","jdk1.8"]}

(7) 启动容器,就可以访问你的应用了。

docker run -di --name=article-rebuilding -p 8080:8080 192.168.17.129:5000/article-rebuilding:0.0.1-SNAPSHOT 

2 持续集成工具-Jenkins

2.1 什么是持续集成

​ 持续集成 Continuous integration ,简称CI

​ 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。

​ 持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。

持续集成具有的特点:

  • 它是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预;
  • 需要有专门的集成服务器来执行集成构建;
  • 需要有代码托管工具支持,我们下一小节将介绍Git以及可视化界面Gogs的使用

持续集成的作用:

  • 保证团队开发人员提交代码的质量,减轻了软件发布时的压力;
  • 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;

2.2 Jenkins简介

​ Jenkins,原名Hudson,2011年改为现在的名字,它 是一个开源的实现持续集成的软件工具。官方网站:http://jenkins-ci.org/

​ Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。

​ 特点:

  • 易安装:仅仅一个 java -jar jenkins.war,从官网下载该文件后,直接运行,无需额外的安装,更无需安装数据库;
  • 易配置:提供友好的GUI配置界面;
  • 变更支持:Jenkins能从代码仓库(Subversion/CVS)中获取并产生代码更新列表并输出到编译输出信息中;
  • 支持永久链接:用户是通过web来访问Jenkins的,而这些web页面的链接地址都是永久链接地址,因此,你可以在各种文档中直接使用该链接;
  • 集成E-Mail/RSS/IM:当完成一次集成时,可通过这些工具实时告诉你集成结果(据我所知,构建一次集成需要花费一定时间,有了这个功能,你就可以在等待结果过程中,干别的事情);
  • JUnit/TestNG测试报告:也就是用以图表等形式提供详细的测试报表功能;
  • 支持分布式构建:Jenkins可以把集成构建等工作分发到多台计算机中完成;
  • 文件指纹信息:Jenkins会保存哪次集成构建产生了哪些jars文件,哪一次集成构建使用了哪个版本的jars文件等构建记录;
  • 支持第三方插件:使得 Jenkins 变得越来越强大

2.3 Jenkins安装

2.3.1 JDK安装

(1)将jdk-8u211-linux-x64.tar.gz上传至服务器(虚拟机)

(2)执行解压命令

tar -zxvf jdk-8u211-linux-x64.tar.gz 

移动jdk路

mkdir /usr/java
mv jdk1.8.0_211 /usr/java/

2.3.2 Jenkins安装与启动

(1)下载jenkins

wget https://pkg.jenkins.io/redhat/jenkins-2.179-1.1.noarch.rpm

或将jenkins-2.179-1.1.noarch.rpm上传至服务器

(2)安装jenkins

rpm -ivh jenkins-2.179-1.1.noarch.rpm

(3)配置jenkins

vi /etc/sysconfig/jenkins

修改用户和端口

JENKINS_USER="root"
JENKINS_PORT="8888"

设置java路径

 vi /etc/init.d/jenkins
 #找到candidates 在第一行添加上面安装的java路径(/usr/java/jdk1.8.0_211/bin/java)
 candidates="
/usr/java/jdk1.8.0_211/bin/java
/etc/alternatives/java
/usr/lib/jvm/java-1.6.0/bin/java
/usr/lib/jvm/jre-1.6.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/bin/java
"

(4)启动服务

systemctl start jenkins

还有一种更简单的方式,到官网下载war包,然后以java -jar jenkins.war --httpPort=8888方式启动服务。他会在当前用目录下创建隐藏文件夹.jenkins,里面会成需要的配置文件等。
(5)访问链接 http://192.168.17.129:8888

从/var/lib/jenkins/secrets/initialAdminPassword中获取初始密码串
在这里插入图片描述
如果访问出现下面的画面:实例似乎已经离线。
在这里插入图片描述
可以通过命令tailf /var/log/jenkins/jenkins.log查看输出日志,会发现是连接updateserver超时错误。
在这里插入图片描述
可以通过命令`vi /var/lib/jenkins/hudson.model.UpdateCenter.xml’修改updateserver地址

<url>https://updates.jenkins.io/update-center.json</url>(服务器其实可以访问这个地址)
修改为镜像地址https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
重新启动jenkins systemctl restart jenkins
(6)安装插件
在这里插入图片描述
在这里插入图片描述
(7)新建用户
在这里插入图片描述
下次访问的时候就可以使用用户名密码登录了。
在这里插入图片描述
完成安装进入主界面
在这里插入图片描述

2.4 Jenkins插件安装

我们以安装maven插件为例,演示插件的安装

(1)点击左侧的“Manage Jenkins”菜单 ,然后点击“Manage Plugins”

在这里插入图片描述
在这里插入图片描述
(2)选择“available”选项卡,搜索maven,在列表中选择Maven Integration ,点击“直接安装”按钮
在这里插入图片描述
看到如下图时,表示已经完成
在这里插入图片描述
这里很容易下载插件失败,看了很多教程都是改用镜像地址但是打开看,发现里面的插件下载地址还是Jenkins官网的。第二种就是手动安装插件,去官网插件地址找到需要的插件下载,但是会有很多依赖,而且也只能一个一个安装太费时间。
在这里插入图片描述
我最后的方式就是用Nginx代理了一下在这里插入图片描述

2.5 全局工具配置

2.5.1 安装Maven与本地仓库

(1)下载
访问官网下载地址,复制需要版本的地址。

wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz

(2)解压

tar -zxvf apache-maven-3.6.1-bin.tar.gz

(3)移动目录

mv apache-maven-3.6.1 /usr/local/maven

(4)编辑setting.xml配置文件vi /usr/local/maven/conf/settings.xml,配置本地仓库目录,内容如下

<localRepository>/usr/local/repository</localRepository>

(5)将开发环境的本地仓库上传至服务器(虚拟机)并移动到/usr/local/repository 。

mv reponsitory_boot /usr/local/repository

执行此步是为了以后在打包的时候不必重新下载,缩短打包的时间。

2.5.2 全局工具配置

选择系统管理,全局工具配置

(1)JDK配置
在这里插入图片描述
(2)Git配置
安装git

yum install curl-devel expat-devel gettext-devel    openssl-devel zlib-devel
yum -y install git-core

安装GitLab、GitLab Hook插件
配置Git
在这里插入图片描述
(3)Maven配置
在这里插入图片描述

2.6 代码上传至Git服务器

2.6.1 Gogs搭建与配置

Gogs 是一款极易搭建的自助 Git 服务。
Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
地址:https://gitee.com/Unknown/gogs
(1)下载镜像

docker pull gogs/gogs

(2)创建容器

docker run -di --name=gogs -p 10022:22 -p 3000:3000 -v /var/gogsdata:/data gogs/gogs

(3)安装配置
假设我的centos虚拟机IP为192.168.17.129 在地址栏输入http://192.168.17.129:3000 会进入首次运行安装程序页面,我们可以选择一种数据库作为gogs数据的存储,最简单的是选择SQLite3。如果对于规模较大的公司,可以选择MySQL。
在这里插入图片描述
这里的域名要设置为centos的IP地址,点击“立即安装”。

在这里插入图片描述
(4)安装完成登录注册
在这里插入图片描述
然后完成注册登录
在这里插入图片描述
(5)创建仓库
在这里插入图片描述
在这里插入图片描述

2.6.2 提交代码

(1)克隆项目到本地

git clone http://192.168.17.129:3000/qqxhb/rebuilding-article.git

(2)添加项目代码并提交

cd rebuilding-article/
git add -A
git commit -m 'first commit'
git push

在这里插入图片描述

2.7 任务的创建与执行

(1)回到首页,点击新建按钮 .如下图,输入名称,选择创建一个Maven项目,点击OK
在这里插入图片描述
(2)Source Code Management(源码管理),选择Git
在这里插入图片描述
(3)Build
在这里插入图片描述
(4) 执行任务
点击“保存”按钮,返回任务界面。
在这里插入图片描述
选择Build Now(立即构建)
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值