当前位置: 首页 > Linux

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

时间:2023-04-06 23:47:11 Linux

原文:https://www.toutiao.com/a6602...1.发布流程设计工作流程:开发者提交代码到Git版本仓库;Jenkins手动/定时触发项目构建;Jenkins拉取代码,编码代码,打包镜像,推送到镜像仓库;Jenkins在Docker主机上创建一个容器并发布它。二、环境规划:三、部署过程1、部署git。如果公司有直接clone,可以gitclonegit@192.168.0.31:/home/git/solo.git2.部署Jenkins环境部署入口:Jenkins+Maven+Svn实现代码自动打包发布3、部署私有镜像仓库注意:由于docker仓库是https认证,所有需要pull的客户端都需要修改配置文件[root@linux-node1~]#vim/etc/sysconfig/docker#如果要改就修改这几个选项dockerdaemon运行方式OPTIONS='--selinux-enabled--insecure-registry192.168.56.11:5000'4,allhostsinstalldocker1)安装依赖包yuminstall-yyum-utilsdevice-mapper-persistent-datalvm22)添加Docker包源:yum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo3)安装DockerCEyuminstalldocker-ce-y4)配置加速器curl-sSLhttps://get.daocloud.io/daotools/set_mirror.sh|sh-shttp://bc437cce.m.daocloud.io#因为默认源会去国外获取数据,所以会很慢,会超时。这就是为什么我们需要配置加速器指向国内源https://www.daocloud.io/5)启动并开机#systemctlstartdocker#systemctlenabledocker4.构建基础镜像【Apache、Nginx、Tomcat,LNMP,LAMP,LNTP]JAVA程序必须有JDK环境才能运行。为了减小镜像体积,提高性能,JDK直接放在宿主机上,以挂载的形式使用容器。1.安装jdk#rz上传tar包,解压后放入指定目录rz......tar-zxvfjdk-8u60-linux-x64.tar.gzmvjdk1.8.0_60/usr/local/jdk1.82、写Dockerfile#catDockerfileFROMcentos:7#谁是他妈MAINTAINERwww.aliangedu.com#谁是他爸ENVVERSION=8.5.33#tomcat版本ENVJAVA\_HOME/usr/local/jdk#jdk绝对路径RUNyuminstallwget-y#运行命令RUNwgethttp://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz&&tarzxfapache-tomcat-${VERSION}.tar.gz&&mvapache-tomcat-${VERSION}/usr/local/tomcat&&rm-rfapache-tomcat-${VERSION}.tar.gz/usr/local/tomcat/webapps/\*&&mkdir/usr/local/tomcat/webapps/ROOTEXPOSE8080#程序使用的端口CMD/usr/local/tomcat/bin/catalina.sh运行#执行tomcat目录下的启动脚本,这里有个坑,就是-v把宿主机的jdk目录挂到容器/usr/local/jdk下,因为镜像是根据dockerfile播放的,然后命令执行到路径时会找不到,所以我暂时删除了EXPOSE和CMD这2行,然后重新打包,用-p指定端口,然后进入容器,手动启动tomcat,进行3,并构建镜像dockerbuild-t192.168.56.11:5000/tomcat-85:latest-f码头文件。#最后一点代表当前路径。制作镜像时会记录上下文内容4、上传到docker镜像仓库[root@node02scripts]#dockerpush192.168.56.11:5000/tomcat-85:latest5、启动镜像测试[root@node02scripts]#dockerrun-it-d-p8080:8080-v/usr/local/jdk1.8:/usr/local/jdk192.168.56.11:5000/tomcat-8:latest[root@3addff07c464ROOT]#echo"123">index.jsp五、Jenkins配置1.主页面->系统管理->全局工具配置指定JDK、Maven路径,Git保持默认:2.Jenkins安装必要的插件主页面->系统管理->管理插件:安装SSH和Git参数插件。插件说明:》SSH:用于SSH远程Docker主机执行Shell命令》Git参数:动态获取Git仓库Branch,Tag3,配置SSH插件第一步:首先创建连接Docker的凭证host(authorizeduser)MainPage->Credentials->System->Right-clickGlobalCredentials->AddCredentials:输入用户名和密码连接到Dockerhost:Step2:AddSSHRemoteHostMainPage->SystemManagement->SystemSettings->SSHremotehosts:问题:以普通用户使用dockerimages时,出现如下错误:6.将从github上下载的JAVA工程上传到自己的gitlab仓库#gitclonehttps://github.com/b3log/solo#cdsolo删除旧的推送地址并添加新的:#gitremoteremoveorigin#gitremoteaddorigingit@gitlab.example.com:qqq/solo.git将代码提交到Git仓库并创建a标签:#touchsrc/main/webapp/a.html#gitadd。#gitcommit-m“a”创建标签:#gittag1.0.0推送到Git服务器:#gitpushorigin1.0.0登录gitlab查看solo项目:7.Jenkins创建项目并发布测试1、主页面->新建任务->输入任务名称构建Maven项目:注:如果没有显示“构建Maven项目”选项,需要在管理中安装“MavenIntegrationplugin”插件插入。配置Git参数化构建:2.动态获取Git仓库tag,与用户交互选择Tag发布:【也可以设置分支】3.指定项目Git仓库地址:修改*/master为$Tag,而Tag是name上面动态获取的变量,表示根据用户的选择来选择代码版本。4.设置maven构建命令选项:cleanpackage-Dmaven.test.skip=ture使用pom.xml文件构建项目。构建并推送Jenkins本地镜像到镜像仓库,使用SSH远程连接Docker主机,使用推送的镜像创建容器:上图中命令内容如下:REPOSITORY=192.168.56.11:5000/solo:${Tag}#构建镜像cat>Dockerfile<