当前位置: 首页 > news >正文

推荐一个比 Jenkins 使用更简单的项目构建和部署工具

最近发现了一个比 Jenkins 使用更简单的项目构建和部署工具,完全可以满足个人以及一些小企业的需求,分享一下。

项目介绍

Jpom 是一款 Java 开发的简单轻量的低侵入式在线构建、自动部署、日常运维、项目监控软件。

日常开发中,Jpom 可以解决下面这些常见的痛点:

  • 团队中没有专业的运维,开发还要做运维的活 ,需要自己手动构建、部署项目。

  • 不同的项目有不同的构建、部署命令。

  • 有开发、测试、生产等多环境打包的需求。

  • 需要同时监控多个项目的运行状态。

  • 需要下载 SSH 工具远程连接服务器。

  • 需要下载 FTP 工具传输文件到服务器。

  • 多台服务器时,在不同电脑之间账号密码同步不方便。

  • 想使用一些自动化工具,但是对服务器性能太高,搭建太麻烦。

  • 对自动化工具有个性化的需求,想自己修改项目 ,但是市面上的工具太复杂了。

功能特性

  • 节点管理:集群节点,统一管理多节点的项目,实现快速一键分发项目文件

  • 项目管理:创建、启动、停止、实时查看项目控制台日志,管理项目文件

  • SSH 终端:在浏览器中执行 SSH 终端,方便进行日常运维,记录执行命令记录

  • 在线构建:在线拉取 GIT、SVN 仓库快速构建项目包,不用运维人员手动上传项目包

  • 在线脚本:在线管理脚本、定时执行脚本、webhook 钩子执行、执行日志等

  • DOCKER 管理:在线管理镜像、容器、SWARM 集群。界面化管理 DOCKER

  • 用户管理:多用户管理,实现不同用户不同权限,用户操作、管理日志完善记录

  • 项目监控:实时监控项目当前状态、如果异常自动触发邮件、钉钉报警通知

  • NGINX 配置、SSL 证书:在线快速方便的修改 NGINX 配置文件,SSL 证书统一管理

整体架构

Jpom 整体架构

效果展示

  • 演示地址:https://demo.jpom.top

  • 账号:demo

  • 密码:jpom666

逻辑节点

节点简单理解为服务器就可以,点击节点管理 > 逻辑节点 > 快速绑定,如下所示:

仓库信息

需要构建的项目(仓库)信息,需要手动添加,构建支持 git 仓库的拉取。

 构建列表

构建列表这里展示了所有的构建的项目。

SSH 管理

图片

安装使用

官方提供了多种安装方式,推荐使用「一键安装」,默认会安装到 /usr/local/jpom-server 目录。

# 一键默认安装 + 自动配置开机自启服务
curl -fsSL https://jpom.top/docs/install.sh | bash -s Server jdk+default+service

可以通过以下命令管理 Jpom 服务端:

  • 启动:systemctl start jpom-server

  • 停止:systemctl stop jpom-server

  • 重启:systemctl restart jpom-server

启动成功后,服务端的端口为 2122,可通过 http://127.0.0.1:2122/ 访问管理页面(如果不是本机访问,需要把 127.0.0.1 换成你安装的服务器 IP 地址)。

如无法访问管理系统,执行命令 systemctl status firewalld 检查下是否开启了防火墙 ,如状态栏看到绿色显示 Active: active (running) 需要放行 2122 端口。

# 放行管理系统的 2122 端口
firewall-cmd --add-port=2122/tcp --permanent
# 重启防火墙才会生效
firewall-cmd --reload

如果在操作系统上放行了端口仍无法访问,并且你使用的是云服务器,请到云服务器后台中检查安全组规则是否放行 2122 端口。

注意:Linux 系统中有多种防火墙:Firewall、Iptables、SELinux 等,再检查防火墙配置时候需要都检查一下。

更多 Jpom 服务端安装方式可以查看「安装 Jpom」。

—END—

来源:IT码徒

http://www.lryc.cn/news/400235.html

相关文章:

  • java 在pdf中根据关键字位置插入图片(公章、签名等)
  • 施耐德EOCR系列电机保护器全面升级后無端子型
  • 27.数码管的驱动,使用74HC595移位寄存器芯片
  • TCP/IP 原理、实现方式与优缺点
  • 利率债与信用债的区别及其与债券型基金的关系
  • linux下解压命令
  • Vulnhub靶场DC-3-2练习
  • Swift入门笔记
  • 【提交ACM出版 | EIScopus检索稳定 | 高录用】第五届大数据与社会科学国际学术会议(ICBDSS 2024,8月16-18)
  • Postman与世界相连:集成第三方服务的全面指南
  • Perl 语言开发(十四):数据库操作
  • Qt+ESP32+SQLite 智能大棚
  • Android Viewpager2 remove fragmen不生效解决方案
  • 桃园南路上的红绿灯c++
  • 有关去中心化算路大模型的一些误区:低带宽互连导致训练速度太慢;小容量设备无法生成基础规模的模型;去中心化总是会花费更多;虫群永远不够大
  • uni-app iOS上架相关App store App store connect 云打包有次数限制
  • python单测框架之pytest常见用法
  • [终端安全]-8 隐私保护和隐私计算技术
  • MySQL 日志深度解析:从查询执行到性能优化
  • sql server 练习题5
  • ai伪原创生成器app,一键伪原创文章效率高
  • 【ZhangQian AI模型部署】目标检测、SAM、3D目标检测、旋转目标检测、人脸检测、检测分割、关键点、分割、深度估计、车牌识别、车道线识别
  • DROO论文笔记
  • 修BUG:程序包javax.servlet.http不存在
  • python常用库
  • 【UE5.3】笔记11
  • 加密与安全 密钥体系的三个核心目标之完整性解决方案
  • FastAPI 学习之路(四十一)定制返回Response
  • C++ //练习 15.9 在什么情况下表达式的静态类型可能与动态类型不同?请给出三个静态类型与动态类型不同的例子。
  • 斐波那契查找算法