首页主机资讯Ubuntu Node.js项目如何持续集成

Ubuntu Node.js项目如何持续集成

时间2025-11-14 18:59:04发布访客分类主机资讯浏览1029
导读:Ubuntu Node.js 项目持续集成与部署实践 一 方案总览 在 Ubuntu 环境下,Node.js 项目常用 CI/CD 方案有两类: 托管在 GitHub 的项目使用 GitHub Actions; 自建 Jenkins 流...

Ubuntu Node.js 项目持续集成与部署实践

一 方案总览

  • Ubuntu 环境下,Node.js 项目常用 CI/CD 方案有两类:
    1. 托管在 GitHub 的项目使用 GitHub Actions
    2. 自建 Jenkins 流水线。
  • 典型流程包含:代码检出 → 安装 Node.js → 安装依赖 → 运行测试 → 构建产物 → 质量门禁(如 ESLintLighthouse CI)→ 部署(SSH + PM2Nginx)。
  • 建议将部署与构建分离,并通过 Secrets 管理敏感信息,确保安全性与可维护性。

二 GitHub Actions 快速落地

  • 触发与矩阵
    • push / pull_requestmain 分支时触发;使用 matrix 并行测试多个 Node.js 版本(如 16.x / 18.x),提升兼容性验证效率。
  • 核心步骤
    • 使用 actions/checkout@v4 拉取代码;actions/setup-node@v3 指定 Node 版本;优先使用 npm ci 安装依赖;执行 npm testnpm run build --if-present;通过 actions/upload-artifact@v3 上传构建产物(如 dist/)。
  • 质量门禁与通知
    • 集成 ESLint/Prettier 做代码规范检查;接入 Lighthouse CI 做性能与可访问性门禁;使用 8398a7/action-slack@v3 在成功或失败时发送 Slack 通知。
  • 部署到 Ubuntu 服务器
    • 在仓库 Settings → Secrets and variables → Actions 配置:SSH_HOST / SSH_USER / SSH_KEY / DEPLOY_PATH;服务器安装 PM2 并准备 ecosystem.config.js;使用 appleboy/ssh-action@v0.1.10 通过 SSH 拉取最新代码、安装依赖、执行 pm2 reload ecosystem.config.js --env production 完成零停机发布。
  • 参考最小工作流
    • 示例要点:触发分支为 main;矩阵测试 16.x / 18.x;构建后上传 dist/;部署阶段依赖 needs: build 串行执行;SSH 使用 Secrets 注入。

三 Jenkins 自建流水线

  • 环境准备
    • Ubuntu 安装 Java JDK 11+Jenkins LTS;启动服务并访问 http://:8080,完成初始化(获取初始密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword)。
  • 插件与全局配置
    • 安装插件:NodeJSGitPipelinePublish Over SSH;在 “全局工具配置” 添加 Node.js 版本(如 16.x / 18.x);在 “系统设置 → Publish over SSH” 配置目标服务器的 IP / 端口 / 凭证
  • 任务配置
    • 新建 FreestylePipeline 任务;源码管理选择 Git 并配置凭证与分支;构建环境勾选 “提供 Node & npm bin/folder 到 PATH”;构建步骤执行:npm installnpm run build;构建后操作使用 Publish Over SSHdist/ 发布到目标目录,并可执行远程命令(如 tar 解压、systemctl reload nginxpm2 restart)。
  • 触发与权限
    • 在仓库设置 Webhook 指向 http://< Jenkins服务器IP> :8080/github-webhook/;任务勾选 “GitHub hook trigger for GITScm polling”;注意 Jenkins 运行用户对部署目录与日志目录的权限(必要时调整 /var/lib/jenkins、部署目录的所有者与权限)。

四 质量与性能门禁

  • 代码质量
    • 在 CI 中加入 ESLint/Prettier 检查,保证统一风格与潜在问题提前暴露;必要时设置失败阈值,阻断合并。
  • 性能与体验
    • 使用 Lighthouse CILCP / FCP / TTI 等关键指标门禁,示例阈值:性能得分 ≥ 90首屏加载 < 2s资源体积 < 3MB;在 GitHub Actions 中通过 LHCI_GITHUB_TOKEN 发布报告到 PR 评论,便于评审决策。
  • 测试与多版本兼容
    • 使用 Jest/Mocha/Cypress 编写单元/端到端测试,并在 matrix 中覆盖多个 Node.js 版本,确保跨版本稳定性。

五 安全与优化要点

  • 密钥与权限
    • 严禁明文存放密钥;SSH 使用 SSH_KEY(私钥)注入;服务器 authorized_keys 权限建议 600.ssh 目录 700;为 Jenkins 分配最小必要权限,谨慎使用 root
  • 缓存与触发优化
    • 使用 actions/cache@v3 缓存 ~/.npmnode_modules,以 package-lock.json 哈希为 key,显著加速安装;通过 on.paths 仅对关键目录变更触发 CI,减少无效运行。
  • 部署策略
    • 建议采用 蓝绿/金丝雀滚动 发布;使用 PM2cluster 模式与 reload 实现零停机;对外服务端口(如 3000)与 22 放行防火墙规则,确保可达。
  • 可观测性
    • 在 CI 中上传 构建产物 便于回滚;在服务器侧使用 pm2 monit / logs / list 监控进程与日志,配合告警策略提升稳定性。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Node.js项目如何持续集成
本文地址: https://pptw.com/jishu/748300.html
如何在Ubuntu上部署Node.js API Ubuntu Node.js应用如何进行性能调优

游客 回复需填写必要信息