gitee + Jenkins + docker

gitee + Jenkins + docker

一 什么是持续集成

1.传统的软件开发流程如下:

项目经理分配模块给开发人员每个模块的开发人员并行开发,并进行单元测试开发完毕,将代码集成部署到测试服务器,测试人员进行测试测试人员发现bug,提交bug、开发人员修改bugbug修改完毕再次集成、测试

2.但是这样就出现了如下问题:

模块之间依赖关系复杂,在集成时发现大量bug测试人员等待测试时间过长软件交付无法保障

3.持续集成

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件

持续集成的好处:

自动化集成部署,提高了集成效率。更快地修复问题。更快地进行交付。提高了产品质量

4.工作流程简介

开发人员开发代码,推送到Git服务器中

当Git服务器中的代码发生变化时,会触发配置在Git服务器中的钩子地址,通知到Jenkins

Jenkins把代码下载下来,通过Maven,build成Docker镜像

再把Docker镜像推送到Docker仓库中

再从Docker仓库中构建出可以运行的Docker容器

img

二 安装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/
在这里可以选择自己想要的版本

image.png

下载好之后移动到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的安装路径添加进去

image.png

启动
service jenkins start

image.png

显示OK则为成功

3.配置
1.访问http://ip:8080即可

第一次进入比较缓慢,等待进入,之后进入到这个页面,需要获取管理员的密码

image.png

2.获取密码

复制该地址,然后读取该地址的内容即可,里面就是我们需要的密码

image.png

image.png

点击继续,进入到插件安装界面,一般新手的推荐选择“安装推荐的插件”

image.png

image.png

image.png

就会装载这些插件了。

创建账户并保存

image.png

实例配置

image.png

image.png

四 JDK+MAVEN

因为是Springboot项目所以JDK MAVEN环境 自行在服务器上安装

五 jenkins配置

接下来就是对Jenkins平台的配置

img

在全局属性中进行配置:

img

勾选环境变量,然后点击新增:

img

还记得我们在运行Jenkins容器时挂载的Maven目录吗?挂载到Jenkins容器中的目录就是/usr/local/maven,如果实在搞不懂的你就保持和我的配置一样即可。 以同样的方式再配置一个:

img

PATH+EXTRA的作用是让原来PATH变量中的环境不丢失,最后点击保存。

Maven配置完成后,需要配置Gitee:

img

进入插件管理:

img

点击可选插件,选中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会立马进行一次构建,查看控制台输出:

在这里插入图片描述

访问下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值