2020-11-10 16:31:09
定义CI/CD配置文件在项目根目录创建.gitlab-ci.yml(GitLab CI)或.github/workflows/main.yml(GitHub Actions),配置三个核心阶段:
构建阶段:安装依赖并生成静态资源
测试让姿阶段:执行单元测试和集成测试
部署阶段:将构建产物部署到目标环境
构建流程实现使用npm install安装依赖后,通过npm run build命令生成dist文件夹。典型配置示例:
build: stage: build script: - npm ci # 使用ci命令确保依赖一致性 - npm run build artifacts: paths: - dist/ # 保留构建产物供后续阶段使用多环境部署策略通过环境变量区分部署目标,例如:
deploy_staging: stage: deploy script: - echo "Deploying to staging" - ./deploy.sh --env staging environment: name: staging only: - develop # 仅对develop分支触发依赖缓存机制在GitLab CI中配置缓存可减少重复安装时间:
cache: key: ${CI_COMMIT_REF_SLUG} # 按分支缓存 paths: - node_modules/ - ~/.cache # 存储全局缓存并行构建加速对大型项目启用并行构建(GitLab CI示例):
build: parallel: 4 # 同时启橡散动4个构建任务 script: - npm install - npm run build -- --parallel 4 # Vue CLI支持并行构建代码质量门禁集成ESLint和单元测试梁滑氏:
lint: stage: test script: - npm run linttest: stage: test script: - npm run test:unit -- --coverage完整.gitlab-ci.yml示例:
image: node:18-alpine # 使用轻量级Node镜像stages: - install - build - test - deploycache: paths: - node_modules/ - ~/.npminstall_deps: stage: install script: - npm ci --production=false # 安装所有依赖(含devDependencies)build_app: stage: build script: - npm run build artifacts: paths: - dist/ expire_in: 1 weekrun_tests: stage: test script: - npm run test:unit - npm run test:e2edeploy_production: stage: deploy script: - echo "Deploying to production server" - rsync -avz dist/ user@server:/var/www/html environment: name: production url:依赖安装失败
确保使用npm ci而非npm install保证版本一致性
在缓存配置中包含package-lock.json
构建产物不一致
清除缓存后重新构建:git clean -fdx && npm ci
检查.env文件是否被正确注入
测试环境差异
使用Docker镜像统一测试环境
在CI配置中显式设置NODE_ENV:variables: NODE_ENV: test
构建优化在vue.config.js中启用生产模式优化:
module.exports = { productionSourceMap: false, // 禁用source map减少体积 configureWebpack: { optimization: { splitChunks: { chunks: 'all' // 代码分割优化 } } }}部署优化使用增量部署策略,仅上传变更文件:
# 示例部署脚本片段DIFF_FILES=$(git diff --name-only HEAD^ HEAD | grep '^dist/')if [ -n "$DIFF_FILES" ]; then rsync -avz --files-from=<(echo "$DIFF_FILES") dist/ user@server:/var/www/htmlfi通过系统实施上述方案,Vue.js项目的CI/CD流程可实现以下提升:
建议每季度审查CI/CD配置,根据项目规模调整并行度和缓存策略,保持流程的高效性。