From f6d4653a47811d0ed2f2d132fc9125f82182b3ea Mon Sep 17 00:00:00 2001 From: Abner <22141172+Silentely@users.noreply.github.com> Date: Wed, 9 Jul 2025 19:26:36 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E9=83=A8=E7=BD=B2=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E5=8F=8Aaction=E9=83=A8=E7=BD=B2=E5=9C=A8=E6=9C=AA=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=8F=98=E9=87=8F=E6=97=B6=E8=BE=93=E5=87=BA=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-cloudflare.yml | 21 ++++++++++++++++++--- doc/github-action.md | 4 ++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deploy-cloudflare.yml b/.github/workflows/deploy-cloudflare.yml index f949f9e..a896820 100644 --- a/.github/workflows/deploy-cloudflare.yml +++ b/.github/workflows/deploy-cloudflare.yml @@ -24,6 +24,9 @@ jobs: JWT_SECRET: ${{ secrets.JWT_SECRET }} INIT_URL: ${{ secrets.INIT_URL }} + outputs: + deployment_skipped: ${{ steps.deploy.outputs.deployment_skipped }} + steps: - name: ➡️ Checkout repository uses: actions/checkout@v4 @@ -41,7 +44,6 @@ jobs: - name: 📡 Disable wrangler telemetry working-directory: ./mail-worker - # 使用 -c 指定配置文件 run: npx wrangler telemetry disable -c wrangler-action.toml - name: 🤫 Set Worker secrets (ignore if already exists) @@ -64,12 +66,20 @@ jobs: echo "✨ Secret processing complete." - name: 🛠️ Prepare Config and Deploy + id: deploy working-directory: ./mail-worker run: | + if [ -z "$D1_DATABASE_ID" ] || [ -z "$KV_NAMESPACE_ID" ] || [ -z "$R2_BUCKET_NAME" ]; then + echo "⚠️ Required secrets (D1_DATABASE_ID, KV_NAMESPACE_ID, or R2_BUCKET_NAME) are not set." + echo "🟡 Skipping deployment." + echo "deployment_skipped=true" >> $GITHUB_OUTPUT + exit 0 + fi + + echo "deployment_skipped=false" >> $GITHUB_OUTPUT CONFIG_FILE="wrangler-action.toml" echo "⚙️ Dynamically updating '$CONFIG_FILE' with binding IDs..." - # 确保 sed 命令作用于 wrangler-action.toml 文件 sed -i "s|\${D1_DATABASE_ID}|${D1_DATABASE_ID}|g" "$CONFIG_FILE" sed -i "s|\${KV_NAMESPACE_ID}|${KV_NAMESPACE_ID}|g" "$CONFIG_FILE" sed -i "s|\${R2_BUCKET_NAME}|${R2_BUCKET_NAME}|g" "$CONFIG_FILE" @@ -79,6 +89,7 @@ jobs: echo "✅ Deployment command executed." - name: 🗄️ Initialize Database (if INIT_URL is set) + if: steps.deploy.outputs.deployment_skipped == 'false' run: | if [ -z "$INIT_URL" ]; then echo "✅ Deployment successful. INIT_URL not set, skipping initialization." @@ -105,7 +116,11 @@ jobs: if: always() run: | if [ "${{ job.status }}" == "success" ]; then - echo "🎉🎉🎉 Hooray! Deployment completed successfully! 🎉🎉🎉" + if [ "${{ steps.deploy.outputs.deployment_skipped }}" == "true" ]; then + echo "🟡 Deployment was skipped due to missing configuration." + else + echo "🎉🎉🎉 Hooray! Deployment completed successfully! 🎉🎉🎉" + fi else echo "❌❌❌ Oh no! The deployment failed. Please check the logs above for errors. ❌❌❌" fi diff --git a/doc/github-action.md b/doc/github-action.md index 8f71329..c6f7215 100644 --- a/doc/github-action.md +++ b/doc/github-action.md @@ -17,7 +17,7 @@ | `DOMAIN` | ✅ | 您要用于邮件服务的域名(例如 `["xx.xx"],多域名用,分隔`) | | `ADMIN` | ✅ | 您的管理员邮箱地址(例如 `admin@example.com`) | | `JWT_SECRET` | ✅ | 用于生成和验证 JWT 的随机长字符串 | -| `INIT_URL` | ❌ | (可选)部署后用于初始化数据库的 Worker URL | +| `INIT_URL` | ❌ | (可选)部署后用于初始化数据库的 Worker URL(格式参考下述手动初始化) | --- @@ -34,5 +34,5 @@ 2. 复制到 GitHub Secrets 中的 `CLOUDFLARE_ACCOUNT_ID` **运行工作流** -1. 然后在Action页面手手动运行工作流,后续同步上游后会自动部署到 Cloudflare Workers。如未配置 `INIT_URL`,则需要手动访问 `https://你的项目域名/api/init/你的jwt_secret` 进行数据库初始化。 +1. 然后在Action页面手动运行工作流,后续同步上游后会自动部署到 Cloudflare Workers。如未配置 `INIT_URL`,则需要手动访问 `https://你的项目域名/api/init/你的jwt_secret` 进行数据库初始化。 2. 自动同步上游可使用bot或者手动点击Sync Upstream按钮。 \ No newline at end of file