diff --git a/.github/workflows/docs-sync-auto-troubleshooting.yml b/.github/workflows/docs-sync-auto-troubleshooting.yml new file mode 100644 index 00000000000..e439c1649ee --- /dev/null +++ b/.github/workflows/docs-sync-auto-troubleshooting.yml @@ -0,0 +1,72 @@ +# Sync AI-generated troubleshooting guides from supabase/troubleshooting + +name: Sync from supabase/troubleshooting + +on: + repository_dispatch: + types: [sync_from_upstream] + workflow_dispatch: + +permissions: + contents: write + pull-requests: write + +jobs: + sync: + runs-on: ubuntu-latest + + steps: + - name: Checkout supabase/supabase + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 + with: + persist-credentials: true + + - name: Decode the GitHub App Private Key + id: decode + run: | + private_key=$(echo "${{ secrets.DOCS_GITHUB_APP_PRIVATE_KEY }}" | base64 --decode | awk 'BEGIN {ORS="\\n"} {print}' | head -c -2) &> /dev/null + echo "::add-mask::$private_key" + echo "private-key=$private_key" >> "$GITHUB_OUTPUT" + + - name: Create GitHub App token for supabase/troubleshooting + id: app-token + uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4 + with: + app-id: ${{ vars.DOCS_GITHUB_APP_ID }} + private-key: ${{ steps.decode.outputs.private-key }} + repositories: troubleshooting + permission-contents: read + + - name: Checkout supabase/troubleshooting + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 + with: + persist-credentials: false + token: ${{ steps.app-token.outputs.token }} + repository: supabase/troubleshooting + path: troubleshooting-upstream + + - name: Sync supabase/troubleshooting changes back to supabase/supabase + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git config user.name 'github-docs-bot' + git config user.email 'github-docs-bot@supabase.com' + BRANCH_NAME="bot/sync-troubleshooting" + EXISTING_BRANCH=$(git ls-remote --heads origin $BRANCH_NAME) + if [[ -n "$EXISTING_BRANCH" ]]; then + git push origin --delete $BRANCH_NAME + fi + git checkout -b $BRANCH_NAME + rsync --archive --verbose --ignore-existing ./troubleshooting-upstream/guides/ ./apps/docs/content/troubleshooting/ + git add apps/docs/content/troubleshooting/ + if git diff --quiet --cached; then + echo "No changes to sync" + exit 0 + fi + git commit --message "Sync from supabase/troubleshooting" + git push origin $BRANCH_NAME + if gh pr list --state open --head $BRANCH_NAME --json number --jq '.[0].number' | grep -q .; then + gh pr comment "$BRANCH_NAME" --body "Updated troubleshooting sync with latest changes." + else + gh pr create --title "[bot] Sync from supabase/troubleshooting" --body "This PR syncs the latest troubleshooting guides from the supabase/troubleshooting repository." --head $BRANCH_NAME + fi