JavaScript 项目的 CI/CD:GitHub Actions 从入门到精通

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程
```html

引言:为什么 JavaScript 项目需要 CI/CD

现代 Web 开发离不开自动化。每天,JavaScript (Node.js) 开发者都会面临重复性任务:运行测试、用 linter 检查代码、构建和部署应用程序。手动执行这些操作不仅耗时,而且容易出错。这时 CI/CD (Continuous Integration / Continuous Deployment) 就派上了用场——这是一种能够自动化软件生命周期所有阶段的方法论。

GitHub Actions 是 GitHub 平台内置的自动化工具,非常适合配置 CI/CD 流水线。在本文中,我们将详细讲解如何从零开始为 JavaScript (Node.js) 项目配置完整的自动化流程:从运行测试到部署到服务器。您将学习如何创建工作流、编写配置文件以及避免常见错误。

GitHub Actions 基础:结构与组件

在编写代码之前,让我们先了解 GitHub Actions 的关键概念。整个流水线由 YAML 文件描述,这些文件存储在您仓库的 .github/workflows 目录中。

工作流 (Workflow) 的关键元素

  • Workflow — 是一个自动化的过程,由一个或多个 Job (任务) 组成。
  • Job — 是在同一个 Runner (虚拟机) 上执行的一组步骤 (Step)。
  • Step — 是一个单独的命令或操作 (Action)。
  • Event — 触发工作流的事件 (例如,push, pull request)。

对于 JavaScript 项目,标准的工作流如下所示:

name: CI/CD для Node.js

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

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    
    strategy:
      matrix:
        node-version: [18.x, 20.x]
    
    steps:
    - uses: actions/checkout@v4
    - name: Установка Node.js
      uses: actions/setup-node@v4
      with:
        node-version: ${{ matrix.node-version }}
    - name: Установка зависимостей
      run: npm ci
    - name: Линтинг
      run: npm run lint
    - name: Тесты
      run: npm test

请注意 strategy.matrix — 这允许同时在多个 Node.js 版本上测试代码,这对于库和包来说至关重要。

为 Node.js 项目逐步配置 CI/CD

让我们看一个为典型的 Express.js Web 应用程序配置流水线的完整示例。从基础文件 .github/workflows/node-ci.yml 开始。

步骤 1:基础代码检查

name: Node.js CI

on:
  push:
    branches: [ develop, main ]
  pull_request:
    branches: [ main ]

jobs:
  quality:
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v4
    
    - name: Setup Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '20'
        cache: 'npm'
    
    - name: Install dependencies
      run: npm ci
    
    - name: Lint code
      run: npm run lint
    
    - name: Run unit tests
      run: npm run test:unit
    
    - name: Build project
      run: npm run build

关键点:

  • cache: 'npm' — 缓存 node_modules,加速后续运行。
  • npm ci — 纯净安装依赖,比 npm install 更快更可靠。
  • 将测试分为 unit 和 integration (可选) 可以更快地获得反馈。

步骤 2:使用数据库进行集成测试

要使用真实数据库进行测试,请使用 GitHub Actions 的服务:

jobs:
  integration-tests:
    runs-on: ubuntu-latest
    
```                

博客

书籍推荐