六维教程

EdgeOne Makers CI/CD 集成

代码写完只是第一步,怎么把代码快速、可靠地部署到线上,才是真正考验开发效率的地方。手动登录服务器、上传文件、执行构建,这种操作偶尔干一次还行,天天这么搞谁都受不了。CI/CD 就是来解决这个问题的,让代码从仓库到线上全自动完成,你只管 push 代码就行。

CI/CD 是什么

CI 是持续集成(Continuous Integration),CD 是持续交付/持续部署(Continuous Delivery / Continuous Deployment)。合在一起说的是一件事: 代码提交后,自动触发构建、测试、部署这一整套流程。

用大白话讲就是: 你把代码推到 Git 仓库,CI/CD 系统自动帮你把项目跑起来。中间不需要你手动干预,不会忘记步骤,不会因为手滑部署了错误版本。

对比维度 手动部署 CI/CD 自动部署
操作步骤 登录服务器、拉代码、构建、重启 推送代码即可
出错概率 高,步骤多容易遗漏 低,流程固定自动执行
部署频率 一天几次或几天一次 每次提交都能自动部署
回滚速度 手动操作慢 回退 Git 版本自动触发
团队协作 谁部署的不知道 每次部署有记录可查

EdgeOne Makers 的三种部署方式

EdgeOne Makers 提供了三种部署入口,适用场景不同。

部署方式 适合场景 自动化程度
控制台部署 创建项目时自动触发 全自动(Git 集成)
CLI 命令行部署 本地调试后手动推送 半自动
CI/CD 流水线 团队协作、正式环境 全自动

前两种在快速部署那篇已经讲过,这篇重点讲 CI/CD 流水线集成。

GitHub Actions 集成

GitHub Actions 是 GitHub 自带的自动化工作流工具,仓库里放一个 YAML 配置文件就能用,不用额外注册第三方服务。

第一步: 获取 API Token

CI/CD 流水线没有浏览器弹窗让你登录,所以需要用 API Token 做身份认证。

去 EdgeOne Makers 控制台,找到设置页面的 API Token 区域,点创建新 Token,生成后复制保存好。这个 Token 相当于你的账号密码,不能泄露。

第二步: 在 GitHub 仓库配置 Secrets

Token 不能硬编码在配置文件里,否则推到公开仓库就泄露了。GitHub 提供了 Secrets 功能,把敏感信息存在仓库设置里,工作流运行时自动注入。

操作步骤:

  1. 进入你的 GitHub 仓库,点 Settings 标签
  2. 左侧菜单找到 Secrets and variables -> Actions
  3. 点 New repository secret
  4. Name 填 EDGEONE_API_TOKEN,Value 填刚才复制的 Token
  5. 点 Add secret 保存

第三步: 编写工作流配置文件

在项目根目录下创建 .github/workflows/deploy.yml 文件,内容如下:

# .github/workflows/deploy.yml
# 这个文件定义了 GitHub Actions 的自动化部署流程

name: Deploy to EdgeOne Makers

# 触发条件: 当 main 分支有代码推送时
on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      # 第一步: 拉取仓库代码
      - name: Checkout code
        uses: actions/checkout@v4

      # 第二步: 安装 Node.js 环境
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"

      # 第三步: 安装依赖并构建
      - name: Install and Build
        run: |
          npm install
          npm run build

      # 第四步: 安装 EdgeOne CLI
      - name: Install EdgeOne CLI
        run: npm install -g edgeone

      # 第五步: 部署到 Makers 平台
      - name: Deploy to EdgeOne Makers
        run: edgeone makers deploy -n my-project -t ${{ secrets.EDGEONE_API_TOKEN }}

这段配置做了五件事: 拉代码、装 Node、构建项目、装 CLI、部署上线。每次你往 main 分支推代码,GitHub 就自动跑这套流程。

第四步: 推代码触发部署

配置文件写好后,提交并推送到 GitHub:

git add .github/workflows/deploy.yml
git commit -m "添加自动部署工作流"
git push origin main

推送完成后,去仓库的 Actions 标签页,就能看到工作流正在运行。构建成功,代码就自动部署到 EdgeOne Makers 了。

多环境部署

实际项目中,你通常会有开发环境和生产环境。预览环境用来测试新功能,生产环境给真实用户访问。

# .github/workflows/deploy-multi.yml
# 多环境部署配置

name: Multi-Environment Deploy

on:
  push:
    branches:
      - main       # main 分支推送到生产环境
      - develop    # develop 分支推送到预览环境

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"

      - name: Install and Build
        run: |
          npm install
          npm run build

      - name: Install EdgeOne CLI
        run: npm install -g edgeone

      # 根据分支决定部署到哪个环境
      - name: Deploy to Production
        if: github.ref == 'refs/heads/main'
        run: edgeone makers deploy -n my-project -t ${{ secrets.EDGEONE_API_TOKEN }} -e production

      - name: Deploy to Preview
        if: github.ref == 'refs/heads/develop'
        run: edgeone makers deploy -n my-project -t ${{ secrets.EDGEONE_API_TOKEN }} -e preview

这样配置之后,推送到 main 分支的代码部署到生产环境,推送到 develop 分支的代码部署到预览环境,互不干扰。

部署前加测试

如果你的项目有自动化测试,可以在部署之前加一步测试,测试不通过就不部署。

# 在 build 和 deploy 之间插入测试步骤
      - name: Install and Build
        run: |
          npm install
          npm run build

      # 运行测试,测试失败则中断部署
      - name: Run Tests
        run: npm test

      - name: Install EdgeOne CLI
        run: npm install -g edgeone

      - name: Deploy to EdgeOne Makers
        run: edgeone makers deploy -n my-project -t ${{ secrets.EDGEONE_API_TOKEN }}

整个流程就变成了: 拉代码 -> 构建 -> 测试 -> 部署。测试不通过,部署步骤自动跳过,线上不会出现有问题的代码。

CLI 在 CI/CD 中的关键命令

EdgeOne CLI 的 deploy 命令专门支持非交互式的 CI/CD 场景,核心参数如下:

edgeone makers deploy [<directoryOrZip>] -n <projectName> -t <token> [-e <env>]
参数 说明 是否必填
directoryOrZip 要部署的文件夹或 ZIP 包路径 否,默认当前目录
-n, –name 项目名称,不存在会自动创建
-t, –token API Token,用于身份认证
-e, –env 目标环境,production 或 preview 否,默认 production

不指定文件夹时,CLI 会自动构建项目再部署。如果你提前手动构建好了,可以指定构建产物目录:

# 指定构建产物目录部署
edgeone makers deploy ./dist -n my-project -t ${{ secrets.EDGEONE_API_TOKEN }}

# 预览环境部署
edgeone makers deploy -n my-project -e preview -t ${{ secrets.EDGEONE_API_TOKEN }}

环境变量管理

CI/CD 流水线中经常需要用到环境变量,比如 API 地址、数据库连接串等。EdgeOne CLI 提供了环境变量管理命令,方便在本地和线上同步。

# 列出控制台配置的所有环境变量
edgeone makers env ls

# 拉取控制台环境变量到本地 .env 文件
edgeone makers env pull

# 拉取到指定文件
edgeone makers env pull -f .env.prod

# 新增或修改环境变量
edgeone makers env set API_URL https://api.example.com

# 删除环境变量
edgeone makers env rm API_URL

在 CI/CD 流水线中,你可以在构建之前先拉取环境变量:

- name: Pull environment variables
  run: edgeone makers env pull -f .env.production
  env:
    EDGEONE_API_TOKEN: ${{ secrets.EDGEONE_API_TOKEN }}

- name: Build with env
  run: npm run build

这样构建时就能读到最新的环境变量,不用在 GitHub Secrets 里重复配置。

完整工作流示例

把上面讲的整合起来,这是一个团队项目中比较完整的 CI/CD 配置:

# .github/workflows/full-pipeline.yml
# 完整的 CI/CD 工作流示例

name: Full Pipeline

on:
  push:
    branches:
      - main
      - develop

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        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  # ci 命令比 install 更严格,适合 CI 环境

      - name: Run lint
        run: npm run lint

      - name: Run tests
        run: npm test

      - name: Build project
        run: npm run build

      - name: Install EdgeOne CLI
        run: npm install -g edgeone

      # main 分支部署到生产环境
      - name: Deploy to Production
        if: github.ref == 'refs/heads/main'
        run: |
          edgeone makers deploy -n my-project \
            -t ${{ secrets.EDGEONE_API_TOKEN }} \
            -e production

      # develop 分支部署到预览环境
      - name: Deploy to Preview
        if: github.ref == 'refs/heads/develop'
        run: |
          edgeone makers deploy -n my-project \
            -t ${{ secrets.EDGEONE_API_TOKEN }} \
            -e preview

其他 CI/CD 平台

GitHub Actions 不是唯一选择,EdgeOne CLI 同样支持其他 CI/CD 平台,核心思路一样: 安装 CLI -> 用 deploy 命令部署。

CI/CD 平台 配置文件位置 Secrets 配置位置
GitHub Actions .github/workflows/ Repository Settings -> Secrets
GitLab CI .gitlab-ci.yml Settings -> CI/CD -> Variables
Jenkins Jenkinsfile Jenkins Credentials
腾讯云 CI .ci.yml 环境变量或密钥

以 GitLab CI 为例,配置文件写法:

# .gitlab-ci.yml
# GitLab CI 部署配置

stages:
  - build
  - deploy

build:
  stage: build
  image: node:20
  script:
    - npm ci
    - npm run build
  artifacts:
    paths:
      - dist/

deploy:
  stage: deploy
  image: node:20
  script:
    - npm install -g edgeone
    - edgeone makers deploy ./dist -n my-project -t $EDGEONE_API_TOKEN
  only:
    - main

原理完全一样,只是语法不同。核心就两步: 装 edgeone CLI,执行 deploy 命令带上 Token。

速查卡片

要点 说明
CI/CD 是什么 代码提交后自动触发构建、测试、部署
三种部署方式 控制台自动部署、CLI 手动部署、CI/CD 流水线部署
API Token 在控制台设置页面创建,用于 CI/CD 身份认证
Secrets 存储 Token 必须存在 CI 平台的 Secrets 里,不能写死在配置文件中
deploy 命令核心参数 -n 项目名、-t Token、-e 环境(production/preview)
环境变量同步 env pull 拉取到本地、env set 设置、env rm 删除
多环境策略 main 分支部署到 production,其他分支部署到 preview
其他 CI 平台 核心思路相同: 安装 CLI + deploy 命令,只是配置文件语法不同
上一篇
EdgeOne Makers RAG 与知识库
下一篇
EdgeOne Makers IDE 插件与 CodeBuddy