使用Jenkins、harbor、dock-compose实现代码编译打包构建镜像,上传镜像到私有仓库,远程命令服务器下载镜像,创建启动容器,并在可在外部浏览器查看实时更新的数据内容的页面视图
在开始前,我们首先使用VMware的CentOS环境,安装、配置好jenkins后,才能使用springboot项目的编译打包构建镜像部署到单台生产服务器。
本次任务主要是完成Docker+jenkins的持续集成和工程部署
目录
1、第一步,在jenkins中下载extend choice parameter和Publish over ssh插件
3、第三步,编写dockerfile和jenkinsfile文件,并配置idea相关内容,来连接我们的harbor与Jenkins
1、第一步,在jenkins中下载extend choice parameter和Publish over ssh插件
我们先来到jenkins主页面,点击如下图所示位置。
我们选择插件管理,如下图所示。
搜索extend choice parameter插件,进行安装,如下图所示。
如下图所示,就是安装成功了。
我们再搜索Publish over ssh插件,进行下载,如下图所示。
如下图所示,就是安装成功了。
2、第二步,安装私有镜像仓库harbor
a) 在安装harbor之前,我们首先要保证机器上有docker,我们首先为机器安装docker,我们先安装gcc,再安装gcc-c++,再卸载旧版本,去安装需要的软件包,设置镜像仓库,如下图所示。
接下来,我们更新yum软件包索引,安装 Docker CE,再启动 Docker,测试命令,如下图所示。
b)我们安装docker-compose,如下图所示。
c)并且给docker-compose添加执行权限,并且查看其版本,如下图所示。
d)我们将harbor上传到我们的虚拟机里,如下图所示
我们将harbor进行解压,并将解压后的harbor移动到opt目录下,如下图所示。
e)我们在/opt/harbor目录下,找到harbor.yml文件,如下图所示。
f)将其中的hostname和port hostname修改为我们自己的名字和端口。
然后按下ctrl+s,如下图所示,修改hostname和port hostname,将文件上传回服务器。
接下来我们为docker配置镜像加速,先到/etc/docker/目录下,创建daemon.json,并在其内容中写入加速镜像地址,如下图所示。
g)我们输入./prepare和./install.sh来检验和安装harbor,如下图所示。
看到以下内容即说明harbor安装成功了,如下图所示。
接下来,我们输入docker-compose up –d来启动harbor,如下图所示。
我们在地址栏输入http://192.168.88.128:85/即可进入harbor界面,如下图所示。
我们输入默认用户名和密码,然后点击登录,即可进入主界面,如下图所示。
接下来我们建立新的项目,如下图所示。
我们输入我们的项目名称,然后点击确定,如下图所示。
我们进入到项目里,点击用户管理,如下图所示。
我们在harbor创建新的用户,如下图所示。
填写新的用户的相关信息,然后点击确定,如下图所示。
如下图所示,我们创建好了。
我们回到项目内,点击成员,如下图所示。
进入界面后,我们点击+用户,如下图所示。
将新的用户添加为开发人员,如下图所示。
如下图所示,我们添加成功了。
使用新建的用户登录上来后也能看到项目群组,如下图所示。
我们来到Gitlab下,点击groups,再点击我们的组,如下图所示。
确保在目标组下,然后点击new project,如下图所示。
我们输入我们的工程名字为实践,并且设置在nnd_group的组下,最后点击下方绿色按钮create project,如下图所示。
3、第三步,编写dockerfile和jenkinsfile文件,并配置idea相关内容,来连接我们的harbor与Jenkins
我们创建一个项目,选择Spring Initializr
填写相关信息,如下图所示,然后点击next。
我们选择web里的spring web,如下图所示。
确认地址之后,我们点击finish,如下图所示。
我们在进入环境之后,创建controller文件夹,然后编写一个ShijianController.java文件,文件内容如下图所示。
然后我们运行主程序,如下图所示。
可以看到我们可以访问页面信息,如下图所示,测试成功。
我们回到idea项目界面,然后点击上方菜单中的vcs,如下图所示。
选择第一项,如下图所示
我们选择Git,然后点击ok,如下图所示
我们将所有文件添加到本地去,如下图所示。
然后我们将文件推送到本地仓库去,如下图所示
选择好我们需要上传的文件,写好描述之后,点击Commit,如下图所示。
接下来我们,回到idea,为我们的项目去配置一下Git远程仓库地址,如下图所示。
进入新的界面之后,我们点击加号,如下图所示。
来到浏览器的gitlab中我们的shijian项目,复制其http链接,如下图所示。
我们来到idea刚刚新打开的界面,填写我们的仓库名字,粘贴链接,然后点击OK,如下图所示。
在我们当前项目的目录下,创建Dockerfile和Jenkinsfile文件,并且编写其内容,如下图所示。
Dockerfile文件内容如下。
Jenkinsfile文件内容如下。
我们为我们的pom.xml文件添加上需要的插件,如下图所示。
记得检查自己pom.xml中项目的名称是否正确,如下图所示。
我们来到Jenkinsfile,选择新建任务,如下图所示。
我们填写好项目名称,选择流水线项目,然后点击确定,如下图所示。
我们选择Pipeline script from SCM外接Git,粘贴我们的Git仓库的ssh链接,并且选择我们的登录用户,再点击应用和保存,如下图所示。
接下来我们来到流水线语法,如下图所示。
我们选择checkout:Check out from version control,粘贴上我们Git仓库的ssh链接,放入我们要登录的用户,如下图所示。
我们点击生成流水线代码,如下图所示。
我们复制流水线代码,粘贴到此处,并将上方的git_auth内容也改成一致的ID,如下图所示。
我们修改一下harbor地址和镜像名称,如下图所示
我们来到Jenkins中,点击系统管理,如下图所示。
找到属于安全分类下的Manage Credentials,点击进去,如下图所示。
在全局凭证下,点击右上角添加新的凭证,如下图所示。
我们选择Username with password,填写用户名和密码,写一个描述之后点击create,如下图所示。
如下图所示,我们就创建好了。
我们在回到流水线语法,选择with Credentials:Bind credentials to variables,Username and password (separated),如下图所示。
我们写好用户名和密码,选择好我们的凭据,点击生成流水脚本,如下图所示。
我们将流水线复制到idea,并且设置上方harbor_auth的内容,如下图所示位置。
我 们写入以下内容,进行harbor仓库的登录和推送,并且在推送成功之后,我们在node1机器上把这两个镜像都删除掉,如下图所示。
我们回到Jenkins上为它安装Publish Over SSH,如下图所示。
我们使用ssh-copy-id命令,将node2的公钥发给node1和node3,这样我们的免密操作就做好了,我们测试一下,如下图所示。
我们回到Jenkins里,在系统管理下,找到系统配置。如下图所示。
在最下方Publish over SSH,写入我们私钥的地址,如下图所示。
在它的下方,我们点击添加,我们编写免登录服务器的名称,它的地址,登录的用户名和第一次进入服务器时的所在目录,如下图所示。
我们再回到流水线语法里来,我们选择sshPublisher:Send build artifacts over SSH,填写我们刚刚写的服务器名字,如下图所示。
然后我们点击生成流水线脚本,如下图所示。
我们将代码复制到idea内,如下图所示位置。
我们在node3上新建一个目录/opt/jenkins_shell/,如下图所示。
我们将deploy.sh放入其中,如下图所示。
我们来到/opt/jenkins_shell/,为deploy.sh设置可执行权限,如下图所示。
我们将这个文件的地址放入execCommand,再写入harbor地址的动态变量,镜像的名字,标签和端口号,如下图所示。
我们在deploy.sh中会接收外部参数,将harbor里的镜像仓库的URL,工程名字,镜像名字和版本号赋值给imageName变量,然后查询容器是否存在,存在则停止掉它并且删除,再去查询镜像是否存在,存在则删除,我们登录Harbor,镜像下载镜像和启动容器的操作,如下图所示。
4、第四步,立即构建
接下来我们回到Jenkins中我们创建的shijinademo项目,点击立即构建,如下图所示。
我们正在构建,如下所示。
如下图所示,我们构建成功了。
我们查看一下它的构建日志,如下图所示。
我们再前往harbor中nnd组内的镜像仓库看一下,如下图所示。
我们来到node3,查看一下docker镜像和正在运行的镜像
我们再去浏览器访问一下,如下图所示。
5、第五步,实现同时构建两台服务器
接下来我们尝试一下同时构建两台服务器,我们先去安装一下插件Extended Choice Parameter,如下图所示。
如下图所示,我们安装成功了。
我们在系统管理里找到系统配置,如下图所示。
在最后新增一个ssh server,填写我们的名称,地址,用户名和登录后的目录位置,填写好后我们点击应用和保存,如下图所示。
我们回到shijiandemo的配置中,在general中找到参数化构建过程,添加新的参数Extended Coice Parameter,如下图所示。
填写我们选项的名字,并写上描述内容,选择Basic Parameter Types,在Parameter Type中,选择Check Boxes,如下图所示。
我们选择选项有两个,并且以逗号分隔,如下图所示。
我们选择Value,并且写入我们的两个选项内容,以逗号分隔开,选择Default Value,填写上我们默认选项值,然后点击应用和保存,如下图所示。
我们回到idea上添加名为servers的函数,设置一个for循环,在循环中分别获取server的内容和port端口的内容,如下图所示。
记得将port动态变量添加到execCommand中去,如下图所示。
我们再去node1机器中去,如下图所示。
将deploy.sh放入其中,如下图所示。
别忘了在node1下,到/etc/docker/目录中,加入对harbor的信任,如下图所示。
在完成后,我们重载一下daemon,并且重启一下docker,如下图所示。
(6) 接下来我们回到Jenkins中我们创建的shijinademo项目,点击立即构建,如下图所示。
如下图所示,我们构建成功了。
我们看一下运行日志,如下图所示。
我们去node1节点上看一下,查看一下docker镜像和正在运行的镜像,如下图所示。
我们再去node3节点上看一下,查看一下docker镜像和正在运行的镜像,如下图所示。
我们在浏览器上访问一下node1的9999端口,如下图所示。
我们在浏览器上访问一下node3的8080端口,如下图所示。
---
以上就是本文全部内容,如果它对您有帮助,请您帮我点个赞,这对我真的很重要
更多推荐
所有评论(0)