Ubuntu环境下Node.js持续集成(CI)实现指南
持续集成(CI)是Node.js项目开发中的关键环节,通过自动化代码集成、构建、测试流程,可快速发现代码缺陷、保证代码质量。Ubuntu作为Linux发行版的代表,其环境配置灵活,适合搭配各类CI工具(如GitHub Actions、Jenkins)实现高效的CI流程。以下是具体实现步骤:
在开始配置前,需完成以下基础准备工作:
Ubuntu系统环境配置:
确保Ubuntu系统已安装Node.js、npm及常用工具(如Git)。可通过以下命令快速安装:
# 安装Node.js(以16.x版本为例)
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
# 验证安装
node -v  # 输出版本号(如v16.20.2)
npm -v   # 输出版本号(如9.6.7)
# 安装Git(用于代码托管库交互)
sudo apt install -y git
代码托管库准备:
将Node.js项目推送到GitHub、Gitee等代码托管平台,确保项目包含package.json文件(定义项目依赖、脚本等)。
服务器环境准备(若需部署到远程服务器):
若需将构建产物部署到Ubuntu服务器,需提前配置服务器SSH访问权限(生成SSH密钥对并将公钥添加至服务器~/.ssh/authorized_keys文件)。
GitHub Actions是GitHub提供的原生CI/CD工具,无需额外搭建服务器,适合中小型项目。以下是配置流程:
.github/workflows文件夹,添加ci.yml(或deploy.yml)文件,定义CI流程。push或pull request触发时,自动检出代码、设置Node.js环境、安装依赖、运行测试:name: Node.js CI Pipeline
on:
  push:
    branches: ["main", "dev"]  # 触发分支
  pull_request:
    branches: ["main", "dev"]  # PR触发分支
jobs:
  build-and-test:
    runs-on: ubuntu-latest  # 运行环境(Ubuntu最新版)
    strategy:
      matrix:
        node-version: ["16.x", "18.x"]  # 多版本Node.js兼容测试
    steps:
      # 1. 检出代码
      - name: Checkout code
        uses: actions/checkout@v3
      # 2. 设置Node.js版本
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
      # 3. 安装依赖(使用npm ci确保依赖一致性)
      - name: Install dependencies
        run: npm ci
      # 4. 运行测试(需项目包含测试脚本)
      - name: Run tests
        run: npm test
dist目录)部署到Ubuntu服务器,可扩展工作流,添加SSH部署步骤(需在GitHub Secrets中配置服务器SSH私钥、IP地址等信息):jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      # 前置步骤(与build-and-test一致,略)
      # ...
      # 5. SSH部署到服务器
      - name: SSH Deploy
        uses: appleboy/ssh-action@v0.1.10  # 第三方SSH Action
        with:
          host: ${{ secrets.SERVER_IP }}  # GitHub Secrets中的服务器IP
          username: root  # 服务器用户名
          key: ${{ secrets.SSH_PRIVATE_KEY }}  # GitHub Secrets中的SSH私钥
          script: |
            cd ${{ secrets.DEPLOY_PATH }}  # 服务器部署路径(如/var/www/express-app)
            git pull origin main  # 拉取最新代码
            npm install --production  # 安装生产依赖
            pm2 reload ecosystem.config.js --env production  # 重启PM2进程
            pm2 save  # 保存进程列表
配置完成后,每次推送代码到指定分支,GitHub Actions会自动执行CI流程。Jenkins是开源CI/CD工具,支持复杂流水线配置,适合大型项目或团队协作。以下是配置流程:
# 安装JDK(Jenkins依赖Java)
sudo apt install -y openjdk-11-jdk
# 添加Jenkins仓库并安装
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt update
sudo apt install -y jenkins
# 启动Jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins
# 访问Jenkins管理界面(http://服务器IP:8080),完成初始化设置
Git(代码托管库交互)、NodeJS(Node.js环境管理)、Pipeline(流水线配置)等插件。cd /var/lib/jenkins/workspace/[任务名称]/项目目录
npm install
npm test
npm run build
npm ci代替npm install,确保依赖版本与package-lock.json一致,避免因依赖版本差异导致的构建问题。matrix策略、Jenkins的Node.js插件)配置多版本Node.js环境,确保项目在不同版本下均能正常运行。secrets功能用于存储敏感信息(如SSH私钥、服务器IP),避免硬编码在配置文件中。通过以上步骤,可在Ubuntu环境下为Node.js项目搭建高效的持续集成流程,提升开发效率与代码质量。