name: Generate and Sync OpenAPI on: # Se ejecuta cuando hay cambios en los routers de la API push: branches: - feat/sync-open-api-website-docs # paths: # - 'apps/dokploy/server/api/routers/**' # - 'packages/server/src/services/**' # - 'packages/server/src/db/schema/**' # Permite ejecución manual workflow_dispatch: jobs: generate-and-commit: name: Generate OpenAPI and commit to Dokploy repo runs-on: ubuntu-latest steps: - name: Checkout Dokploy repository uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }} - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: node-version: 20.16.0 cache: "pnpm" - name: Install dependencies run: pnpm install --frozen-lockfile - name: Generate OpenAPI specification run: pnpm generate:openapi - name: Commit OpenAPI spec run: | git config user.name "Dokploy Bot" git config user.email "bot@dokploy.com" # Verifica si el archivo existe if [ ! -f openapi.json ]; then echo "❌ openapi.json not found" exit 1 fi # Usa -f para forzar el add de archivos en .gitignore git add -f openapi.json # Verifica si hay cambios para commitear if git diff --cached --quiet; then echo "📝 No changes detected in OpenAPI spec" echo "HAS_CHANGES=false" >> $GITHUB_ENV exit 0 fi echo "HAS_CHANGES=true" >> $GITHUB_ENV # Commit los cambios git commit -m "chore: update OpenAPI specification [skip ci]" \ -m "Generated from commit: ${{ github.sha }}" \ -m "Triggered by: ${{ github.event_name }}" git push echo "✅ OpenAPI spec committed successfully" - name: Trigger website sync if: env.HAS_CHANGES == 'true' uses: peter-evans/repository-dispatch@v2 with: token: ${{ secrets.DOCS_SYNC_TOKEN }} repository: dokploy/website event-type: openapi-updated client-payload: '{"commit": "${{ github.sha }}", "timestamp": "${{ github.event.head_commit.timestamp }}"}'