Jenkins与Docker的自动化CI/CD实战(2)

JAVA程序必须有JDK环境才可以运行,为了减少镜像大小及提高性能,这里直接把JDK放到宿主机上,容器以挂载形式使用。
在192.168.0.217/192.168.0.218安装JDK:

# tar zxvf jdk-8u45-linux-x64.tar.gz # mv jdk-8u45-linux-x64 /usr/local/jdk1.8

Tomcat基础镜像Dockerfile:

# cat Dockerfile FROM centos:7 MAINTAINER ENV VERSION=8.5.32 ENV JAVA_HOME /usr/local/jdk RUN yum install wget -y RUN wget ${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && \ tar zxf apache-tomcat-${VERSION}.tar.gz && \ mv apache-tomcat-${VERSION} /usr/local/tomcat && \ rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && \ mkdir /usr/local/tomcat/webapps/ROOT EXPOSE 8080 CMD ["catalina.sh", "run"]

构建镜像并上传到registry:

# docker build -t 192.168.0.219:5000/tomcat-85 -f Dockerfile . # docker push 192.168.0.219:5000/tomcat-85 七、Jenkins配置全局工具配置

主页面 -> 系统管理 -> 全局工具配置

指定JDK、Maven路径,Git保持默认:

Jenkins与Docker的自动化CI/CD实战


如果Jenkins主机没有git命令,需要安装Git:
# yum install git -y

八、Jenkins安装必要插件

1. Jenkins安装必要插件
主页面 -> 系统管理 ->管理插件:

Jenkins与Docker的自动化CI/CD实战


安装SSH与Git Parameter插件。

插件说明:

SSH:用于SSH远程Docker主机执行Shell命令

Git Parameter:动态获取Git仓库Branch、Tag

2. 配置SSH插件
第一步:先创建一个用于连接Docker主机的凭据。
主页面 -> 凭据 -> 系统 -> 右击全局凭据 -> 添加凭据:

Jenkins与Docker的自动化CI/CD实战


输入连接Docker主机的用户名和密码:

Jenkins与Docker的自动化CI/CD实战


第二步:添加SSH远程主机
主页面 -> 系统管理 -> 系统设置 -> SSH remote hosts:

Jenkins与Docker的自动化CI/CD实战

九、上传JAVA项目代码到Git仓库

从Github拉取开源JAVA博客系统solo:

# git clone https://github.com/b3log/solo # cd solo 移除旧的推送地址,添加新的: # git remote remove origin # git remote add origin git@192.168.0.219:/home/git/solo.git 提交代码到Git仓库并创建tag: # touch src/main/webapp/a.html # git add . # git commit -m “a” 创建标签: # git tag 1.0.0 推送到Git服务器: # git push origin 1.0.0 十、Jenkins创建项目并发布测试

主页面 -> 新建任务 -> 输入任务名称,构建一个Maven项目:

Jenkins与Docker的自动化CI/CD实战


注意:如果没有显示“构建一个Maven项目”选项,需要在管理插件里安装“Maven Integration plugin”插件。
配置Git参数化构建:

Jenkins与Docker的自动化CI/CD实战


动态获取Git仓库tag,与用户交互选择Tag发布:

Jenkins与Docker的自动化CI/CD实战


指定项目Git仓库地址:

Jenkins与Docker的自动化CI/CD实战


修改*/master为$Tag,Tag是上面动态获取的变量名,表示根据用户选择打代码版本。

设置maven构建命令选项:

Jenkins与Docker的自动化CI/CD实战

利用pom.xml文件构建项目。
在Jenkins本机镜像构建与推送到镜像仓库,并SSH远程连接到Docker主机使用推送的镜像创建容器:

Jenkins与Docker的自动化CI/CD实战


上图中,在Jenkins主机执行的Shell命令如下:

REPOSITORY=192.168.0.219:5000/solo:${Tag} # 构建镜像 cat > Dockerfile << EOF FROM 192.168.0.219:5000/tomcat-85:latest RUN rm -rf /usr/local/tomcat/webapps/ROOT COPY target/*.war /usr/local/tomcat/webapps/ROOT.war CMD ["catalina.sh", "run"] EOF docker build -t $REPOSITORY . # 上传镜像 docker push $REPOSITORY

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/31242462ace6eddff668a59cb6ac34ca.html