使用Jenkins、harbor、dock-compose实现代码编译打包构建镜像,上传镜像到私有仓库,远程命令服务器下载镜像,创建启动容器,并在可在外部浏览器查看实时更新的数据内容的页面视图

在开始前,我们首先使用VMware的CentOS环境,安装、配置好jenkins后,才能使用springboot项目的编译打包构建镜像部署到单台生产服务器。

本次任务主要是完成Docker+jenkins的持续集成和工程部署

目录

1、第一步,在jenkins中下载extend choice parameter和Publish over ssh插件

2、第二步,安装私有镜像仓库harbor

3、第三步,编写dockerfile和jenkinsfile文件,并配置idea相关内容,来连接我们的harbor与Jenkins

4、第四步,立即构建

 5、第五步,实现同时构建两台服务器


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端口,如下图所示。

---

以上就是本文全部内容,如果它对您有帮助,请您帮我点个赞,这对我真的很重要

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值