name: Deploy Backend on: workflow_run: workflows: [Upstream Sync] types: [completed] push: tags: - "*" workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout uses: actions/checkout@v6 - name: Install Node.js uses: actions/setup-node@v6 with: node-version: 22 - uses: pnpm/action-setup@v4 name: Install pnpm id: pnpm-install with: version: 10 run_install: false - name: Deploy Backend for ${{ github.ref_name }} run: | export use_worker_assets=${{ secrets.USE_WORKER_ASSETS }} export use_worker_assets_with_telegram=${{ secrets.USE_WORKER_ASSETS_WITH_TELEGRAM }} if [ -n "$use_worker_assets" ]; then cd frontend/ pnpm install --no-frozen-lockfile if [ -n "$use_worker_assets_with_telegram" ]; then echo "Building with telegram pages" pnpm build:telegram:pages else echo "Building with normal pages" pnpm build:pages fi cd .. fi export debug_mode=${{ secrets.DEBUG_MODE }} export use_mail_wasm_parser=${{ secrets.BACKEND_USE_MAIL_WASM_PARSER }} cd worker/ # ✅ 修复核心:使用环境变量写入,避免 Shell 解析特殊字符 printf '%s\n' "$WRANGLER_TOML_CONTENT" > wrangler.toml pnpm install --no-frozen-lockfile if [ -n "$use_mail_wasm_parser" ]; then echo "Using mail-parser-wasm-worker" pnpm add mail-parser-wasm-worker git apply ../.github/config/mail-parser-wasm-worker.patch echo "Applied mail-parser-wasm-worker patch" fi if [ "$debug_mode" = "true" ]; then pnpm run deploy else if pnpm run deploy >/dev/null 2>&1; then echo "Deploy succeeded" else code=$? echo "Command failed with exit code $code" exit "$code" fi fi echo "Deployed for tag ${{ github.ref_name }}" env: CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} # ✅ 将 secret 映射到环境变量中 WRANGLER_TOML_CONTENT: ${{ secrets.BACKEND_TOML }}