Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 52 additions & 8 deletions .github/workflows/update-openapi-spec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,43 @@ jobs:
echo "new-version=$NEW_VERSION" >> $GITHUB_OUTPUT
echo "new-paths=$NEW_PATHS" >> $GITHUB_OUTPUT
echo "New spec version: $NEW_VERSION, paths: $NEW_PATHS"

# Compute content hash for deduplication
SPEC_HASH=$(sha256sum resources/openapi-spec.json | cut -d' ' -f1)
echo "spec-sha256=$SPEC_HASH" >> $GITHUB_OUTPUT
echo "Spec content hash: $SPEC_HASH"
fi

- name: Determine branch name
id: branch-info
if: steps.update-spec.outputs.has-changes == 'true'
run: |
SPEC_HASH="${{ steps.update-spec.outputs.spec-sha256 }}"
if [ -z "$SPEC_HASH" ] || [ "$SPEC_HASH" = "unknown" ]; then
SPEC_HASH=$(sha256sum resources/openapi-spec.json | cut -d' ' -f1)
fi
BRANCH="update-openapi-spec-${SPEC_HASH:0:12}"
echo "branch=$BRANCH" >> $GITHUB_OUTPUT
echo "Using branch $BRANCH for this update"

- name: Check for existing PR
id: existing-pr
if: steps.update-spec.outputs.has-changes == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
BRANCH="${{ steps.branch-info.outputs.branch }}"
if [ -z "$BRANCH" ]; then
echo "exists=false" >> $GITHUB_OUTPUT
exit 0
fi

PR_COUNT=$(gh pr list --state open --head "$BRANCH" --repo "$GITHUB_REPOSITORY" --json number --jq 'length')
if [ "$PR_COUNT" -gt 0 ]; then
echo "An open PR already exists for $BRANCH (count: $PR_COUNT)"
echo "exists=true" >> $GITHUB_OUTPUT
else
echo "exists=false" >> $GITHUB_OUTPUT
fi

- name: Update search database
Expand All @@ -96,7 +133,7 @@ jobs:
fi

- name: Create Pull Request
if: steps.update-spec.outputs.has-changes == 'true'
if: steps.update-spec.outputs.has-changes == 'true' && steps.existing-pr.outputs.exists != 'true'
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -107,9 +144,10 @@ jobs:
- Version: ${{ steps.current-spec.outputs.current-version }} → ${{ steps.update-spec.outputs.new-version }}
- Paths: ${{ steps.current-spec.outputs.current-paths }} → ${{ steps.update-spec.outputs.new-paths }}
- Regenerated DuckDB search database for API search functionality
- Content hash: ${{ steps.update-spec.outputs.spec-sha256 }}

Auto-generated by update-openapi-spec workflow
branch: update-openapi-spec-${{ github.run_number }}
branch: ${{ steps.branch-info.outputs.branch }}
delete-branch: true
title: "chore: update OpenAPI specification to v${{ steps.update-spec.outputs.new-version }}"
body: |
Expand Down Expand Up @@ -154,12 +192,18 @@ jobs:
- name: Summary
run: |
if [ "${{ steps.update-spec.outputs.has-changes }}" = "true" ]; then
echo "✅ OpenAPI spec and search database updated successfully"
echo "📊 Version: ${{ steps.current-spec.outputs.current-version }} → \
${{ steps.update-spec.outputs.new-version }}"
echo "🔧 Paths: ${{ steps.current-spec.outputs.current-paths }} → ${{ steps.update-spec.outputs.new-paths }}"
echo "🗃️ Search database regenerated for Python API search MCP server"
echo "📋 PR created with both OpenAPI spec and DuckDB database updates"
if [ "${{ steps.existing-pr.outputs.exists }}" = "true" ]; then
echo "ℹ️ OpenAPI spec update matches an existing open PR."
echo "🔁 Reusing branch ${{ steps.branch-info.outputs.branch }}"
else
echo "✅ OpenAPI spec and search database updated successfully"
echo "📊 Version: ${{ steps.current-spec.outputs.current-version }} → \
${{ steps.update-spec.outputs.new-version }}"
echo "🔧 Paths: ${{ steps.current-spec.outputs.current-paths }} → \
${{ steps.update-spec.outputs.new-paths }}"
echo "🗃️ Search database regenerated for Python API search MCP server"
echo "📋 PR created with both OpenAPI spec and DuckDB database updates"
fi
else
echo "ℹ️ OpenAPI spec is already up to date - no database update needed"
fi
Loading