Files
rent/.gitea/workflows/deploy.yml
T
xiaoquan 7bdcf07d56 fix: 修复 CI/CD 工作流 - 移除 actions/checkout 依赖
## 问题
- actions/checkout@v4 需要 Node.js 环境
- Gitea Act Runner 默认镜像没有 Node.js
- 导致 "Cannot find: node in PATH" 错误

## 解决方案
- 使用原生 git 命令代替 actions/checkout
- 在 install job 中安装 Node.js 环境
- 所有 checkout 步骤改为 git clone

## 优点
- 不依赖 GitHub Actions 插件
- 完全使用原生命令,更稳定
- 适合国内服务器环境

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 16:40:58 +08:00

110 lines
3.4 KiB
YAML

name: Deploy
on:
push:
branches:
- prod
- test
env:
NODE_ENV: production
jobs:
install:
runs-on: [self-hosted, rent-deploy]
steps:
- name: Checkout code
run: |
git clone --depth 1 --branch ${GITHUB_REF#refs/heads/} ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git .
git checkout ${GITHUB_SHA}
- name: Setup Node.js
run: |
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
apt-get install -y nodejs
- name: Install dependencies
run: |
npm install -g pnpm
pnpm config set store-dir .pnpm-store
pnpm install --frozen-lockfile
build:
runs-on: [self-hosted, rent-deploy]
needs: install
steps:
- name: Checkout code
run: |
git clone --depth 1 --branch ${GITHUB_REF#refs/heads/} ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git .
git checkout ${GITHUB_SHA}
- name: Build shared packages
run: |
npm install -g pnpm
pnpm config set store-dir .pnpm-store
pnpm install --frozen-lockfile
pnpm --filter @rent/shared-types build
pnpm --filter @rent/shared-utils build
- name: Build server
run: pnpm --filter @rent/server build
- name: Build merchant-admin
run: pnpm --filter @rent/merchant-admin build
- name: Build platform-admin
run: pnpm --filter @rent/platform-admin build
- name: Build website
run: pnpm --filter @rent/official-website build
deploy-production:
runs-on: [self-hosted, rent-deploy]
needs: build
if: github.ref == 'refs/heads/prod'
steps:
- name: Checkout code
run: |
git clone --depth 1 --branch ${GITHUB_REF#refs/heads/} ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git .
git checkout ${GITHUB_SHA}
- name: Deploy to production
run: |
echo "部署到生产环境..."
cd deploy/docker
export PROD_DB_PASSWORD="${{ secrets.PROD_DB_PASSWORD }}"
export PROD_JWT_SECRET="${{ secrets.PROD_JWT_SECRET }}"
export ENCRYPTION_KEY="${{ secrets.ENCRYPTION_KEY }}"
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
deploy-test:
runs-on: [self-hosted, rent-deploy]
needs: build
if: github.ref == 'refs/heads/test'
steps:
- name: Checkout code
run: |
git clone --depth 1 --branch ${GITHUB_REF#refs/heads/} ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git .
git checkout ${GITHUB_SHA}
- name: Deploy to test
run: |
echo "部署到测试环境..."
cd deploy/docker
export TEST_DB_PASSWORD="${{ secrets.TEST_DB_PASSWORD }}"
export TEST_JWT_SECRET="${{ secrets.TEST_JWT_SECRET }}"
export ENCRYPTION_KEY="${{ secrets.ENCRYPTION_KEY }}"
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