Jenkins部署多模块项目
使用jenkins的理由
项目比较大的时候,如有20个子项目,每天下班要打包测试,这20个项目,
要依次编译、打包、推送到Docker仓库、重新部署,
这一系列流程下来基本上 就2个小时没有了,本地操作还各种卡,
导致基本两个小时浪费了。
使用自动化打包工具目前知道有,Jenkins、Rancher自带的Pipline,
为啥选中了Jenkins, 因为Pipline目前没有看到能支持svn,
公司用的还是svn。
参考资料:Rancher2+Docker+SpringCloud+Jenkins+Redis集群+MySQL主从搭建
参考资料 站内博客 jenkins tomcat 版本 17年 windows tomcat版本
一:Rancher docker安装配置文件
使用rancherdocker-compose.yml文件,如下:
注意事项:
1:要给本地映射路径权限,否则 docker 内部jenkins 打包报错(permission denied):chown -R 1000:1000 /usr/local/jenkins_volume/jenkins_home
version: '2'
services:
# docker私有仓库
registry:
image: registry:latest
stdin_open: true
volumes:
- /usr/local/docker_volume/registry:/var/lib/registry
tty: true
ports:
- 5000:5000/tcp
labels:
io.rancher.container.pull_image: always
jenkins: #docker rancher jenkins
privileged: true
image: jenkins/jenkins:2.199-alpine
stdin_open: true
volumes:
- /usr/local/jenkins_volume/jenkins_home:/var/jenkins_home #持久化jenkins目录;chmod -R 3000:3000 /usr/local/jenkins_volume/jenkins_home
- /usr/bin/docker:/var/bin/docker #dockr执行命令
- /var/run/docker.sock:/var/run/docker.sock
- /etc/alternatives/:/var/java #java 环境
- /etc/localtime:/etc/localtime #时间同步
tty: true
ports:
- 8989:8080/tcp
- 30001:50000/tcp
user: root #指定root用户执行,防止出现权限不走问题。
labels:
io.rancher.container.pull_image: always
1.1 Docker版本jenkins安装注意
1.1.1 安装docker cloud插件
二:Centos直接在主机上面安装 jenkins
2.1 直接安装jenkins (修改home目录、重启)
之前17年的时候,用的jenkins使用的tomcat 运行,这里我们参考官网,直接使用 rpm部署。 官网特别全,直接看官网就OK了。 建议使用tomcat war形式的进行安装, rpm安装形式中过毒。
参考:CentOS 7 安装 Jenkins <国内详细教程、不建议使用 rpm 方式>
参考:RedHat Repository for Jenkins <官网详细教程,可以查阅到最新的版本>
参考: jenkins 安装、卸载
参考:csdn 下载war 包- 官网速度比较感人
#2020最新按照心得
0: jenkins docker形式,镜像名称和内部端口 jenkins/jenkins:lts 8080
1: 服务器授权设置 chown -R 1000:1000 /usr/local/jenkins_home/
2: 修改镜像源:vi hudson.model.UpdateCenter.xml 将 url 修改为 清华大学官方镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 修改完毕,然后再安装插件
3: 安装完毕,记得 安装插件: Maven、rancher、 docker [cloud providers]
另外插件配置:
2-1:jdk:使用外置
2-2:maven 使用外置的
==============
jenkins 安装方式很多,直接yum源,或者 docker, 或者 tomcat war形式,推荐使用war。
docker: 配置繁琐
yum形式:遇到过病毒
tomcat形式:适合会java、tomcat的同学。 文件目录:`/root/.jenkins/`、 `/root/.m2/`
===================
文件看是否被串改:
通用Java包(.war)
SHA-256:97124ccfaf171e3703ca323e6b38310d1c11aa3a2357333f8f394ea7962b369b
参加:MacBook下校验下载文件的SHA2-256 https://www.jianshu.com/p/dbbd886d66a5
docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myjenkins jenkins/jenkins
- 全局配置系统的 maven地址,我们使用主机的maven地址,如,全局搜索
find / -name "maven"
也能找到 或者mvn -v
就能看到 Maven home:/usr/share/maven
- 配置jdk地址,我们安装openjdk, 我们使用
mvn -v
,就能找打Java home路径,去掉后缀jre,如:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/
.
2.2 Jenkins自动丢弃构建历史数据
自动丢弃废弃的构建历史
参考: 自动丢弃废弃的构建历史
2.3 Jenkins中文显示
参考: Jenkins中文显示
2.4 Jenkins 示例最简单demo
2.5 Jenkins 全局配置 configure
2.6 Jenkins 工具配置 configureTools
2.7 jenkins构建触发器定时任务Build periodically和Poll SCM【转载】
参考: jenkins构建触发器定时任务Build periodically和Poll SCM【转载】
自己比较喜欢的0 8,12,18,22 * * *
每天的8点,12点,18点,22点,一天构建4次
2.8 maven配置
maven配置, find / -name "settings.xml"
maven仓库地址: find / -name ".m2"
- 1: 修改maven仓库地址
<localRepository>/usr/local2/jenkins_volume/jenkins_home/.m2/repository</localRepository>
,默认~/.m2,这自己定义 - 2:
<offline>true</offline>
支持离线 - 3:增加maven自定义仓库
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
2.9 maven打包多模块项目打包报错
参考:maven build 的时候报错 Could not find artifact pom:001-SNAPSHOT 异常
项目解决方式,把挨个依赖的手工 安装 mvn install
了一遍, 然后把所有 依赖jar copy到服务器 .m2
目录。如果是比较大的项目安装还是挺麻烦的,无法一次性全部安装,bgy iot 就是这个情况。
三:rancher自动升级
3.1 webhooks方式(阿里云容器服务、dockerhub 触发)rancher 自动升级
使用jenkins可以自动产生docker镜像了,但是发现镜像产生了,还得自己点击rancher上面的升级。
这里就通过阿里云自动调用 rancher webhooks自动来升级。
参考: 通过 Rancher webhook 实现服务自动升级
3.2 通过jenkins rancher 插件实现自动升级
项目中亲测成功
四:Jenkins的备份和还原
4.1 Jenkins复制和导出导入job
有时候机器安装jenKins的机器有问题,需要重新安装,重置配置还是挺麻烦,这里进行job的备份和还原。
说明,我这里最后使用的方法是第一个种手工导入导出job,job里面只需要config.xml,别的都不需要。
直接导入发下还是没用,这里是先创建好空的job,然后覆盖对应的config.xml