DevOps ---- GitLab + Maven + Docker + Harbor
今天来记录一下自己这边儿做的CI,还没到CD那一步呢,不过就是添加一下构建后操作,没什么更大的难度,话不多说,整起来!
实施过程:
- 使用Docker安装Jenkins.
- 在GitLab中配置与Jenkins主机之间的秘钥对儿.
- Jenkins中安装可能用到的插件.
- 安装Harbor
- Jenkins系统配置
- 创建任务
1. 使用Docker安装Jenkins
这个有点儿坑,刚开始在Docker Hub上找镜像下载下来发现实老版本了,要装稳定版已经换了位置了,如下。
~]# docker pull jenkins/jenkins:lts
~]# docker images
....
jenkins/jenkins lts
....
# 为什么要做赋权这一步操作,是因为jenkins这个镜像内部的Dockerfile内容指定了用户是jenkins,uid为1000,如果不赋权限,Jenkins是起不来的= =;(排第一个坑)
~]# chown -R 1000:1000 /mnt/docker/jenkins
~]# docker run --name myjenkins -d --restart=always -p 8000:8080 -v /mnt/docker/jenkins/:/var/jenkins_home jenkins/jenkins:lts
~]# docker ps -l # 会查看到最近刚启动的容器
~]# docker logs -f myjenkins # 跟踪jenkins启动日志
接下来Jenkins就是界面化了,直接依照顺序与说明进行就可以
2.在GitLab中配置与Jenkins主机之间的秘钥对儿.
这个位置要填写的公钥是Jenkins那台服务器上的公钥,如果没有生成的话要先手动生成一下;
~]# ssh-key-gen #一路回车就可以
~]# cat ~/.ssh/id_rsa.pub # 将cat到的内容复制到下图中的4号位置并添加
3.Jenkins中安装可能用到的插件.
- Maven Integration plugin # 用来创建Maven项目
- Docker plugin # 用于集成Jenkins和Docker
- CloudBees Docker Build and Publish plugin # 支持构建基于Dockerfile的项目,以及将构建的镜像发布到docker私有仓库
- Build Timestamp Plugin # 全局变量日期
还有一些插件,因为我这是做完了项目写的,所以也没啥印象了,到时候你们看截图里如果没有我这点的东西的话就去下载就好。
4.安装Harbor
看我另一篇博客有过程:https://www.cnblogs.com/k-free-bolg/p/11060611.html
当中的harbor.cfg中的hostname建议使用ip地址,不然主机名的话可能还要配置hosts文件才可以
5. Jenkins系统配置
- 首先要配置maven,而且这个maven让他自己安装就可以,因为我这里安装完了,所以没有截图了;
- 配置全局变量时间,当部署时不输入版本号的时候,默认以时间作为镜像的tag(如下);
- 配置Docker云(拉到最下面可以看到,点进去)
点进来之后就会看到如下图的这些内容,进行配置(这个Docker Host URI是在docker服务器上改的);
/usr/lib/systemd/system/docker.service 按图中修改,端口号自定义;
配置完成后可在下图中的Docker中看到当前运行的容器
6. 创建任务
- 根据项目名创建所需要得项目,配置可选分支功能;
- 增加字符参数,为的是将值作为镜像的标签,方便分类版本,默认为当天日期(也是在参数化构建过程中配置);
- 配置项目Git地址(记得配置凭据,将jenkins宿主机上的私钥写进去即可)
- 配置maven命令及构建后操作(Dockerfile可在jenkins的工作目录中写)
- 开始构建并上传至Harbor(从图中可以看出,最后构建是成功的,且成功上传至了Harbor)