引言:为什么 JavaScript 项目需要 CI/CD?
\n\n现代基于 Node.js 的 JavaScript 应用程序开发不仅需要编写高质量的代码,还需要将其可靠地交付给最终用户。手动测试、构建和部署不仅速度慢,而且容易出现人为错误。这时,CI/CD(持续集成/持续部署)——一种自动化软件生命周期所有阶段的方法论——就派上了用场。
\n\nJavaScript 项目的 CI/CD 允许在每次推送到仓库时自动运行测试、构建应用程序并将其部署到服务器或云端。实现这一方法论最流行的工具之一是 GitHub Actions——GitHub 平台上内置的工作流程自动化系统。
\n\n在本文中,我们将探讨如何使用 GitHub Actions 为 JavaScript (Node.js) 项目设置一个完整的 CI/CD 管道:从编写配置到部署。您将了解如何加速开发、提高代码质量并摆脱繁琐的日常操作。
\n\n主体部分:使用 GitHub Actions 创建 CI/CD 管道
\n\n1. 什么是 GitHub Actions 以及它如何工作?
\n\nGitHub Actions 是一个用于自动化工作流程的平台,它会响应仓库中的事件(如 push、pull request、创建 issue 等)而触发。工作流程由一组在虚拟机(runner)上执行的步骤组成。每个步骤可以运行脚本、安装依赖项或调用外部服务。
\n\n核心概念:
\n- \n
- Workflow — 存储在
.github/workflows/文件夹中的 YAML 配置文件。 \n - Event — 触发工作流程的事件(例如
push或pull_request)。 \n - Job — 在同一 runner 上执行的一组步骤(依赖项、测试、构建)。 \n
- Step — 单个命令或操作(action)。 \n
对于 JavaScript 项目,我们将使用标准的 Ubuntu runner,因为它开箱即用地支持 Node.js。
\n\n2. 基本配置:测试和代码检查
\n\n首先,我们创建一个用于测试和代码检查的简单工作流程。在仓库根目录下创建文件 .github/workflows/ci.yml。
Node.js 项目的配置示例:
\n\nname: CI for Node.js\n\non:\n push:\n branches: [ main, develop ]\n pull_request:\n branches: [ main ]\n\njobs:\n test:\n runs-on: ubuntu-latest\n\n strategy:\n matrix:\n node-version: [18.x, 20.x]\n\n steps:\n - name: Checkout repository\n uses: actions/checkout@v4\n\n - name: Setup Node.js ${{ matrix.node-version }}\n uses: actions/setup-node@v4\n with:\n node-version: ${{ matrix.node-version }}\n cache: 'npm'\n\n - name: Install dependencies\n run: npm ci\n\n - name: Run linter\n run: npm run lint\n\n - name: Run tests\n run: npm test\n\n让我们分析一下关键点:
\n- \n
- Matrix strategy — 允许在多个 Node.js 版本(18.x 和 20.x)上并行运行测试。 \n
- actions/checkout — 用于克隆仓库的标准操作。 \n
- actions/setup-node — 安装所需的 Node.js 版本并启用
node_modules缓存以加快速度。 \n - npm ci — 从
package-lock.json进行干净的依赖安装(比npm install更快、更可靠)。 \n
将此文件推送到仓库后,GitHub Actions 将自动运行测试。您可以在仓库的 "Actions" 部分查看结果。
\n\n3. 构建和发布 Docker 镜像
\n\n还