gitee + Jenkins + docker
CI/CD持续集成初识
gitee + Jenkins + docker
一 什么是持续集成
1.传统的软件开发流程如下:
项目经理分配模块给开发人员每个模块的开发人员并行开发,并进行单元测试开发完毕,将代码集成部署到测试服务器,测试人员进行测试测试人员发现bug,提交bug、开发人员修改bugbug修改完毕再次集成、测试
2.但是这样就出现了如下问题:
模块之间依赖关系复杂,在集成时发现大量bug测试人员等待测试时间过长软件交付无法保障
3.持续集成
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件
持续集成的好处:
自动化集成部署,提高了集成效率。更快地修复问题。更快地进行交付。提高了产品质量
4.工作流程简介
开发人员开发代码,推送到Git服务器中
当Git服务器中的代码发生变化时,会触发配置在Git服务器中的钩子地址,通知到Jenkins
Jenkins把代码下载下来,通过Maven,build成Docker镜像
再把Docker镜像推送到Docker仓库中
再从Docker仓库中构建出可以运行的Docker容器
二 安装docker
官网: https://www.docker.com/
1.卸载(可选)
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
2.安装docker
首先需要大家虚拟机联网,安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
然后更新本地镜像源
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
然后输入命令:
yum install -y docker-ce
docker-ce为社区免费版本
当然也可以用脚本安装,自行搜索尝试哦!!
三 安装jenkins
1.使用docker安装
docker run \
-d \
--rm \
-u root \
-p 8080:8080 \
-v /home/jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/develop_resource/apache-maven-3.6.3:/usr/local/maven \
-v "$HOME":/home \
jenkinsci/blueocean
执行上述指令Docker会自动拉取Jenkins的镜像并启动
2.linux主机安装
官网下载
http://mirrors.jenkins-ci.org/redhat/
在这里可以选择自己想要的版本
下载好之后移动到linux虚拟机上
解压
rpm -ivh jenkins-2.174-1.1.noarch.rpm
[root@localhost jenkins]# rpm -ivh jenkins-2.174-1.1.noarch.rpm
warning: jenkins-2.174-1.1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID d50582e6: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:jenkins-2.174-1.1 ################################# [100%]
配置jenkins中的java路径
(1)查询java安装路径
[root@localhost develop]# whereis java
java: /opt/env/jdk1.8.0_202/bin/java
(2)修改/etc/init.d/jenkins文件 ,配置jdk安装路径
vim /etc/init.d/jenkins
下拉到candidates这个变量,然后将java的安装路径添加进去
启动
service jenkins start
显示OK则为成功
3.配置
1.访问http://ip:8080即可
第一次进入比较缓慢,等待进入,之后进入到这个页面,需要获取管理员的密码
2.获取密码
复制该地址,然后读取该地址的内容即可,里面就是我们需要的密码
点击继续,进入到插件安装界面,一般新手的推荐选择“安装推荐的插件”
就会装载这些插件了。
创建账户并保存
实例配置
四 JDK+MAVEN
因为是Springboot项目所以JDK MAVEN环境 自行在服务器上安装
五 jenkins配置
接下来就是对Jenkins平台的配置
在全局属性中进行配置:
勾选环境变量,然后点击新增:
还记得我们在运行Jenkins容器时挂载的Maven目录吗?挂载到Jenkins容器中的目录就是/usr/local/maven
,如果实在搞不懂的你就保持和我的配置一样即可。 以同样的方式再配置一个:
PATH+EXTRA
的作用是让原来PATH变量中的环境不丢失,最后点击保存。
Maven配置完成后,需要配置Gitee:
进入插件管理:
点击可选插件,选中Gitee,然后点击Install without restart进行安装,等待安装完成即可,Gitee的相关配置我们放到后面讲
六 创建SpringBoot应用
springboot应用创建请大家自行学习,可以简单写个controller就OK
主要是dockerfile文件的编写 本人的范例如下:
# 指定是基于哪个基础镜像
FROM java:8
# 作者信息
MAINTAINER JIANG
# 挂载点声明
VOLUME /tmp
# 将本地的一个文件或目录,拷贝到容器的文件或目录里
ADD ./target/*.jar /app.jar
#shell脚本
RUN bash -c 'touch /app.jar'
# 指定容器内要暴露的端口
EXPOSE 3500
# 当容器运行起来时执行使用运行jar的指令
ENTRYPOINT ["java","-jar","/app.jar"]
这里需要注意的是ADD指令的编写,当SpringBoot应用打包完成后,其jar包会被放在target目录下:
项目配置文件范例:
# 服务端口
server:
port: 8888
2.接着在Gitee中新建一个仓库,并将代码推送到仓库中。
例如我的仓库:
推送完成后,回到Jenkins管理界面,我们来完成Gitee的配置,打开系统配置:
找到Gitee配置,填入对应的信息:
点击添加按钮添加一个Jenkins凭证:
选择Gitee API 令牌:
私人令牌的获取地址 https://gitee.com/profile/personal_access_tokens:
点击生成新令牌:
输入令牌描述然后点提交:
现在就得到了一串私人令牌,将它复制好后妥善保存,因为关闭了这个对话框就再也看不到了。 凭证添加完成后,在证书令牌位置选择刚刚添加的令牌
七 新建自动化部署任务
配置完成,接下来新建一个任务,点击新建Item:
随便输入一个任务名称,并选择Freestyle project
:
在源码管理处勾选Git,并填入项目地址:
在构建触发器位置勾选它:
在构建触发器最底部位置点击生成Gitee WebHook密码:
然后打开Gitee项目中的WebHooks:
点击添加webHook:
此处添加云服务器的IP
至于URL应该填什么,在此处有说到:
所以只需调换一下ip地址即可:
填写完成后点击添加,Gitee便会发送一个Post请求到Jenkins,如果请求结果如下所示,则配置成功了
重新回到Jenkins管理界面,继续勾选构建触发器下的轮询SCM,输入轮询频率:
这步可以不配置
最后在构建位置下增加构建步骤,选择执行shell:
写入shell脚本:
脚本如下:
#!/bin/bash -il
docker rm -f app_docker
sleep 1
docker rmi -f app_docker:1.0
sleep 1
mvn clean install -Dmaven.test.skip=true
sleep 1
docker build -t app_docker:1.0 -f ./Dockerfile .
sleep 1
docker run -d -p 3500:8888 --name app_docker app_docker:1.0
注意
8888就是项目配置文件里的端口, 3500是容器对外暴漏的端口
该脚本表示删除正在运行的app_docker容器,并删除app_docker:1.0镜像,然后使用mvn命令打包从Gitee拉取来的项目代码,接着使用项目中的Dockerfile文件构建出一个镜像,名称为app_docker:1.0,最后运行该镜像
八 测试一下
最后点击保存,部署任务就创建完成了,我们来测试一下有没有问题:
点击立即构建,Jenkins会立马进行一次构建,查看控制台输出:
访问下:
更多推荐
所有评论(0)