寻求GitLab CI部署Turborepo中Next.js独立应用的成功案例
GitLab CI部署Turborepo中Next.js独立应用的实践示例
完全可以实现,下面是一套经过验证的配置示例,涵盖项目结构、Turbo配置、GitLab CI流水线配置全流程:
一、典型项目结构
. ├── apps/ │ └── web/ # 你的Next.js独立应用 │ ├── next.config.js │ ├── package.json │ └── ... ├── packages/ │ └── ui/ # 共享组件包(可选) │ └── ... ├── turbo.json ├── package.json └── .gitlab-ci.yml
二、Turbo构建配置(turbo.json)
指定依赖顺序和输出目录,确保只构建目标Next.js应用:
{ "$schema": "https://turbo.build/schema.json", "pipeline": { "build": { "dependsOn": ["^build"], "outputs": [ "apps/web/.next/**", "apps/web/out/**" ] }, "lint": { "dependsOn": ["^lint"] } } }
三、Next.js应用配置(apps/web/next.config.js)
开启独立部署模式,生成可直接运行的产物:
/** @type {import('next').NextConfig} */ const nextConfig = { output: 'standalone', // 生成独立部署包,无需全局安装Node依赖 distDir: 'out', // 自定义输出目录,可根据需求调整 }; module.exports = nextConfig;
四、GitLab CI流水线配置(.gitlab-ci.yml)
实现依赖安装、构建、部署全自动化:
stages: - install - build - deploy # 使用Node.js 18镜像(Next.js 13+推荐版本) image: node:18-alpine # 缓存依赖与构建缓存,加速后续流水线 cache: paths: - node_modules/ - .turbo/ - apps/web/.next/cache/ install_deps: stage: install script: - npm install build_app: stage: build script: - npm run build -- --filter=web # 仅构建web应用,跳过其他包 artifacts: paths: - apps/web/out/ # 对应Next.js配置的distDir expire_in: 1 week # 构建产物保留1周 # 示例:部署到自定义Linux服务器(需提前配置环境变量) deploy_to_server: stage: deploy only: - main # 仅在主分支触发部署 script: # 安装SSH客户端 - apk add --no-cache openssh-client # 配置SSH密钥 - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - ssh-keyscan -H $SERVER_IP >> ~/.ssh/known_hosts # 上传构建产物到服务器目标目录 - scp -r apps/web/out/* $SERVER_USER@$SERVER_IP:/var/www/next-web-app/ # 可选:用pm2重启应用(需服务器已安装pm2) - ssh $SERVER_USER@$SERVER_IP "pm2 restart next-web-app"
关键注意事项
- 环境变量配置:在GitLab项目的「Settings > CI/CD > Variables」中添加
SSH_PRIVATE_KEY(服务器私钥)、SERVER_IP、SERVER_USER等敏感信息 - Turbo过滤命令:
--filter=web是核心,确保只构建指定的Next.js应用,避免冗余构建 - Next.js产物部署:如果使用
standalone模式,除了out/standalone/,还需同步apps/web/public/和apps/web/out/static/目录到服务器 - 缓存优化:缓存
.turbo目录可复用Turbo的构建缓存,大幅缩短构建时间
内容的提问来源于stack exchange,提问作者Volnei Munhoz
相关产品推荐
相关产品推荐

