Auto-Update SDK #113
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Auto-Update SDK | |
| on: | |
| schedule: | |
| - cron: "0 0 * * 1" # Runs every Monday at midnight | |
| workflow_dispatch: # Allows manual triggering of the workflow | |
| jobs: | |
| update-sdk: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.12"] | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v3 | |
| with: | |
| node-version: '18' | |
| - name: Install OpenAPI Generator CLI | |
| run: npm install @openapitools/openapi-generator-cli@2.31.1 -g | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -r requirements.txt | |
| - name: Pull and generate SDK | |
| run: make gen-openapi-remote-for-ci | |
| - name: Check for changes | |
| id: check_changes | |
| run: | | |
| git add -A | |
| if git diff --cached --quiet; then | |
| echo "changes=false" >> $GITHUB_ENV | |
| else | |
| echo "changes=true" >> $GITHUB_ENV | |
| fi | |
| - name: Install GitHub CLI | |
| if: env.changes == 'true' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y gh | |
| - name: Check for existing pull request | |
| if: env.changes == 'true' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| id: check_pr | |
| run: | | |
| PR_EXISTS=$(gh pr list --search "Auto-update SDK" --base main --state open --json number,headRefName -q '.[0].number') | |
| if [[ -n "$PR_EXISTS" ]]; then | |
| echo "pr_exists=true" >> $GITHUB_ENV | |
| echo "PR_NUMBER=$PR_EXISTS" >> $GITHUB_ENV | |
| EXISTING_BRANCH=$(gh pr list --search "Auto-update SDK" --base main --state open --json number,headRefName -q '.[0].headRefName') | |
| echo "BRANCH_NAME=$EXISTING_BRANCH" >> $GITHUB_ENV | |
| else | |
| echo "pr_exists=false" >> $GITHUB_ENV | |
| echo "BRANCH_NAME=auto-update-sdk-$(date +'%Y-%m-%d-%H-%M-%S')" >> $GITHUB_ENV | |
| fi | |
| - name: Set up Git | |
| if: env.changes == 'true' | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| - name: Commit changes | |
| if: env.changes == 'true' | |
| run: | | |
| git fetch origin || true | |
| git checkout -B $BRANCH_NAME origin/$BRANCH_NAME 2>/dev/null || git checkout -B $BRANCH_NAME | |
| git commit -m "Auto-update SDK on $(date +'%Y-%m-%d')" | |
| - name: Push changes | |
| if: env.changes == 'true' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: git push --force --set-upstream origin $BRANCH_NAME | |
| - name: Create a pull request | |
| if: env.changes == 'true' && env.pr_exists == 'false' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| PR_TITLE="Auto-update SDK on $(date +'%Y-%m-%d')" | |
| PR_BODY="This pull request was automatically created by GitHub Actions to update the SDK with the latest remote OpenAPI specification." | |
| gh pr create --title "$PR_TITLE" --body "$PR_BODY" --head $BRANCH_NAME --base main | |
| - name: Comment on existing pull request | |
| if: env.changes == 'true' && env.pr_exists == 'true' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| gh pr comment $PR_NUMBER --body "This pull request has been updated with the latest changes from the automated SDK update process on $(date +'%Y-%m-%d %H:%M:%S')." |