Files
e2f38602-84ac-4b46-8a78-94b…/.gitea/workflows/deploy.yml
“dongming” 6689a47f23 fix:修改CI
2025-12-16 00:25:32 +08:00

150 lines
5.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Deploy to Cloudflare Pages
on:
push:
tags:
- 'deploy-*' # 只在推送 deploy-* 标签时触发
jobs:
deploy:
runs-on: ubuntu-latest
container:
image: swr.cn-south-1.myhuaweicloud.com/bws/node:20.19.6-bookworm-slim-ci
steps:
# 1. 拉取代码
- name: Checkout
uses: actions/checkout@v4
# 2. 设置 pnpmrunner 已预装 Node.js跳过 setup-node
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.23.0
- name: Parse tag to env
run: |
# 获取 tag 名称(Gitea Actions 使用 GITHUB_REF_NAME)
TAG_NAME="${GITHUB_REF_NAME}"
echo "TAG_NAME=$TAG_NAME"
# Tag 格式: deploy-{project_name}-{deploymentId_no_dashes}
# 例如: deploy-b7ea026a-cf09-4e31-9f29-b55d7c652b71-123e4567e89b12d3a456426614174000
# 去掉 "deploy-" 前缀
PREFIX="deploy-"
REST="${TAG_NAME#$PREFIX}"
# deploymentId(无破折号)固定是最后32个字符
DEPLOYMENT_ID="${REST: -32}"
# project_name 是剩余部分(去掉最后的 "-" 和 deploymentId)
PROJECT_NAME="${REST%-${DEPLOYMENT_ID}}"
echo "PROJECT_NAME=$PROJECT_NAME" >> "$GITHUB_ENV"
echo "DEPLOYMENT_ID=$DEPLOYMENT_ID" >> "$GITHUB_ENV"
#echo "DOMAIN=${PROJECT_NAME}-preview.turingflowai.com" >> "$GITHUB_ENV"
# 调试输出
echo "Parsed PROJECT_NAME: $PROJECT_NAME"
echo "Parsed DEPLOYMENT_ID: $DEPLOYMENT_ID"
- name: Check toolchain (debug only, 可选)
run: |
node -v || echo "node not found"
pnpm -v || echo "pnpm not found"
curl --version || echo "curl not found"
- name: Use CN npm registry
run: |
npm config set registry http://repo.myhuaweicloud.com/repository/npm/
- name: Install dependencies
run: |
pnpm ci --no-audit --no-fund
- name: Build
run: pnpm run build
- name: Deploy to Cloudflare Pages
env:
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
PROJECT_NAME: ${{ env.PROJECT_NAME }}
DOMAIN: ${{ env.DOMAIN }}
run: |
set -euo pipefail
echo "[deploy] project: $PROJECT_NAME"
#echo "[deploy] domain: $DOMAIN"
# 部署到 Cloudflare Pages (假定构建产物在 dist/)
# 使用项目本地安装的 wrangler
npx wrangler pages deploy dist \
--project-name "$PROJECT_NAME" \
--branch main
# 绑定自定义域名:<project_name>-preview.turingflowai.com
#echo "[deploy] 正在绑定自定义域名..."
#DOMAIN_RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \
# "https://api.cloudflare.com/client/v4/accounts/${CLOUDFLARE_ACCOUNT_ID}/pages/projects/${PROJECT_NAME}/domains" \
# -H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \
# -H "Content-Type: application/json" \
# -d '{"name":"'"${DOMAIN}"'"}')
#HTTP_CODE=$(echo "$DOMAIN_RESPONSE" | tail -n1)
#RESPONSE_BODY=$(echo "$DOMAIN_RESPONSE" | sed '$d')
#if [ "$HTTP_CODE" = "200" ] || [ "$HTTP_CODE" = "409" ]; then
# echo "[deploy] 域名绑定成功或已存在 (HTTP $HTTP_CODE)"
#else
# echo "[deploy] 警告: 域名绑定失败 (HTTP $HTTP_CODE)"
# echo "[deploy] 响应: $RESPONSE_BODY"
# echo "[deploy] 继续执行,但域名可能未绑定成功"
#fi
- name: Notify Deploy Service (success)
if: success()
env:
DEPLOY_SERVICE_CALLBACK_URL: ${{ secrets.DEPLOY_SERVICE_CALLBACK_URL }}
DEPLOY_SERVICE_TOKEN: ${{ secrets.DEPLOY_SERVICE_TOKEN }}
DEPLOYMENT_ID: ${{ env.DEPLOYMENT_ID }}
run: |
set -euo pipefail
# 获取当前 commit SHA (Gitea Actions 使用 GITHUB_SHA)
COMMIT_SHA="${GITHUB_SHA}"
curl -X POST "$DEPLOY_SERVICE_CALLBACK_URL" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DEPLOY_SERVICE_TOKEN" \
-d '{
"deploymentId": "'"${DEPLOYMENT_ID}"'",
"status": "deployed",
"commitSha": "'"${COMMIT_SHA}"'",
"cfDeploymentId": "",
"errorMessage": null
}'
- name: Notify Deploy Service (failure)
if: failure()
env:
DEPLOY_SERVICE_CALLBACK_URL: ${{ secrets.DEPLOY_SERVICE_CALLBACK_URL }}
DEPLOY_SERVICE_TOKEN: ${{ secrets.DEPLOY_SERVICE_TOKEN }}
DEPLOYMENT_ID: ${{ env.DEPLOYMENT_ID }}
run: |
set -euo pipefail
# 获取当前 commit SHA
COMMIT_SHA="${GITHUB_SHA}"
curl -X POST "$DEPLOY_SERVICE_CALLBACK_URL" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DEPLOY_SERVICE_TOKEN" \
-d '{
"deploymentId": "'"${DEPLOYMENT_ID}"'",
"status": "failed",
"commitSha": "'"${COMMIT_SHA}"'",
"cfDeploymentId": "",
"errorMessage": "see Gitea Actions logs"
}'