目录
Jenkins自动化部署流程
前言
硬件环境
软件环境
1)安装JDK
2) 安装Maven
3) 安装Git
4)安装Docker
5) 安装Jenkins
配置环境
1) GitLab配置
1. 注册GitLab
2. 下载Git
3. 打开GitBash生成SSHkey
4. 配置全局用户名和邮箱
5. GibLab载入SSHkey
6. IDEA配置Git
2) SpringBoot 配置
1.pom文件
2.Dockerfile文件
3.启动类
3) Jenkins配置
1.Jenkins安装
2. Jenkins初始化
3. 全局工具配置
4. 插件管理
5. 全局变量设置
6. GitLab配置
7. 创建任务
8. 构建触发器
9. 构建任务拉取代码
10. Maven构建项目
11. Docker脚本部署
4) 测试
总结
1) GitLab单独Docker化
2) 远程推送私库
3)Docker-Maven插件详解
4)在Jenkins容器中运行Docker命令
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
在实际使用的过程中我们可以使用Jenkins还实现代码的快速部署,它拥有许多插件便于我们集成各种各样的工具,如代码拉取层,我们可以集成SVN、GitLab。项目构建层可以使用Maven。项目部署可以采用jar包形式或者war包的Apache Tomcat形式也可以推送远程私库,做到远程部署。另外对于时下里流行的微服务Jenkins也可以很好的实现快速构建、部署,极大的提高开发、测试效率。
本文主要将一个Springboot项目通过Gitlab、Maven、Jenkins、Docker等技术,实现项目的自动化提交部署功能。
笔者使用的环境为阿里云的centos7(如果没有购买服务器也可以使用Vmware虚拟机)
自制springboot简单项目一份。
yum search java | grep jdk
会出现所有版本的jdk
yum install 你所需要的jdk版本全名
yum install java-1.8.0-openjdk.i686
接下来查看JDK版本
java -version
[root@iZbp1gaxhmejbai4lzftzdZ ~]# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK Server VM (build 25.191-b12, mixed mode)
yum install maven
查看maven版本
mvn -v
[root@iZbp1gaxhmejbai4lzftzdZ /]# mvn -v
Apache Maven 3.0.5 (Red Hat 3.0.5-17)
Maven home: /usr/share/maven
Java version: 1.8.0_191, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.6.3.el7.x86_64", arch: "amd64", family: "unix"
yum install git
yum install -y docker
systemctl start docker
docker version
https://jenkins.io/download 到Jenkins的官网自行下载所需的war包
java -jar jenkins.war –-httpPort=8080
或者也可以把war包放在tomcat里,然后访问localhost:8080/jenkins即可
登陆GitLab官网注册账号https://gitlab.com
新建项目oyster-server
windows中下载Git https://git-scm.com/download/win
点击安装一路next完成安装
命令行运行以下指令:
ssh-keygen -t rsa -C "你的邮箱地址";
先确定文件位置回车
然后输入ssh密码回车
然后确认密码回车
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
然后粘贴sshkey到这个地方
打开idea新建我们的
测试的springboot项目,然后在idea的菜单项选择 VCS》Import into Version Control》Create Git Repository
出现Select directory for git init对话框,直接点确定
原本的项目文件名变成了红色
然后右键项目名,选择Git Add 项目变绿
继续操作,右键项目》Git》Commit File,然后在提交创建填写提交注释说明。提交项目到本地库。
然后 右键项目》Git》Repository》Push
然后配置远程Gitlab仓库
先复制Gitlab下的项目地址
然后填写在name和url中
然后出现push successful,打开Gitlab 刷新项目
此时项目已成功上传到了Gitlab上。
主要在于docker-maven-plugin插件的配置
4.0.0
com.springboot.server
oyster-server
1.0-SNAPSHOT
oyster-server
http://www.example.com
org.springframework.boot
spring-boot-starter-parent
2.0.3.RELEASE
UTF-8
1.8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
com.spotify
docker-maven-plugin
0.4.13
dockerspringboot
${project.basedir}/src/main/docker
/
${project.build.directory}
${project.build.finalName}.jar
在src》main目录下新建docker文件夹,新增Dockerfile文件
#FROM openjdk:8-jdk-alpine
FROM hub.c.163.com/dwyane/openjdk:8
MAINTAINER red-eric [email protected]
VOLUME /tmp
ADD oyster-server-1.0-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
@SpringBootApplication
@RestController
public class OysterApplication
{
public static void main( String[] args )
{
SpringApplication.run(OysterApplication.class, args);
}
@RequestMapping("/")
public String index() {
return "这是我的springboot应用";
}
}
把window下载的Jenkins.war拷贝到阿里云服务器中
打开阿里云控制台
开放Jenkins端口9003
把window下载的Jenkins.war拷贝到阿里云服务器中
打开阿里云控制台
开放Jenkins端口9003
在Jenkins.war所在目录执行
nohup java -jar jenkins.war --httpPort=9003 >/dev/null 2>/dev/null &
还有一种简单的方法就是,下载个tomcat ,然后直接把war包放在tomcat中,然后访问xxx.xx.xx.xx:8080/jenkins就可以了
打开网址http://xx.xxx.xx.xx:9003
复制此路径
在shell中执行
cat /root/.jenkins/secrets/initialAdminPassword
查看初始密码,然后登陆,选择建议的插件,然后重新设置用户名密码
之前我们已经在centos中安装了Git、Maven和Docker ,现在就开始在Jenkins中配置他们。
打开Jenkins控制面板中 系统管理》全局工具配置
新增Gitlab插件和Maven Integration插件
Gitlab插件:当gitlab有push时触发jenkins拉取代码和将构建状态发送回GitLab
Maven Integration:用来简化建造Maven工程.
安装完插件后可以重启一下,直接在网址后边拼上/restart 可以重启Jenkins
配置maven 的全局环境变量 系统设置》系统设置
再Gitlab中获得APIToken
点击生成后获得一个APIToken
然后打开Jenkins
添加GitlabToken
然后点击左下角的测试
会出现success的字样。
这里可以创建自由风格的任务或者Maven任务都可以
源码管理选择Git
打开Gitlab中的测试springboot项目复制项目地址
添加授权
这里采用用户名+密码验证的方式即可
选择当代码提交时自动构建,点击Generate 生成,获得Jenkins的Token
复制url然后打开Gitlab
复制URL和Token 到这个地方点击Add Webhook
点击立即构建即可 拉取Gitlab上的代码到本地
前两次失败是由于Git的路径配置错误,于是用
whereis git
重新查询了下路径,重新配置全局工具
然后测试 我的Gitlab提交是否回同步代码到Jenkins
点击Test push
Jenkins自动进行了第4次构建
至此,GitLab到Jenkins已经全部打通了,接下来看Jenkins的代码如何部署。
点击任务详情页面的Configure
在Build中选择调用顶层Maven构建项目
添加Maven打包命令
clean install -Dmaven.test.skip=true
然后添加shell脚本
# 先删除之前的容器
echo "remobe old container"
cid=$(docker ps -a | grep dockerspringboot | awk '{print $1}'| xargs)
if [ $cid ]
then
echo "aaaaaaaaaaaa"
echo "ccccccccc"
docker rm -f $cid
# 删除之前的镜像
echo "romove old image"
docker rmi dockerspringboot
else
echo "no container now"
fi
# 构建镜像
mvn docker:build
# 打印当前镜像
echo "current docker images"
docker images | grep dockerspringboot
# 启动容器
echo "start container"
docker run -p 8010:8010 -d --name myspringboot dockerspringboot
# 打印当前容器
echo "current container"
docker ps -a | grep dockerspringboot
echo "star service success!"
在GitLab中使用push event,然后在Jenkins中可以看到项目自动进入构建状态
查看Jenkins控制台输出
打开浏览器访问我们的网址
大功告成!
关于这套部署环境的改良,可以把GitLab安装放在单独的docker容器中,减少主服务器占用资源。
如果需要做到部署环境与线上环境分离,可以在pom文件中配置docker私库。同时还需要添加两台主机的sshkey。
需要先新增Maven属性
然后把${docker.registry}属性作为imageName的前缀
最后执行mvn docker:build docker:push
com.spotify
docker-maven-plugin
0.4.13
${project.groupId}/${project.artifactId}:${project.version}
${project.build.outputDirectory}
${project.build.directory}
${project.build.finalName}.jar
在Jenkins中运行docker命令有4中方式