Jenkins前后端项目参数化自动构建
最近进行了一次开发测试环境迁移 , 顺带连着之前的 Jenkins 也进行了迁移 , 因为对之前的搭建过程没有记录 , 导致这次的迁移过程中遇到了不少阻力 . 现记录主要流程于此 , 方便之后搭建 .
安装
首先我们需要安装 Jenkins , 需要装卸方便 , 因此我们选择用 Docker 或 docker-compose 直接安装
Docker
1 | docker run --name devops-jenkins --user=root -p 8080:8080 -p 50000:50000 -v /mnt/data/jenkins/jenkins_home:/var/jenkins_home -d jenkins/jenkins:lts |
docker-compose
1 | version: '3' |
启动后初始化及安装推荐插件
可以通过容器日志查询初始密码
1 | docker logs xxx(容器ID) |
可能部分插件超时安装失败 , 我们需要去网站上下载
hpi
插件文件 , 手动上传安装
本文用到一些重要的插件列举如下:
- Http Request http请求插件
- Publish Over SSH 文件上传部署插件
- Docker docker插件
- Role-based Authorization Strategy 角色权限插件
- Build-user-vars-plugin 构建角色变量插件
- Beary Chat 协作工具通知插件(视实际情况进行替换)
- …
系统配置
点击系统管理 -> Global Tool Configuration 找到 JDK 点击新增按钮进行安装 , 此处需要 Oracle 账号请自行注册
然后找到 Maven 点击新增按钮 , 此处我们使用 3.2.5
视具体情况进行替换 , 笔者是因为选择其他版本编译项目会报错 .
点击系统管理 -> 系统设置 配置 SSH (前端nginx服务器)
权限分配
选择系统管理 -> Configuration Global Security 启用安全: TCP port for JNLP agents ->禁用,访问控制-安全域->jenkins专有用户数据库 , 访问控制-授权策略->Role-Based Strategy 如:
选择系统管理 Manage and Assign Roles -> Manage Roles
此处针对项目配置权限 , 以项目名正则匹配 . 这里提供几个例子
^((?!other).)*$
项目名中不带other
的均符合
[\w\W]*frontend[\w\W]
项目名中间有frontend
的均符合
[\w\W]*
任意项目名均符合
前端
场景说明
这里针对 前端 Vue 项目进行构建 . 前端开发人员会本地进行打包 , 得到一个 dist.zip
压缩包 , 此时需要上传到 nginx 服务器上 , 自动解压 . 当然有更好的做法 , 直接在服务器上拉取代码 , 编译 , 部署 , 此处我们只讲解打包后通过 Jenkins 上传的流程 .
1 | 视具体情况进行替换 |
后端
后端是使用 Java Spring Cloud 项目. 开发者在 Jenkins 指定对应环境、参数然后就会开始构建 , 过程大致为
选择参数构建 -> Jenkins 从 Git 上拉取代码 -> Maven构建 -> Docker构建镜像 -> 推送到私有镜像仓库 -> 通知 Rancher 集群更新服务 -> 通知协作工具 / 邮件通知
首先确定构建参数
Execute Shell
1 | docker login --username=仓库USERNAME --password=仓库PASSWORD $DOCKER_REGISTRY |
然后再通过构建后操作使用 Http Request
插件调用接口升级 Rancher 服务 , 具体参考 Rancher通过API升级服务
文章 .
在实际应用中发现 , 此方法升级会覆盖之前的服务主机调度 , 因此对于多机器集群 , 不大适用