Jpom-万能的构建部署模版

Jpom 简介

官网介绍:简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件。

它能做什么
  • 项目管理:创建、启动、停止、实时查看项目控制台日志,管理项目文件;
  • 节点管理集群节点:统一管理多节点的项目,实现快速一键分发项目文件;
  • ssh 终端:在浏览器中执行 SSH 终端,方便进行日常运维,记录执行命令记录;
  • 在线构建:在线拉取 GIT、SVN 仓库快速构建项目包,不用运维人员手动上传项目包;
  • 在线脚本:在线管理脚本、定时执行脚本、webhook 钩子执行、执行日志等;
  • DOCKER 管理:在线管理镜像、容器、SWARM 集群。界面化管理 DOCKER;
  • 用户管理:多用户管理,实现不同用户不同权限,用户操作、管理日志完善记录;
  • 项目监控:实时监控项目当前状态、如果异常自动触发邮件、钉钉报警通知;
  • NGINX 配置、SSL 证书:在线快速方便的修改 NGINX 配置文件,SSL 证书统一管理;
系统环境
#server端和agent端需要 java (>=1.8)环境
openjdk version "1.8.0_262"
CentOS Linux release 7.4.1708 (Core) 
jpom v2.10.12
下载与安装
经过安全测试,个人感觉离线安装比较方便,方便对批量安装agent端 (agent端可能存在公网网络隔离),可以通过systemd管理。
#提前准备好java环境
下载链接:https://jpom.top/pages/all-downloads/
#安装server端
    解压server-2.10.6-release.tar.gz  解压后到安装目录
# 设置开机自启
    bash "./bin/Service.sh" install enable
    
systemctl start jpom-server.service
systemctl enable jpom-server.service
-----------------------------------------------------------------------
#安装agent端
    解压agent-2.10.6-release.tar.gz  解压后到安装目录 
# 设置开机自启
    bash "./bin/Service.sh" install enable
    
systemctl start jpom-agent.service
systemctl enable jpom-agent.service

server port: 2122
agent  port: 2123

安装目录说明:https://jpom.top/pages/4756ec/#%E9%9C%80%E8%A6%81%E5%87%86%E5%A4%87%E7%9A%84%E7%8E%AF%E5%A2%83
server端数据目录说明:https://jpom.top/pages/6f2c0b/#h2-h2-database%E3%80%81h2database
关于配置文件调整:
常用的配置见: 启动参数 | Jpom
建议:
        使用mysql作为db存储,不建议采用默认H2,尽管jpom支持H2 每日备份和导出,支持H2迁入到mysql
        server端的data修改到数据盘中,
        安装目录、日志目录不能 软链的方式,会导致后台访问不了
        agent 端 application.yml 配置文件统一密码,方便批量安装。
关于目录结构
#默认安装目录 /usr/local/jpom-xxxx
├── conf                    => 配置文件目录
├──── application.yml         => springboot 核心配置文件
├──── logback.xml             => logback 日志配置文件
├── bin                      => 项目管理命令目录
├── data                    => 服务端数据目录文件
├── db                        => 服务端数据存储文件夹(H2)
├── logs                       => 项目日志目录
└──── lib/xxxxx.jar          => 项目运行 jar 文件
-----------------------------------------
#服务端数据目录文件夹说明(https://jpom.top/pages/6f2c0b/)
├── data
├────── build =>                                      构建相关文件夹
├──────────── a7edf3cff8d542d3bf5758f9ab9b9a32 =>     单个构建存储相关文件夹
├──────────────── history =>                          需要执行的脚本
├───────────────────── #1 =>                          单次执行记录相关文件夹
├─────────────────────── info.log =>                  构建日志
├─────────────────────── result =>                    构建产物存储文件夹
├──────────────── source =>                           构建的仓库文件夹
├────── script =>                                     服务端脚本文件夹
├──────────── a7edf3cff8d542d3bf5758f9ab9b9a32 =>     脚本对应相关文件夹
├──────────────── script.sh =>                        需要执行的脚本
├──────────────── log =>                              执行日志
├────── command_log => ssh                            脚本执行记录
├──────────── a7edf3cff8d542d3bf5758f9ab9b9a32 =>     单个脚本相关文件夹
├──────────────── 004d320e00794d63831d63e3a5ed4344 => 脚本批量执行日志
├────── backup_old_data =>                            2.7.x 升级 2.8.x 迁移数据备份文件夹
├────── agent =>                                      服务端保留插件的 jar 包文件夹
├────── remote_version.json =>                        远程更新,获取信息版本缓存文件信息
├────── docker =>                                     docker 相关文件
├──────────── tls-cert =>                             docker tls 证书文件保存路径
├────── temp =>                                       临时文件,上传文件缓存目录,运行中产生
├── db =>                                             服务端数据存储文件夹
├────── backup =>                                     备份数据文件夹
├──────────── 20220609120000.sql =>                   sql 文件
├────── recover_backup =>                             执行修复数据后的原数据库备份文件夹
├──────────── 2022-06-10 09/16/38 =>                  单次备份文件夹
├──────────────── Server.mv.db =>                     数据库文件
├──────────────── Server.trace.db =>                  数据库文件
├────── execute.init.sql.log  =>    #记录已经初始化过 sql hash,避免重复初始化数据库 重装需要清除
├────── Server.mv.db =>                               数据库文件
└────── Server.trace.db =>                            数据库文件
升级

关于升级,agent也需要同步升级,未升级可能会出现状态错误

https://download.jpom.top/release/2.10.44/jpom-2.10.44.zip
#server 端
    systemctl stop jpom-server.service
    备份:/bin/cp -rfp server server-2.10.12  
    centos系统 主要涉及如下几个文件,解压完成后,对比修改并替换文件
        bin/Service.sh          
        bin/BlockListener.sh    
        bin/Server.sh                   
        conf/logback.xml        
        conf/application.yml    
    普通用户 修改权限:chown www.www * -R
    systemctl start  jpom-server.service
#agent端
    systemctl stop jpom-agent.servic
    备份:/bin/cp -rfp agent agent-2.10.12
    centos系统 主要涉及如下几个文件,解压完成后,对比修改并替换文件
     bin/Agent.sh        
     bin/Service.sh          
     conf/logback.xml    
     conf/application.yml
    普通用户 修改权限:chown www.www * -R
    systemctl start  jpom-agent.service   

功能测试(jpom v2.10.12)

系统管理中:主要使用 用户管理、系统管理
用户管理:
多用户管理,实现不同用户不同权限,用户操作、管理日志完善记录;
登录安全:支持MFA二次验证,支持防暴力登录账号机制配置
user:
    # 用户连续登录失败次数,超过此数将被限制登录
    always-login-error: 5
    # IP连续登录失败次数,超过此数将被限制登录
    always-ip-login-error: 10
    # 当ip连续登录失败,锁定对应IP时长,5h、1d
    ip-error-lock-time: 5h
    # 是否强制提醒用户开启  mfa
    force-mfa: false
权限组:普通用户权限,可以对不同的工作空间进行独立的权限控制
普通发布用户给与 执行权限下载权限 即可,
权限并不能很清楚对应的菜单与功能
时段控制:有需求再添加

普通用户添加:只能在创建的时候生成随机密码

新用户与用户修改密码:新用户建议修改密码(复杂密码16位以上)
通知地址:报警联系人通知方式,

管理日志:修改或执行的操作会记录,点开详情可以查看的到请求消息和返回消息

系统管理:
主要使用工作空间、也包含主要的在线操作功能、在线查看日志、在线修改系统配置与在线升级
工作空间:以工作空间为基础做权限和应用的隔离

功能管理中:主要使用 在线构建、ssh管理、脚本管理、监控管理

在线构建:
支持回滚功能:生产环境不推荐使用回滚,优先采用重新发版。
支持拉取 GIT、SVN仓库 支持 SSH 方式发布、支持定时构建、支持 WebHook 形式触发构建
添加仓库信息:优先使用GIT、 帐号信息推荐token的方式避免用户信息泄露

添加构建:

缓存构建目录 关闭!!! 清理发布产物,避免发布旧版本文件

构建方式:本地构建

构建命令:主要是发布前编译等操作

                git rev-parse --short HEAD

                mvn3.2.5 package -Dmaven.test.skip=true -Pprod -T2 -am

产物目录:需要发版的文件或者目录,

                target/sadbop.prod.jar

发布操作:SSH

发布的SSH:ssh主机

发布目录:服务部署目录

发布命令:发布同步文件之后的操作,如启动和修改文件权限等

                chown www.www /export/www/sadbop -R

                systemctl reset-failed sadbop-api.service

                systemctl restart sadbop-api.service

清空发布:上传新文件前,会将项目文件夹目录里面的所有文件先删除后再保存新文件

缓存构建目录:每次构建都将重新拉取仓库代码

保留产物:构建完成后是否保留构建产物相关文件,用于回滚

差异构建:防止重复构建

WebHooks:调用其他WebHooks服务

定时构建:支持cron格式

事件脚本:构建过程执行对应的脚本,推送事件消息( 可选)

附加环境变量:

构建历史:配置文件配置保存份历史记录,提供下载日志和产物
 # 构建相关配置
  build:
    # 最多保存多少份历史记录
    max-history-count: 1000
    # 单个最多保存多少份历史记录
    item-max-history-count: 50

怎么发版

怎么才能同一个版本重新发
提交同一个版本发布会报构建失败 ‘仓库代码没有任何变动终止本次构建:’

如何避免构建失败发送旧产物
当新的构建报错而没有生成构建产物,发布构建正常,但服务器上的文件尚未更新

SSH 管理:使用ssh key的方式连接发布机器,提供命令执行与文件查看功能
文件目录:授权可直接访问的目录,多目录回车换行即可
SSH名称:当前SSH连接名称,建议使用IP/域名/hostname命名
host:当前SSH连接服务器的IP Port:当前SSH端口,默认22,请填22
用户名:当前服务器登陆账户
认证方式: 选择 证书
私钥内容:密钥,可以不随jpom机器系统用户的key, 只要能登录发版机器即可(如不是用系统key之后,jpom机器是无法登录发版机器,只能通过jpom)

脚本管理:测试主要用来做事件通知,支持shell
描述内容就是构建过程执行对应的事件
[startReady]='准备构建' \
 [pull]='拉取仓库代码' \
 [executeCommand]='执行构建命令' \
 [packageFile]='打包产物' \
 [release]='发布产物' \
 [finish]='开始执行 构建结束' \
 [stop]='发布前中断' \
 [success]='发布结束' \
 [done]='构建结束' )

监控管理:监控列表配置与项目管理有关联,所以仅配置操作监控,
监控用户:所有
监控功能:所有
监控操作:所有
警报联系人:系统管理员

v2.10.12测试后存在的问题

  • 构建不能暂停,不能定制化构建流程
  • 回滚功能不是全流程 不能触发事件脚本
  • 构建功能触发事件脚本不能传自定义参数
  • 脚本 和shell命令的exit 异常退出码 但构建仍然进行
  • 不能支持项目权限分配
  • 帐号不支持支持 LDAP/SSO
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值