diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 498e32d..e611e12 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -54,6 +54,42 @@ jobs: workingDirectory: 'backend' command: d1 execute ${{ secrets.CLOUDFLARE_D1_DATABASE_NAME || '2fauth-db' }} --remote --file=schema.sql + # 动态生成 Secrets 列表 (仅包含已配置的变量) + - name: Generate Secret List + id: secret_list + env: + OAUTH_GITHUB_CLIENT_ID: ${{ secrets.OAUTH_GITHUB_CLIENT_ID }} + OAUTH_GITHUB_CLIENT_SECRET: ${{ secrets.OAUTH_GITHUB_CLIENT_SECRET }} + OAUTH_GITHUB_REDIRECT_URI: ${{ secrets.OAUTH_GITHUB_REDIRECT_URI }} + OAUTH_CLOUDFLARE_CLIENT_ID: ${{ secrets.OAUTH_CLOUDFLARE_CLIENT_ID }} + OAUTH_CLOUDFLARE_CLIENT_SECRET: ${{ secrets.OAUTH_CLOUDFLARE_CLIENT_SECRET }} + OAUTH_CLOUDFLARE_ORG_DOMAIN: ${{ secrets.OAUTH_CLOUDFLARE_ORG_DOMAIN }} + OAUTH_CLOUDFLARE_REDIRECT_URI: ${{ secrets.OAUTH_CLOUDFLARE_REDIRECT_URI }} + OAUTH_NODELOC_CLIENT_ID: ${{ secrets.OAUTH_NODELOC_CLIENT_ID }} + OAUTH_NODELOC_CLIENT_SECRET: ${{ secrets.OAUTH_NODELOC_CLIENT_SECRET }} + OAUTH_NODELOC_REDIRECT_URI: ${{ secrets.OAUTH_NODELOC_REDIRECT_URI }} + run: | + SECRETS="OAUTH_ALLOWED_USERS + ENCRYPTION_KEY + JWT_SECRET" + + OPTIONAL_VARS=( + "OAUTH_GITHUB_CLIENT_ID" "OAUTH_GITHUB_CLIENT_SECRET" "OAUTH_GITHUB_REDIRECT_URI" + "OAUTH_CLOUDFLARE_CLIENT_ID" "OAUTH_CLOUDFLARE_CLIENT_SECRET" "OAUTH_CLOUDFLARE_ORG_DOMAIN" "OAUTH_CLOUDFLARE_REDIRECT_URI" + "OAUTH_NODELOC_CLIENT_ID" "OAUTH_NODELOC_CLIENT_SECRET" "OAUTH_NODELOC_REDIRECT_URI" + ) + + for VAR in "${OPTIONAL_VARS[@]}"; do + if [ -n "${!VAR}" ]; then + SECRETS="$SECRETS + $VAR" + fi + done + + echo "secrets<> $GITHUB_OUTPUT + echo "$SECRETS" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + # 部署到 Cloudflare Workers - name: Deploy to Cloudflare Workers uses: cloudflare/wrangler-action@v3 @@ -62,20 +98,7 @@ jobs: accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} workingDirectory: 'backend' command: deploy --minify - secrets: | - OAUTH_ALLOWED_USERS - OAUTH_GITHUB_CLIENT_ID - OAUTH_GITHUB_CLIENT_SECRET - OAUTH_GITHUB_REDIRECT_URI - OAUTH_CLOUDFLARE_CLIENT_ID - OAUTH_CLOUDFLARE_CLIENT_SECRET - OAUTH_CLOUDFLARE_ORG_DOMAIN - OAUTH_CLOUDFLARE_REDIRECT_URI - OAUTH_NODELOC_CLIENT_ID - OAUTH_NODELOC_CLIENT_SECRET - OAUTH_NODELOC_REDIRECT_URI - ENCRYPTION_KEY - JWT_SECRET + secrets: ${{ steps.secret_list.outputs.secrets }} env: OAUTH_ALLOWED_USERS: ${{ secrets.OAUTH_ALLOWED_USERS }} OAUTH_GITHUB_CLIENT_ID: ${{ secrets.OAUTH_GITHUB_CLIENT_ID }}