返回

一步步构建你的 Node.js 项目的 Github Actions CICD 流水线!

前端

构建 Node.js 项目的 CI/CD 流水线是提高代码质量与开发效率的重要步骤。利用 GitHub Actions,可以轻松地为任意 Node.js 项目设置一套完整的持续集成(Continuous Integration, CI)和持续交付(Continuous Delivery, CD)流程。

定义术语

  • CI:指每次提交代码时自动运行测试,确保新代码不会破坏现有功能。
  • CD:基于 CI 的结果,在通过测试后自动化部署到生产环境或预发环境。

创建 GitHub Actions 流水线

要开始,需在项目根目录下创建 .github/workflows/ 文件夹,并在此文件夹内添加一个 YAML 格式的流水线配置文件。命名此文件为 ci-cd.yml 以表明其作用。

配置基础步骤

首先定义触发器、环境和任务:

name: Node.js CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [14.x, 16.x]

    steps:

这里定义了当 main 分支发生变动时触发流水线。在 build 任务中,使用了 Ubuntu 最新版本作为执行环境,并且允许测试多个 Node.js 版本。

安装依赖与运行脚本

接下来安装项目所需的所有依赖并进行构建:

    steps:
      - uses: actions/checkout@v3

      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}

      - run: npm ci
      - run: npm run build

这些步骤首先通过 actions/checkout 动作克隆代码仓库,然后使用特定的 Node.js 版本来安装依赖并构建项目。这里的 npm ci 是更稳定、快速的替代方案,相较于普通 npm install

自动化测试执行

为了确保代码质量,需运行单元测试和其他测试任务:

      - run: npm test

通过此步骤,可以自动检查新提交是否破坏了现有功能。

持续交付

若项目准备自动化部署至生产环境或预发环境,则可扩展 GitHub Actions 流水线以包含部署阶段。这需要配置环境变量和部署脚本:

      - name: Deploy to Production
        if: github.ref == 'refs/heads/main'
        run: npm run deploy

确保此步骤只在 main 分支被合并时触发,以减少误操作。

安全建议

  • 环境变量保护:使用 GitHub Secrets 存储敏感信息如 API 密钥和部署密码。
  • 最小权限原则:限制 GitHub Actions 的执行权限,仅赋予其完成任务所需的最低权限。
  • 定期审查流水线配置文件:确保所有步骤都是必要的,并且没有潜在的安全漏洞。

结语

通过本文介绍的方法,可以为任意 Node.js 项目设置完整的 CI/CD 流水线。利用 GitHub Actions 提供的强大自动化功能,不仅能提升开发效率,还能增强代码质量与安全性。

GitHub Actions 官方文档
NPM 安装选项参考

以上内容帮助开发者构建健壮的 CI/CD 流水线,确保项目顺利地从代码编写过渡到部署上线。