58南浔做网站,windows 上wordpress,网站建设技术服务税种分类,网站中下拉列表框怎么做先了解一下Jenkins
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具#xff0c;提供了数百个插件来支持构建#xff0c;部署和自动化任何项目。我们可以使用Jenkins结合常用的版本控制工具(git、svn等)来实现自动部署项目#xff0c;比如说我们从本地上传代码到G…先了解一下Jenkins
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具提供了数百个插件来支持构建部署和自动化任何项目。我们可以使用Jenkins结合常用的版本控制工具(git、svn等)来实现自动部署项目比如说我们从本地上传代码到Gitlab代码仓库Jenkins就会帮我们自动同步代码然后经编译打包之后推送至远程Docker仓库再之后我们通过服务器从远程Docker仓库拉取镜像、创建及启动容器然后就可以通过浏览器访问了整个过程几乎都是自动完成的而我们只需要上传代码就可以了接下来我们一起来看看整个搭建过程吧。
本文环境
Docker Version 19.03.11https://www.cnblogs.com/niceyoo/p/13096181.html
Maven Version 3.3.9https://www.cnblogs.com/niceyoo/p/13068935.html
JDK Version 1.8.0_181https://www.cnblogs.com/niceyoo/p/11483139.html
GitLabhttps://www.cnblogs.com/niceyoo/p/13057533.html
Jenkins Version 2.222.4参考本文
通过本文可以了解哪些
通过Docker部署Jenkins使用Jenkins一键部署Springboot项目整合GitLab实现上传代码自动部署项目
如下Jenkins安装及配置过程
1、拉取代码
docker pull jenkins/jenkins:lts2、创建并启动容器
在构建的过程由于我本身CentOS已经安装JDK、Maven了「可以参考上方的安装链接」所以在这我就直接指定本地环境变量了当然如果你不指定的话安装完Jenkins后还是可以在全局工具配置中修改的
docker run --namejenkins --privilegedtrue \
-u root \
--rm \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
-v $(which docker):/usr/bin/docker \
-v /etc/sysconfig/docker:/etc/sysconfig/docker \
-v /usr/java/jdk1.8.0_181:/usr/java/jdk1.8.0_181 \
-v /home/maven/apache-maven-3.3.9:/usr/local/maven \
-v /home/maven/repo:/usr/local/maven_repository \
-v /home/jenkins-data:/var/jenkins_home \
jenkins/jenkins:lts启动后在浏览器输入http://容器ip:8080 访问。 管理员密码需要我们在log中查询
docker logs jenkins3、安装推荐的插件
输入密码登陆后会弹出插件安装提示我们在这选择安装推荐的插件 接下来就进入漫长的等待状态~
4、创建管理员账号
安装之后接下来创建一个账号 进行实例地址配置该地址将作为将来Jenkins的访问地址 至此保存并完成会重启Jenkins然后我们可以通过刚刚创建的账户登录「使用管理员root也可以」
5、Maven配置修改
之前我们创建容器时复用了本地宿主机的Maven环境变量但是安装完Jenkins后还是要指定一下Maven目录的依次进入系统管理 全局工具配置 首先是顶部的Maven我们选择文件系统中的setting文件文件路径使用创建容器时指定的Maven路径 usr/local/maven
/usr/local/maven/conf/settings.xml然后拉到最下边Maven节点点击新增Maven起一个名字然后指定maven路径去掉自动安装的选项然后应用保存
6、新建一个任务
然后我们新建一个任务选择构建一个自由风格的软件项目 点击确定之后会跳入配置界面接下来就是配置我们的自动化操作首先是配置项目的拉取地址在这我是基于Gitlab的关于Gitlab的搭建可以参考这篇https://www.cnblogs.com/niceyoo/p/13057533.html 点击添加GitLab的账户密码不添加时会报红是没法在GitLab中拉取代码的 接着我们选择一下构建指令执行shell
#!/bin/bash
result$(docker ps | grep 10.211.55.4:5000/niceyoo-demo)
if [[ $result ! ]]
then
echo stop niceyoo-demo
docker stop niceyoo-demo
fi
result1$(docker ps -a | grep 10.211.55.4:5000/niceyoo-demo)
if [[ $result1 ! ]]
then
echo rm niceyoo-demo
docker rm niceyoo-demo
fi
result2$(docker images | grep 10.211.55.4:5000/niceyoo-demo)
if [[ $result2 ! ]]
then
echo 10.211.55.4:5000/niceyoo-demo:latest
docker rmi 10.211.55.4:5000/niceyoo-demo:latest
fi这个地方解释一下为啥要用到shel脚本这个脚本有两个操作首先是通过 docker ps | grep 10.211.55.4:5000/niceyoo-demo查询是否存在容器如果存在的话则stop停止容器然后再rm删除容器第二步是通过 docker ps -a | grep 10.211.55.4:5000/niceyoo-demo查看是否存在该镜像如果存在则 rmi 删除该镜像为啥要删除镜像容器其实这样是帮助我们把每次自动化构建镜像、容器之前都把旧的给删除掉。 “10.211.55.4:5000/niceyoo-demo” 是我项目打包后的镜像名称组成规则为镜像地址/项目名称 然后添加Maven指令用于构建项目简单说一下这个地方我在项目的 pom.xml文件中使用了 docker-maven-plugin 插件同时替换了 mvn pavkage 指令当每次执行该命令时就会自动提交至Docker远程私有仓库中私有仓库是基于DockerRegistry搭建的关于Registry的搭建可以参考这篇https://www.cnblogs.com/niceyoo/p/13058238.html clean package如下是SpringBoot项目 pom.xml 文件中的插件编写已经把注释写的很清楚了
buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/pluginplugingroupIdcom.spotify/groupIdartifactIddocker-maven-plugin/artifactIdversion1.0.0/versionconfiguration!--镜像名称--imageName10.211.55.4:5000/${project.artifactId}/imageName!--指定dockerfile路径--!--dockerDirectory${project.basedir}/src/main/resources/dockerDirectory--!--指定标签--imageTagsimageTaglatest/imageTag/imageTags!--远程仓库地址--registryUrl10.211.55.4:5000/registryUrlpushImagetrue/pushImage!--基础镜像jdk1.8--baseImagejava/baseImage!--制作者提供本人信息--maintainerniceyoo apkdream163.com/maintainer!--切换到ROOT目录--workdir/ROOT/workdircmd[java,-version]/cmdentryPoint[java,-jar,${project.build.finalName}.jar]/entryPoint!--指定远程docker地址--dockerHosthttp://10.211.55.4:2375/dockerHost!--这里是复制jar包到docker容器指定目录配置--resourcesresourcetargetPath/ROOT/targetPath!--指定需要复制的根目录${project.build.directory}表示target目录--directory${project.build.directory}/directory!--用于指定需要复制的文件${project.build.finalName}.jar表示打包后的jar包文件--include${project.build.finalName}.jar/include/resource/resources/configuration!--执行mvn package时替换为执行mvn package docker:build--executionsexecutionidbuild-image/idphasepackage/phasegoalsgoalbuild/goal/goals/execution/executions/plugin/plugins
/build接下来再添加一个执行shell用来执行构建容器
docker run --rm -d -p 9999:9999 --name niceyoo-demo 10.211.55.4:5000/niceyoo-demo部分参数解释在这我用的 -p 9999 端口--nama 后面指向的是重命名后的容器名称 niceyoo-demo 镜像的名称 10.211.55.4:5000/niceyoo-demo接下来就是应用保存了 到这我们就可以运行一下了点击立即构建然后通过点击 Build History 中的 控制台输出 等待一会最后看到下图所示BUILD SUCCESS 就可以了 然后我们在Registry私有镜像仓库看一下是否推送 再看看最后一步的shell脚本帮我们创建并启动容器了没~ 到这我们就可以在浏览器访问项目了
7、创建Gitlab钩子
我们要实现的最终效果是一上传代码就帮我们自动执行如上整个过程~那么我们需要配合Gitlab的钩子实现首先我们先去系统管理 插件管理 安装 GitLab 插件。 安装后我们进入项目配置界面切换至构建触发器 我们复制这个链接然后进入GitLab项目中的 setting Webhooks 「注意这里是项目中的非GitLab的setting配置」 点击Add webhook时如果出现 Url is blocked: Requests to the local network are not allowed 解决方法 进入GitLab首页顶部的小扳手 setting Network 目录执行如下4步不要忘记最后点击 save changes 然后我们再回到之前界面重新添加一下链接点击Add webhook配置之后测试一下 如果上方提示200代表配置成功 然后我们回到Jenkins项目面板就可以看到自动构建了 到这基本就完成自动化创建了只要上传代码就能完成构建了比如我们通过Idea上传代码至GitLab那么Jenkins就会帮我们实现自动化部署了 上传完代码后Jenkins自动构建的截图
可能会出现的问题 - 仅针对本文
1、/usr/bin/docker: 2: .: Can’t open /etc/sysconfig/docker
/usr/bin/docker: 2: .: Cant open /etc/sysconfig/docker
出现这个问题说明创建的Jenkins是无法使用宿主机里的docker命令的我们可以进入jenkins容器执行docker version正常情况是可以打印信息的而不正常则如上方错误提示。
这个问题可以通过挂载 -v /etc/sysconfig/docker:/etc/sysconfig/docker 完成再回到第2步看看是不是漏掉了。
2、You don’t have either docker-client
You dont have either docker-client or docker-client-latest installed. Please install either one and retry. 这个问题我曾尝试使用 yum 安装最新的 docker-client最后放弃了然后就在纠结为何别人没出现这个问题后来几经测试果断卸载重装
猜测之前使用 yum 默认安装的 docker 实在是太老了 默认安装的是1.13.x版本而现在最新版本都 19.x 了…
卸载重装最新版是不会把之前下载的镜像删掉的前提是不要完全删除干净哈我测试过了咳咳…
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-enginerm -rf /etc/systemd/system/docker.service.drm -rf /var/lib/dockerrm -rf /var/run/docker 安装最新Docker可以参考这篇https://www.cnblogs.com/niceyoo/p/13096181.html
然后再重新拉取Jenkins重新创建一下容器。
推荐阅读
CentOS中安装Docker步骤
基于Docker搭建私有镜像仓库
基于Docker搭建Gitlab代码存储