Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

实现自动化思路设计

一、发布流程

Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:以上截图是基于Jenkins+Docker+Git实现一套CI自动化发布流程!java

二、工做流程

1)开发人员提交代码到Git版本仓库;node

2)Jenkins人工/定时触发项目构建;linux

3)Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;git

4)Jenkins在Docker主机建立容器并发布。github

三、环境规划

系统版本:CentOS Linux release 7.6.1810 (Core)x64web

Git仓库版本:yum安装便可docker

Harbor仓库版本:harbor-offline-installer-v1.6.1(离线版)shell

Jenkins版本:jenkins.warapache

关闭防火墙并禁止开机自启centos

systemctl stop firewalld.service
systemctl disable firewalld

关闭selinux

sed-i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

重启 reboot

四、服务器及IP分配

Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:为了方便实验环境这里的docker主机也用Jenkins主机代替!

部署git仓库

一、安装git

yum -y install git

二、建立git用户

useradd git

三、设置git用户密码

passwd git

四、建立git仓库

1)切换至git用户

su - git

2)建立git仓库目录

mkdir demo.git

3)切换到git仓库目录

cd demo.git/

4)初始化git仓库

git init --bare
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

部署Harbor仓库

一、下载harbor离线安装包

wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz

二、解压harbor

tar xf harbor-offline-installer-v1.6.1.tgz

三、安装harbor依赖包

1)安装docker

yum -y install docker-ce

注:若是想安装docker最新版本须要下载docker-ce的源,下载地址以下http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo,下载后将源移动到/etc/yum.repos.d/下便可!

2)启动docker

systemctl start docker

3)将docker设置为开机自启

systemctl enable docker

4)安装docker-comps

yum -y install docker-compose

注:若是安装不上就先安装epel-release源,而后安装docker-compose!

四、安装并运行harbor

1)进入harbor目录

cd harbor

2)修改第七行配置文件

cat harbor.cfg

hostname = 192.168.156.102

3)检测并建立harbor须要文件

./prepare
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

4)安装harbor

./install.sh
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

五、网页管理harbor

1)网页登录harbor

访问网址:http://192.168.156.102/
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:默认的帐号admin,密码:Harbor12345!

2)登录界面
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

3)点击建立项目
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

4)设置项目名及访问级别
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:建议使用公开级别,不然其余主机默认无权限下拉镜像!

六、上传镜像

1)下载官方tomcat镜像

docker pull tomcat
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

2)给tomcat镜像打标签

docker tag tomcat 192.168.156.102/ceshi/tomcat:v1
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

3)登录harbor

docker login 192.168.156.102
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:默认状况下登录会报错Error response from daemon: Get https://192.168.156.102/v2/: dial tcp 192.168.156.102:443: connect: connection refused,解决方式只须要在每台安装docker的机器上修改docker启动文件而后重启docker便可!
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

4)上传镜像

docker push 192.168.156.102/ceshi/tomcat:v1
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

5)网页刷新查看
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:以上截图说明上传镜像成功!

部署Jenkins

一、下载须要的包

apache-tomcat-8.0.46.tar.gz

apache-maven-3.5.0-bin.tar.gz

jdk-8u45-linux-x64.tar.gz

jenkins.war
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

二、安装tomcat

1)解压全部压缩包
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

2)移动这三个解压包到/usr/local/目录下并重命名

mv apache-maven-3.5.0 /usr/local/maven

mv apache-tomcat-8.0.46 /usr/local/tomcat

mv jdk1.8.0_45/ /usr/local/jdk

3)设置全局环境变量

cat /etc/profile

JAVA_HOME=/usr/local/jdk
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
export MAVEN_HOME=/usr/local/maven
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin:$PATH

注:将以上命令追加到/etc/profile便可!

4)当即生效环境变量

source /etc/profile

5)删除tomcat默认网页

rm -rf /usr/local/tomcat/webapps/*

6)将Jenkins.war文件放到指定目录

mv jenkins.war /usr/local/tomcat/webapps/

7)启动tomcat

/usr/local/tomcat/bin/startup.sh
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

三、安装docker

yum -y install docker-ce

注:安装最新版docker(同上)!

四、安装git

yum -y install git

五、密钥认证

1)建立密钥对

ssh-keygen
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

2)拷贝公钥

ssh-copy-id git@192.168.156.101
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:以上这一步是为了Jenkins在拉取代码时,免密拉取!

六、上传测试Java源代码

1)下载源代码

git clone https://github.com/W-F-Y/tomcat-java-demo.git
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

2)修改代码默认仓库地址

cat tomcat-java-demo/.git/config
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

3)上传代码到git仓库

//进入代码目录

cd tomcat-java-demo/

//添加本地仓库

git add .

//提交代码

git commit -m 'java'
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

//绑定用户名和邮箱

git config --global user.email '123@qq.com'
git config --global user.name 'wfy'

//从新提交代码

git commit -m 'java'

//上传代码到远程git仓库

git push origin master
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

七、下拉代码测试

git clone git@192.168.156.101:/home/git/demo.git
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:以上截图证实上传的源代码到远程仓库没有问题,同时也证实从远程仓库下拉代码也没有问题!

八、安装Jenkins

1)网址访问:http://192.168.156.103:8080/jenkins
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

2)按照操做输入密码,点击继续
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:我这里是直接使用的推荐安装,若是你也想使用推荐安装插件能够看看我上一篇文章jenkins解决Skip Plugin Installstions!

3)输入用户名密码
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

4)实例配置
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

5)登录Jenkins
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

九、配置Jenkins

1)点击系统管理

2)点击插件管理

3)点击可选插件

搜索安装插件Pipeline和SCM to job
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:另外一个插件安装方式同样!

4)配置凭据

//点击凭据
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

//点击Jenkins
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

//点击全局凭据
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

//点击添加凭据
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

//选择ssh添加
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:下边添加的密钥是Jenkins的私钥!

//点击肯定添加完成
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

//返回首页
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

Jenkins建立发布任务

一、点击建立新任务

Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

二、使用Pipeline流水线建立任务

Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

三、构建项目配置

Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:在构建配置这步只须要配置以上截图这两个地方而后点击保存便可!

四、Pipeline代码讲解

node {
// 拉取代码
stage('Git Checkout') {
checkout([$class: 'GitSCM', branches: [[name: '${branch}']], doGenerateSubmoduleConfigurations: false,
extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId:
'adf9f1d0-a09d-42e6-aa2c-c6a5dacc8ebc', url: 'git@192.168.156.101:/home/git/demo.git']]])
}
// 代码编译
stage('Maven Build') {
sh '''
export JAVA_HOME=/usr/local/jdk
/usr/local/maven/bin/mvn clean package -Dmaven.test.skip=true
'''
}
// 项目打包到镜像并推送到镜像仓库
stage('Build and Push Image') {
sh '''
REPOSITORY=192.168.156.102/ceshi/tomcat-java-demo:${branch}
cat > Dockerfile << EOF
FROM 192.168.156.102/ceshi/tomcat:v1
MAINTAINER wfy
RUN rm -rf /usr/local/tomcat/webapps/
ADD target/
.war /usr/local/tomcat/webapps/ROOT.war
EOF
docker build -t $REPOSITORY .
docker login 192.168.156.102 -u admin -p Harbor12345
docker push $REPOSITORY
'''
}
// 部署到Docker主机
stage('Deploy to Docker') {
sh '''
REPOSITORY=192.168.156.102/ceshi/tomcat-java-demo:${branch}
docker rm -f tomcat-java-demo |true
docker pull $REPOSITORY
docker container run -d --name tomcat-java-demo -p 88:8080 $REPOSITORY
'''
}
}

//第一部分:

如下截图简单说一下pipeline语法和id。语法就是普通的shell命令经过Jenkins默认自带的pipeline语法转换器进行转换,具体使用方式可根据左下角pipeline语法来调整。从以上截图能够看出来有一行很长的id号’ adf9f1d0-a09d-42e6-aa2c-c6a5dacc8ebc’,你可能此时一顿懵逼,老铁别慌,还记得前边配置Jenkins时添加的git凭据吗?没错当你添加完成后会默认生成id号,只须要更新并点击进去查看并粘贴出来便可!
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

//第二部分:

首先指定变量为编译好的包上传到具体仓库的具体项目下,而后经过dockerfile构建镜像并上传到变量所指定的仓库具体位置!
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

//第三部分:

将上传到仓库的镜像下拉到指定的机器,而后指定端口并运行!
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

五、开始构建java项目

1)点击Build with Parameters构建
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

2)点击开始构建
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目

3)构建阶段视图
Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:以上截图经过视图显示没有问题!

验证Java项目

一、访问网址:http://192.168.156.103:88/

Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:以上就是Java项目发布后的web测试界面!

二、查看harbor镜像仓库

Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目
注:说明已经自动打包镜像并上传!

三、查看运行镜像

Jenkins+Pipeline流水线+Docker实现自动化CI/CD发布Java项目 注:经过以上各类验证方式能够看出Java项目自动发布完成!

相关文章
相关标签/搜索