版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liubingyu12345/article/details/80737412
Jenkins+Docker自动化部署Spring boot项目 (三)搭建jenkins
搭建jenkins
jenkins我是通过下载镜像完成安装的,建议使用docker hub的镜像,它提供的版本比较新。一开始为了图快,我用了163镜像库的jenkins镜像,它的版本比dokcer hub低一个版本。安装好后安装插件,有个必要的插件安装不上,提示版本太低,后来换成docker hub提供的高版本镜像文件就OK了。这是官方地址
前置条件
操作系统版本:Ubuntu16
docker版本:1.13.1
私有库harbor搭建成功
spring boot项目配置好dockerfile maven插件
操作步骤
####1. 拉去镜像
1 | sudo docker pull jenkins |
####2. 构建镜像
a. 由于容器内权限问题,我们需要根据官方镜像构建一个自己的jenkins镜像。很简单,写个Dockerfile即可,内容如下:
1 | FROM jenkins |
b. 在Dockerfile所在目录执行构建新镜像命令:
1 | sudo docker build -t jenkins:2.0 #这里的镜像名是自己任取的 |
####3. 启动容器
1 | sudo docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -u root \ |
上面的命令通过-v 将本地maven目录与Jenkins容器内目录关联,方便后面构建任务时要用到
a. 浏览器输入http//:127.0.0.1:8080
b. 第一次进入会让你输入初始密码,界面上会告诉你在哪个文件下,或者通过docker logs -f jenkins容器号查看启动日志,上面也会打出初始密码
c. 输入密码成功后选择安装默认插件,下面就跟着提示一步步走就好了。
d. 上面 步骤成功后会进入主界面,马赛克的地方是我已经建好的构建任务
####4. 插件安装
检查以下几个插件是否安装
Maven Integration
docker-build-step
Docker
Gitlab Hook
GitLab
####5. 全局配置
主要是配置mvn,方便后面构建任务中的脚本能调到宿主机上的mvn命令
maven目录填与宿主机maven目录关联的容器目录
####6. 构建任务
#####a. 点击新建
#####b. general部分填项目名和项目信息
#####c. 源码管理,jenkins拉代码的地方 ,我的代码是放在gitlab上的,所以配置git。要成功拉取远程仓库的代码,本地环境要配置git账户信息的,所以我先进入容器配置git账户信息的
1 | sudo docker exec jenkins /binbash #jenkins是容器名 |
#####d. 构建触发器,可选配置项。第二个勾选项“触发远程构建”,意思是使用get请求下面说明的url,且带上token,就会触发构建。
#####e. Pre Steps 一般就是写打包命令,我写的是用mvn打包和打成docker镜像
#####f. Post Steps,这里就是写执行脚本,脚本就是负责将打好的镜像push到私有库,远程登录部署机器,pull下来刚才的镜像,停止删除之前的容器,启动该新镜像。脚本我是直接拿的网上现成的。需要注意的是,远程登录部署机,需要在jenkins容器内配置ssh免密登录,我先贴免密登录配置,再贴脚本。
####7. 免密登录:
1 | sudo docker exec 容器号 /bin/bash #进入容器 |
会有文字提示生成的公私钥文件存入位置,一般在命令运行当前目录生成.ssh目录,进入该目录,至少有下面两个文件:
id_rsa : 生成的私钥文件
id_rsa.pub : 生成的公钥文件
下面就是将公钥内容拷到目标机器上,有两种方法,一种在当前机器通过以下命令:
1 | ssh-copy-id -i ~/.ssh/id_rsa <romte_ip> |
另一种是就是手工将本地id_rsa.pub文件的内容拷贝至远程服务器的~/.ssh/authorized_keys文件中
//最后公钥里面得内容都要copy到authorized_keys文件中
####8. jenkins执行脚本:
1 | #================登录私有库,开始推送镜像(harbor我没有用域名)================ |
下面是远程部署机器上clean.sh的内容,网上总结来的,很简单,就是停掉和删除老容器 并删除tag 为none的镜像
1 | #!/bin/bash |
点击保存后,进入主界面,进入自己刚创建的构建任务,点击构建,就会自动执行刚才配置好的内容了。
构建的时候,上图左下角会出现一个递增序号,点击进去后再点控制台,可以看到构建进度
PS:还有一种触发方式就是git push tag触发构建,这个需要在gitlab端配置勾子,也很简单,我是因为Jenkins和部署机器各自在内外网,无法通信,所以没用这个方式。
到此,jenkins搭建配置完毕
###遇到问题
####a. docker login 老是不行被拒,后面发现是hearo挂掉了,特此记录下 //Docker login 被拒 检查 /etc/docker/deam.json 文件配置 ,及hearo服务器有没有启动
####b.
其他问题见下方参考资料
参考:
这位大神写的很好
liubingyu12345 本人根据改作者实际操作有稍微改动,特此感谢
###参考资料
安装docker-compose
daemon.json的作用
修改docker私库的地址(设置docker访问白名单)
Docker ToolBox解决 http: server gave HTTP response to HTTPS client问题
Windows下安装docker后的默认操作系统密码
docker push 镜像 An image does not exist locally with the tag
maven搭建
然后保存退出,执行命令: source /etc/profile 使新增配置生效
Docker之快捷(批量)删除docker镜像容器及释放docker空间(第十六篇
docker中批量删除 tag为none的镜像
Docker命令行参考(13) – docker tag给镜像做一个标签
jenkins修改maven插件的settings.xml
最后更新: 2020年02月03日 14:49