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 功能,把敏感信息存在仓库设置里,工作流运行时自动注入。
操作步骤:
- 进入你的 GitHub 仓库,点 Settings 标签
- 左侧菜单找到 Secrets and variables -> Actions
- 点 New repository secret
- Name 填
EDGEONE_API_TOKEN,Value 填刚才复制的 Token - 点 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 命令,只是配置文件语法不同 |