Jenkins自动化部署集成了docker-maven插件的多模块项目

网友投稿 1777 2022-11-05

Jenkins自动化部署集成了docker-maven插件的多模块项目

Jenkins自动化部署集成了docker-maven插件的多模块项目

Jenkins自动化部署环境搭建

本文的目的是将多模块的项目利用 jenkins 实现自动化的部署,再将代码推送到 gitlab 时,jenkins 通过轮询的方式查看 gitlab 的代码是否有变化,有变化则拉取仓库的代码,使用 maven 打包,而我的项目各个子模块又集成了 docker-mavne 插件,会将各模块的服务打包为 docker 镜像推送到服务器,在服务器编写好对应 docker-compose.yml 编排文件启动项目,所以 jenkind 需要在 maven 打包完成后,向服务器发送编排启动项目的命令,即可达到自动化部署项目的目的

1.拉取镜像

有很多的 jenkins 镜像,我们选择 jdk8 这一个

docker pull jenkins/jenkins:latest-jdk8

2.准备 maven 和 jdk

自行前往官网-对应的版本,这里采用的 maven3.6.3 和 jdk8

3.编写编排文件

准备一个目录放置挂载文件和 docker-compose.yml 文件新建一个名为 hudson.model.UpdateCenter.xml 的文件,填入一下内容

default

新建 docker-compose.yml 文件

version: '3' services: docker_jenkins: user: root restart: always image: jenkins/jenkins:latest-jdk8 container_name: jenkins ports: - 8080:8080 - 5000:5000 volumes: - /etc/localtime:/etc/localtime # 挂载位置(镜像和宿主机器之间时间保持一致) - ./jenkins_home:/var/jenkins_home # 挂载maven,按自己的需求修改maven的配置文件,配置仓库地址和本地仓库存储地址 - ./apache-maven-3.6.3:/var/jenkins_home/maven # 挂载 jdk8 - ./jdk1.8.0_202:/var/jenkins_home/jdk8 - ./jenkinsci:/usr/jenkinsci - /var/run/docker.sock:/var/run/docker.sock - /usr/bin/docker:/usr/bin/docker - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose # 挂载出生成的密钥 - ./ssh:/root/.ssh # 如果容器无法解析域名,则需要将容器的网络模式修改为 host 模式

启动项目:docker-compose up -d

4.初始化 Jenkins

第一次登录需要在服务模块下获取密码,因为已经将 jenkins_home 目录挂载出来了,直接去对应的目录下找即可。

选择安装推荐的插进

安装插件这里主要安装 Maven Integration 和 publish over ssh 插件系统管理 -> 插件管理 -> 可选插件 搜索这两个插件-即可

配置 maven 环境和 jdk 环境

进入 系统管理 -> 全局工具配置

5.gitlab配置ssh

# 生成密钥 ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa # 查看公钥 cat /root/.ssh/id_rsa.pub

​​复制这个令牌保存起来​​,作为之后访问 gitlab 的令牌

jenkins 配置 gitlab 登录

6.git plugins 配置

系统管理 -> 系统设置 -> git plugin 配置姓名和邮箱

7.新建任务

首页 -> 新建任务 -> 构建一个 maven 项目

cat ssh/id_rsa

选择“构建触发器”,勾选“Pull SCM”,这个选项会每隔一段时间检查一下GitLab仓库中代码是否有更新,有的话就执行构建操作。日程表如何设置,在这个输入框下面有说明,轮询的时间还可以再缩短一点,比如 10s、半分钟、一分钟之类的常见构建触发器:

Build after other projects are built 当另一个构建任务完成之后触发Build periodically 周期性的触发Build when a change is pushed to GitLab. GitLab CI Service 当代码有更新的时候触发,通过GitLab CIGitHub hook trigger for GITScm polling 通过Github钩子触发Poll SCM 定期检查代码有无更新,有更新时触发

# 登录服务器,执行docker-compose编排命令 cd /data/docker/farmland-chief-server docker-compose stop docker-compose rm -f docker-compose up -d docker rmi $(docker images | grep "none" | awk '{print $3}')

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Igni是一款迷你php7框架用于构建PSR-7和PSR-15兼容REST服务
下一篇:XLearning是一款支持多种机器学习、深度学习框架的调度系统
相关文章

 发表评论

暂时没有评论,来抢沙发吧~