bcf16fe53d
- 新增 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>
152 lines
3.4 KiB
YAML
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"
|