Files
rent/.gitlab-ci.yml
T
xiaoquan bcf16fe53d feat: 双环境自动化部署(生产 + 测试)
- 新增 docker-compose.prod.yml / docker-compose.test.yml 双环境配置
- 新增 docker-compose.gateway.yml Nginx 网关按域名路由
- 新增 Dockerfile.website 官网镜像构建
- 新增 gateway.conf 支持 8 个域名路由
- 更新 .gitlab-ci.yml 支持 prod/test 双分支自动部署
- 更新 Makefile 新增 prod-/test-/gateway- 快捷命令
- 新增 scripts/setup-server.sh 服务器一键初始化脚本
- 修复 Nginx 配置服务名不匹配问题
- 修复前端 Dockerfile 缺少 packages/ 导致构建失败
- 删除旧的 docker-compose.yml

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 19:12:32 +08:00

152 lines
3.4 KiB
YAML

stages:
- install
- build
- deploy
variables:
NODE_ENV: production
# prod 和 test 分支触发
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: never
- if: $CI_COMMIT_BRANCH == "prod"
- if: $CI_COMMIT_BRANCH == "test"
# pnpm store 缓存
cache:
key:
files:
- pnpm-lock.yaml
paths:
- .pnpm-store
# ==================== INSTALL ====================
install_dependencies:
stage: install
tags:
- rent-deploy
script:
- npm install -g pnpm
- pnpm config set store-dir .pnpm-store
- pnpm install --frozen-lockfile
artifacts:
paths:
- node_modules/
- apps/*/node_modules/
- packages/*/node_modules/
expire_in: 1 hour
# ==================== BUILD ====================
build_server:
stage: build
tags:
- rent-deploy
needs: [install_dependencies]
script:
- npm install -g pnpm
- pnpm config set store-dir .pnpm-store
- pnpm --filter @rent/shared-types build
- pnpm --filter @rent/shared-utils build
- pnpm --filter @rent/server build
artifacts:
paths:
- apps/server/dist/
expire_in: 1 hour
build_merchant:
stage: build
tags:
- rent-deploy
needs: [install_dependencies]
script:
- npm install -g pnpm
- pnpm config set store-dir .pnpm-store
- pnpm --filter @rent/shared-types build
- pnpm --filter @rent/shared-utils build
- pnpm --filter @rent/merchant-admin build
artifacts:
paths:
- apps/merchant-admin/dist/
expire_in: 1 hour
build_platform:
stage: build
tags:
- rent-deploy
needs: [install_dependencies]
script:
- npm install -g pnpm
- pnpm config set store-dir .pnpm-store
- pnpm --filter @rent/shared-types build
- pnpm --filter @rent/shared-utils build
- pnpm --filter @rent/platform-admin build
artifacts:
paths:
- apps/platform-admin/dist/
expire_in: 1 hour
build_website:
stage: build
tags:
- rent-deploy
needs: [install_dependencies]
script:
- npm install -g pnpm
- pnpm config set store-dir .pnpm-store
- pnpm --filter @rent/official-website build
artifacts:
paths:
- apps/official-website/out/
expire_in: 1 hour
# ==================== DEPLOY ====================
deploy_production:
stage: deploy
tags:
- rent-deploy
needs:
- build_server
- build_merchant
- build_platform
- build_website
script:
- echo "部署到生产环境..."
- cd deploy/docker
- docker-compose -f docker-compose.prod.yml down --remove-orphans
- docker-compose -f docker-compose.prod.yml build --parallel
- docker-compose -f docker-compose.prod.yml up -d
- docker image prune -f
- echo "等待服务启动..."
- sleep 10
- docker-compose -f docker-compose.prod.yml ps
environment:
name: production
rules:
- if: $CI_COMMIT_BRANCH == "prod"
deploy_test:
stage: deploy
tags:
- rent-deploy
needs:
- build_server
- build_merchant
- build_platform
- build_website
script:
- echo "部署到测试环境..."
- cd deploy/docker
- docker-compose -f docker-compose.test.yml down --remove-orphans
- docker-compose -f docker-compose.test.yml build --parallel
- docker-compose -f docker-compose.test.yml up -d
- docker image prune -f
- echo "等待服务启动..."
- sleep 10
- docker-compose -f docker-compose.test.yml ps
environment:
name: test
rules:
- if: $CI_COMMIT_BRANCH == "test"