惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
SecWiki News
SecWiki News
WordPress大学
WordPress大学
小众软件
小众软件
博客园 - 司徒正美
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Visual Studio Blog
Y
Y Combinator Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
云风的 BLOG
云风的 BLOG
MyScale Blog
MyScale Blog
K
Kaspersky official blog
T
The Exploit Database - CXSecurity.com
腾讯CDC
Scott Helme
Scott Helme
I
InfoQ
Cyberwarzone
Cyberwarzone
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Security Latest
Security Latest
The Register - Security
The Register - Security
Project Zero
Project Zero
F
Fortinet All Blogs
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
C
Cisco Blogs
L
LINUX DO - 热门话题
P
Privacy International News Feed
IT之家
IT之家
U
Unit 42
P
Privacy & Cybersecurity Law Blog
H
Help Net Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Palo Alto Networks Blog
F
Full Disclosure
宝玉的分享
宝玉的分享
Simon Willison's Weblog
Simon Willison's Weblog
L
Lohrmann on Cybersecurity
Google DeepMind News
Google DeepMind News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
H
Hacker News: Front Page
Know Your Adversary
Know Your Adversary
PCI Perspectives
PCI Perspectives
Hugging Face - Blog
Hugging Face - Blog
AWS News Blog
AWS News Blog
MongoDB | Blog
MongoDB | Blog
S
Schneier on Security
Recent Announcements
Recent Announcements
Forbes - Security
Forbes - Security
Cisco Talos Blog
Cisco Talos Blog

掘墓人的小铲子

新玩意:一加 15 | 掘墓人的小铲子 AI 编程初体验:Trae 帮我写代码 | 掘墓人的小铲子 微信内访问网站提示“非微信官方网页,请确认是否继续访问” | 掘墓人的小铲子 薅羊毛网站 | 掘墓人的小铲子 微信红包封面 | 掘墓人的小铲子 日本东京见闻 | 掘墓人的小铲子 新玩意:奥海 140W 氮化镓青春版充电器 | 掘墓人的小铲子 新玩意:云鲸智能洗地机 F1 冠军版 | 掘墓人的小铲子 新玩意:Windows Hello 指纹识别器 | 掘墓人的小铲子 电脑死机问题排查 | 掘墓人的小铲子 新玩意:WESCOM 31.5 英寸 4K 显示器 文章被“抄袭”了 | 掘墓人的小铲子 新玩意:乐歌 E2 升降桌 | 掘墓人的小铲子 香港一日游 | 掘墓人的小铲子 跨平台开发之 Quasar | 掘墓人的小铲子 跨平台开发之 Tauri | 掘墓人的小铲子 三星 Note4 超级省电模式之 Kindle 看书 博客升级 | 掘墓人的小铲子 新冠肺炎症状记录 | 掘墓人的小铲子 开源数据备份工具 Duplicati | 掘墓人的小铲子 使用 NotionNext+Notion+Vercel 部署我的木刻网站 | 掘墓人的小铲子 使用 Vercel 快速部署前端项目 | 掘墓人的小铲子 企业共享办公好助手:可道云 kodbox | 掘墓人的小铲子 新玩意|一加 Ace Pro | 掘墓人的小铲子 使用 Photo Stream 部署相册 | 掘墓人的小铲子 新玩意|罗技 MX Master 3 鼠标 2021 年终总结 | 掘墓人的小铲子 新玩意|Bcase 数据线磁吸收纳器 | 掘墓人的小铲子 我的习惯养成计划:五分钟规则+打卡 | 掘墓人的小铲子 我用66张照片记录过去一年做过的饭菜 | 掘墓人的小铲子 送你一个虎年红包封面:虎虎生威 | 掘墓人的小铲子 新玩意|海氏K3空气炸锅烤箱 | 掘墓人的小铲子 新玩意|Yeelight易来 智能人体感应灯小夜灯 | 掘墓人的小铲子 超稳的高颜值支架:海备思铝合金手机支架 | 掘墓人的小铲子 没有了无限免费存储空间,谷歌相册还能继续用吗? | 掘墓人的小铲子 置物架改造 | 掘墓人的小铲子 信用卡还款宽限期 | 掘墓人的小铲子 Nginx 开启 gzip 压缩 | 掘墓人的小铲子 记一次意外割手 | 掘墓人的小铲子 Kindle 售后换新记 | 掘墓人的小铲子 记一次麻烦的银行办卡经历 | 掘墓人的小铲子 记一次差点被集中隔离的回家之旅 | 掘墓人的小铲子 自己动手做置物架 | 掘墓人的小铲子 2020 年终总结 | 掘墓人的小铲子 自己动手部署内网穿透:frp | 掘墓人的小铲子 免费内网穿透服务推荐 | 掘墓人的小铲子 怎么提醒女朋友给手机充电? | 掘墓人的小铲子 阿里云盘和 Teambition 网盘 | 掘墓人的小铲子 记一次成功的网购维权:我在 12315 投诉天猫超市 | 掘墓人的小铲子
使用 Jpom 自动构建和部署项目 | 掘墓人的小铲子
2023-03-02 · via 掘墓人的小铲子

自动化 Vercel 开源 Jpom Jenkins

比 Jenkins 简单的项目构建和部署工具。

前端项目自动构建部署

我有几个自用的前端项目,每次修改代码后都需要本地打包再上传到服务器进行部署,感觉有点麻烦,不够自动化,所以一直想找个能够实现自动构建和部署的工具。

这时候可能会有人说用 Jenkins,其实我有体验过,但没能用起来,一方面是 Jenkins 对服务器配置要求高,另一方面是配置过于复杂。另外也使用过一段时间的 Vercel,虽然可以很方便的实现自动化部署,但是项目访问速度不理想,而且必须使用 GitHub,也弃用了。

最近发现了一个新的工具「Jpom」,不仅能在线构建、自动部署项目,还支持日常运维和项目监控等功能,并且配置相对简单,使用上也足够本地化,完全能满足了我的需求。

这里我就以前端 Vue 项目构建部署为例,说一下 Jpom 的安装和使用。

安装

安装分为三部分:

  • node 环境安装
  • Jpom 服务端安装
  • Jpom 插件安装

node 环境安装

  • 下载安装
wget -O node-v16.13.1-linux-x64.tar.gz https://oss.npmmirror.com/dist/node/v16.13.1/node-v16.13.1-linux-x64.tar.gz
mkdir -p /usr/node/ && tar -zxf node-v16.13.1-linux-x64.tar.gz  -C /usr/node/
  • 配置环境变量
echo '# node '>>/etc/profile
echo 'export NODE_HOME=/usr/node/node-v16.13.1-linux-x64'>>/etc/profile
echo 'export PATH=$NODE_HOME/bin:$PATH'>>/etc/profile
source /etc/profile

如构建遇到错误提示 /bin/bash: npm: command not found,可以执行如下命令建立软连接 ln -s /usr/node/node-v16.13.1-linux-x64/bin/node /usr/local/bin/node ln -s /usr/node/node-v16.13.1-linux-x64/bin/npm /usr/local/bin/npm

Jpom 服务端安装

官方提供了多种安装方式,推荐使用「一键安装」,默认会安装到 /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

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

Jpom 插件安装

插件安装也同样推荐使用「一键安装」,默认会安装到 /usr/local/jpom-agent 目录。

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

可以通过以下命令管理 Jpom 插件:

  • 启动:systemctl start jpom-agent
  • 停止:systemctl stop jpom-agent
  • 重启:systemctl restart jpom-agent

使用

初始化

浏览器访问 IP:2122(或自行绑定域名)进入管理页面,如下图所示:

初始化

设置初始化系统账户,根据需要开启两步验证:

两步验证

逻辑节点

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

逻辑节点

由于上面已经安装了 Jpom 插件,所以这里我们直接进行快速绑定,展开快速绑定并复制命令,如下图所示:

快速绑定

进入到 Jpom 插件安装的目录,如果是默认安装那么目录为 /usr/local/jpom-agent,执行复制好的快速绑定命令。

等待页面的执行结果显示绑定成功即完成绑定,如果有多个 IP 可能需要手动选择要绑定的 IP。

绑定成功

点击节点的管理按钮,进入到管理页面,如下图所示:

管理节点

点击插件端配置 > 白名单配置,项目路径填写 /usr/local/web(自定义前端项目的部署目录,此处仅用于举例),点击提交。

白名单配置

点击项目管理 > 项目列表 > 新增,如下图所示:

新增项目

填写各项信息,其中运行方式要选择 File,填写后点击确定,如下图所示:

编辑项目

在线构建

点击在线构建 > 仓库信息 > 新增,如下图所示:

新增仓库信息

填入各项信息,点击确定。

编辑仓库

构建列表

点击在线构建 > 仓库信息 > 构建列表 > 新增,如下图所示:

新增构建

按提示填写各项信息,点击确定即可,可以参考下图:

编辑构建

说明:

  • 构建方式:选择本地构建
  • 构建命令:可以参考提示或按照项目实际的命令填写
  • 产物目录:按照本地构建后的目录填写,一般都是 dist
  • 发布操作:选择项目
  • 清空发布:选择是

点击构建 > 直接构建,开始构建和部署项目。

直接构建

等待日志显示构建结束,即可通过 IP 或域名(自行配置 Nginx)访问项目。

构建日志

自动部署

上面实现了项目的构建和部署,但是并没有实现自动化,那要怎么才能实现自动化呢?下面以 Gitee 为例,实现自动化构建和部署,即代码提交后自动触发构建部署。

在构建列表点击更多 > 触发器,如下图所示:

触发器

复制触发器地址,如下图所示:

触发器地址

访问 Gitee 的项目,依次点击管理 > WebHooks > 添加webHook,如下图所示:

添加 webHook

将复制的触发器地址粘贴到 URL 输入框,并点击添加按钮,如下图所示:

填写 URL

这样,以后每次提交代码之后,就会自动触发项目的构建和部署。

详细文档可查看「Gitee 提交代码后自动执行构建」。

实践案例

上面介绍的就是 Jpom 官方文档里提到的「本地构建 + 项目发布 node 项目」。

除此之外,官方还提供了其他实践案例的参考,例如 Java、Python 等项目实践案例,可访问「实践案例目录」进行查看。

总结

Jpom 满足了我自动化构建和部署前端项目的需求,作为个人或者企业测试环境的自动化工具还是很不错的。

Jpom 更多功能

除了项目的构建和部署,Jpom 还支持 SSH 终端、在线脚本、docker 管理、项目监控等功能,可以访问 https://jpom.top 进行探索。

注意事项

在体验 Jpom 的过程中,发现一些使用问题,记录下来供参考:

  • Jpom 服务端和插件不能安装到同一目录,如果使用官方一键安装可自动避免。
  • 官方一键安装脚本安装 JDK 较慢,可自行安装配置 JDK 环境。
  • 如果使用 docker 方式部署 Jpom,在构建项目时无法使用本地构建,推荐使用官方一键安装,可避免此问题。
  • SSH 使用报错,解决办法可参考「web socket 错误,请检查是否开启 ws 代理」。
  • Jpom 可能会占用过大的内存,可通过修改 /usr/local/jpom-server/bin/Server.sh/usr/local/jpom-agent/bin/Agent.shXmsXmx 大小。
  • 无需编译的前端项目构建命令,例如我有一个 docsify 项目,直接编写 markdown,那么构建命令可以参考 mkdir dist && cp * dist

本文由 掘墓人 创作,采用 CC BY-NC-ND 4.0 DEED ,转载或翻译请注明出处。
最后编辑时间为: 2023年03月2日

欢迎关注我的公众号,及时获取最新文章推送。