注:以上截图是基于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
注:为了方便实验环境这里的docker主机也用Jenkins主机代替!
yum -y install git
useradd git
passwd git
1)切换至git用户
su - git
2)建立git仓库目录
mkdir demo.git
3)切换到git仓库目录
cd demo.git/
4)初始化git仓库
git init --bare
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz
tar xf harbor-offline-installer-v1.6.1.tgz
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!
1)进入harbor目录
cd harbor
2)修改第七行配置文件
cat harbor.cfg
hostname = 192.168.156.102
3)检测并建立harbor须要文件
./prepare
4)安装harbor
./install.sh
1)网页登录harbor
访问网址:http://192.168.156.102/
注:默认的帐号admin,密码:Harbor12345!
2)登录界面
3)点击建立项目
4)设置项目名及访问级别
注:建议使用公开级别,不然其余主机默认无权限下拉镜像!
1)下载官方tomcat镜像
docker pull tomcat
2)给tomcat镜像打标签
docker tag tomcat 192.168.156.102/ceshi/tomcat:v1
3)登录harbor
docker login 192.168.156.102
注:默认状况下登录会报错Error response from daemon: Get https://192.168.156.102/v2/: dial tcp 192.168.156.102:443: connect: connection refused,解决方式只须要在每台安装docker的机器上修改docker启动文件而后重启docker便可!
4)上传镜像
docker push 192.168.156.102/ceshi/tomcat:v1
5)网页刷新查看
注:以上截图说明上传镜像成功!
apache-tomcat-8.0.46.tar.gz
apache-maven-3.5.0-bin.tar.gz
jdk-8u45-linux-x64.tar.gz
jenkins.war
1)解压全部压缩包
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
yum -y install docker-ce
注:安装最新版docker(同上)!
yum -y install git
1)建立密钥对
ssh-keygen
2)拷贝公钥
ssh-copy-id git@192.168.156.101
注:以上这一步是为了Jenkins在拉取代码时,免密拉取!
1)下载源代码
git clone https://github.com/W-F-Y/tomcat-java-demo.git
2)修改代码默认仓库地址
cat tomcat-java-demo/.git/config
3)上传代码到git仓库
//进入代码目录
cd tomcat-java-demo/
//添加本地仓库
git add .
//提交代码
git commit -m 'java'
//绑定用户名和邮箱
git config --global user.email '123@qq.com'
git config --global user.name 'wfy'
//从新提交代码
git commit -m 'java'
//上传代码到远程git仓库
git push origin master
git clone git@192.168.156.101:/home/git/demo.git
注:以上截图证实上传的源代码到远程仓库没有问题,同时也证实从远程仓库下拉代码也没有问题!
1)网址访问:http://192.168.156.103:8080/jenkins
2)按照操做输入密码,点击继续
注:我这里是直接使用的推荐安装,若是你也想使用推荐安装插件能够看看我上一篇文章jenkins解决Skip Plugin Installstions!
3)输入用户名密码
4)实例配置
5)登录Jenkins
1)点击系统管理
2)点击插件管理
3)点击可选插件
搜索安装插件Pipeline和SCM to job
注:另外一个插件安装方式同样!
4)配置凭据
//点击凭据
//点击Jenkins
//点击全局凭据
//点击添加凭据
//选择ssh添加
注:下边添加的密钥是Jenkins的私钥!
//点击肯定添加完成
//返回首页
注:在构建配置这步只须要配置以上截图这两个地方而后点击保存便可!
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号,只须要更新并点击进去查看并粘贴出来便可!
//第二部分:
首先指定变量为编译好的包上传到具体仓库的具体项目下,而后经过dockerfile构建镜像并上传到变量所指定的仓库具体位置!
//第三部分:
将上传到仓库的镜像下拉到指定的机器,而后指定端口并运行!
1)点击Build with Parameters构建
2)点击开始构建
3)构建阶段视图
注:以上截图经过视图显示没有问题!
注:以上就是Java项目发布后的web测试界面!
注:说明已经自动打包镜像并上传!
注:经过以上各类验证方式能够看出Java项目自动发布完成!