diff --git a/.github/workflows/deploy-cloudflare.yml b/.github/workflows/deploy-cloudflare.yml index fc2c28d..2f4e165 100644 --- a/.github/workflows/deploy-cloudflare.yml +++ b/.github/workflows/deploy-cloudflare.yml @@ -145,12 +145,36 @@ jobs: CONFIG_FILE="wrangler-action.toml" - if [ -z "$KV_NAMESPACE_ID" ]; then - echo "❌ KV_NAMESPACE_ID variable cannot be empty." - exit 1 + if [ -n "$KV_NAMESPACE_ID" ]; then + sed -i "s|\${KV_NAMESPACE_ID}|${KV_NAMESPACE_ID}|g" "$CONFIG_FILE" + echo "✅ Using the database from environment variables." + exit 0 fi - sed -i "s|\${KV_NAMESPACE_ID}|${KV_NAMESPACE_ID}|g" "$CONFIG_FILE" + echo "🔍 Checking if the database exists..." + + set +e + KV_LIST=$(pnpm wrangler kv namespace list 2>&1) + STATUS=$? + set -e + + if [ $STATUS -ne 0 ]; then + echo "$KV_LIST" + exit 1 + fi + + if echo "$KV_LIST" | jq -e ".[] | select(.title == \"$NAME\")" >/dev/null; then + echo "✅ Database $NAME already exists." + KV_ID=$(echo "$KV_LIST" | jq -r ".[] | select(.title == \"$NAME\") | .id") + echo "KV_NAMESPACE_ID: $KV_ID" + else + echo "âš ī¸ Database $NAME does not exist. Starting creation..." + pnpm wrangler kv namespace create $NAME + KV_LIST=$(pnpm wrangler kv namespace list) + KV_ID=$(echo "$KV_LIST" | jq -r ".[] | select(.title == \"$NAME\") | .id") + fi + + sed -i "s|\${KV_NAMESPACE_ID}|$KV_ID|g" "$CONFIG_FILE" echo "✅ Setup completed." - name: đŸŦ 莞įŊŽD1数捎åē“ / Set up D1 database @@ -159,12 +183,36 @@ jobs: CONFIG_FILE="wrangler-action.toml" - if [ -z "$D1_DATABASE_ID" ]; then - echo "❌ D1_DATABASE_ID variable cannot be empty." + if [ -n "$D1_DATABASE_ID" ]; then + sed -i "s|\${D1_DATABASE_ID}|${D1_DATABASE_ID}|g" "$CONFIG_FILE" + echo "✅ Using the database from environment variables." + exit 0 + fi + + echo "🔍 Checking if the database exists..." + + set +e + DB_LIST=$(pnpm wrangler d1 list --json 2>&1) + STATUS=$? + set -e + + if [ $STATUS -ne 0 ]; then + echo "$DB_LIST" exit 1 fi - sed -i "s|\${D1_DATABASE_ID}|${D1_DATABASE_ID}|g" "$CONFIG_FILE" + if echo "$DB_LIST" | jq -e ".[] | select(.name == \"$NAME\")" >/dev/null; then + echo "✅ Database $NAME already exists." + D1_ID=$(echo "$DB_LIST" | jq -r ".[] | select(.name == \"$NAME\") | .uuid") + echo "D1_DATABASE_ID: $D1_ID" + else + echo "âš ī¸ Database $NAME does not exist. Starting creation..." + pnpm wrangler d1 create $NAME + DB_LIST=$(pnpm wrangler d1 list --json) + D1_ID=$(echo "$DB_LIST" | jq -r ".[] | select(.name == \"$NAME\") | .uuid") + fi + + sed -i "s|\${D1_DATABASE_ID}|$D1_ID|g" "$CONFIG_FILE" echo "✅ Setup completed." - name: 🚀 åŧ€å§‹éƒ¨įŊ˛ / Start deployment