CI/CD(Continuous Integration/Continuous Delivery or Deployment)是现代软件开发中常见的自动化实践。通过 CI/CD 管道,开发团队可以持续集成(CI)代码到共享代码库,并在每次代码提交时自动进行测试、打包和部署到生产环境或其他环境中。常用的 CI/CD 工具包括 GitHub Actions、GitLab CI、Jenkins、CircleCI 等。
以下我们将详细讲述如何使用 GitHub Actions 和 GitLab CI 实现 Vue 项目的自动化构建、测试和部署,并通过一个项目实战展示完整的使用流程。
GitHub Actions 是 GitHub 自家的 CI/CD 服务,提供自动化构建、测试和部署等功能。你可以通过编写 YAML 文件来定义工作流,并在触发条件(如推送代码、合并 Pull Request)时自动执行任务。
.github/workflows/
目录下。我们将通过 GitHub Actions 实现以下自动化流程:
在 Vue 项目根目录下创建 .github/workflows/ci.yml
文件:
name: CI/CD for Vue Project
# 定义何时触发工作流
on:
push:
branches:
- main # 在推送到 main 分支时触发
pull_request:
branches:
- main # 在向 main 分支发起 Pull Request 时触发
# 定义工作流中的 Jobs
jobs:
build:
runs-on: ubuntu-latest # 在 Ubuntu 虚拟机上运行
steps:
- name: Checkout repository
uses: actions/checkout@v3 # 检出仓库代码
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18 # 使用 Node.js 18
- name: Install dependencies
run: npm install # 安装项目依赖
- name: Run tests
run: npm run test # 运行测试
- name: Build project
run: npm run build # 运行构建任务
deploy:
needs: build # 依赖于 build 任务完成后再执行
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm install
- name: Build project
run: npm run build
- name: Deploy to Netlify
run: npm run deploy # 假设在 package.json 中已定义了 Netlify 部署命令
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} # 使用 GitHub Secrets 存储的 Netlify API token
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} # 存储 Netlify 站点 ID
main
分支的推送和 PR 合并时触发。build
和 deploy
。build
任务先于 deploy
执行,确保构建成功后再进行部署。在 GitHub 仓库中,点击 Settings -> Secrets -> Actions,然后添加两个 Secrets:
每次推送到 main
分支或发起 Pull Request 后,GitHub Actions 将自动执行工作流。你可以通过 Actions 标签页查看工作流的执行状态和日志。
GitLab CI 是 GitLab 提供的集成持续集成和持续交付的工具。GitLab CI/CD 通过 .gitlab-ci.yml
文件定义自动化管道,在代码库的每次提交时自动执行测试、构建和部署操作。
build
、test
和 deploy
。我们将通过 GitLab CI 实现一个类似于 GitHub Actions 的工作流,完成 Vue 项目的自动化构建和部署。
在 Vue 项目的根目录下创建 .gitlab-ci.yml
文件:
stages:
- build
- deploy
# 定义构建任务
build_job:
stage: build
image: node:18 # 使用 Node.js 18 环境
script:
- npm install # 安装依赖
- npm run build # 构建项目
artifacts:
paths:
- dist/ # 将 dist 文件夹作为构建产物
# 定义部署任务
deploy_job:
stage: deploy
image: node:18
script:
- npm install -g netlify-cli # 安装 Netlify CLI
- netlify deploy --prod --dir=dist # 部署到 Netlify
only:
- main # 仅在推送到 main 分支时触发
environment:
name: production
variables:
NETLIFY_AUTH_TOKEN: $NETLIFY_AUTH_TOKEN # 从 GitLab CI/CD 配置的变量中读取
NETLIFY_SITE_ID: $NETLIFY_SITE_ID
每次提交代码或合并到 main
分支时,GitLab CI 会自动触发。你可以通过 CI/CD -> Pipelines 标签页查看执行状态和日志。
通过 Vue CLI 创建项目并初始化 Git 仓库:
vue create vue-ci-cd-example
cd vue-ci-cd-example
git init
根据项目实际需求,编写 .github/workflows/ci.yml
或 .gitlab-ci.yml
文件,确保在每次代码推送时触发构建和部署任务。
在 GitHub 或 GitLab 中配置 Netlify 的 API Token
和 Site ID
,以保证部署权限。
将项目推送到 GitHub 或 GitLab:
git add .
git commit -m "Initial commit with CI/CD setup"
git remote add origin <your-repository-url>
git push -u origin main
每次推送到 main
分支时,GitHub Actions 或 GitLab CI 将自动执行:
成功部署后,Netlify 将生成一个可访问的 URL,应用将被自动更新。
通过 GitHub Actions 或 GitLab CI 实现 Vue 项目的 CI/CD,可以大大提高开发效率和代码质量。自动化管道能够确保每次代码提交都经过测试和验证,最终自动部署到生产环境。这不仅减少了手动操作的风险,还能加快发布流程,实现持续交付。