2626
2727 repository_dispatch :
2828 types : [sdk-release]
29+ schedule :
30+ - cron : " */15 * * * *"
2931
3032# prevent concurrent runs that could conflict
3133concurrency :
3840 timeout-minutes : 30
3941 permissions :
4042 contents : write
43+ pull-requests : write
4144
4245 steps :
4346 - name : Checkout docs repo
7881 - name : Install Python dependencies
7982 run : pip install -r requirements.txt
8083
81- - name : Determine SDK and Version
84+ - name : Resolve generation inputs from trigger
8285 id : params
8386 env :
8487 EVENT_NAME : ${{ github.event_name }}
8992 PAYLOAD_SDK : ${{ github.event.client_payload.sdk }}
9093 PAYLOAD_VERSION : ${{ github.event.client_payload.version }}
9194 PAYLOAD_LIMIT : ${{ github.event.client_payload.limit }}
92- run : |
93- if [[ "$EVENT_NAME" == "workflow_dispatch" ]]; then
94- SDK="$INPUT_SDK"
95- VERSION="$INPUT_VERSION"
96- LIMIT="$INPUT_LIMIT"
97- FORCE="$INPUT_FORCE"
98- elif [[ "$EVENT_NAME" == "repository_dispatch" ]]; then
99- SDK="$PAYLOAD_SDK"
100- VERSION="${PAYLOAD_VERSION:-latest}"
101- LIMIT="${PAYLOAD_LIMIT:-5}"
102- FORCE="false"
103- fi
104-
105- echo "sdk=${SDK:-all}" >> $GITHUB_OUTPUT
106- echo "version=${VERSION:-latest}" >> $GITHUB_OUTPUT
107- echo "limit=${LIMIT:-5}" >> $GITHUB_OUTPUT
108- echo "force=${FORCE:-false}" >> $GITHUB_OUTPUT
95+ run : bash scripts/resolve-sdk-reference-sync-params.sh
10996
11097 - name : Generate SDK Reference
11198 working-directory : sdk-reference-generator
@@ -128,47 +115,75 @@ jobs:
128115
129116 pnpm run generate $ARGS
130117
131- - name : Commit and push changes
132- id : commit
133- env :
134- SDK_NAME : ${{ steps.params.outputs.sdk }}
135- SDK_VERSION : ${{ steps.params.outputs.version }}
118+ - name : Collect change details
119+ id : changes
136120 run : |
137- git config user.name "github-actions[bot]"
138- git config user.email "github-actions[bot]@users.noreply.github.com"
139-
140- git add docs/sdk-reference/
141- git add docs.json
121+ CHANGED_FILES="$(git status --porcelain -- docs/sdk-reference docs.json | wc -l | tr -d ' ')"
122+ TOTAL_MDX_FILES="$(find docs/sdk-reference -type f -name '*.mdx' | wc -l | tr -d ' ')"
142123
143- if git diff --staged --quiet; then
144- echo "No changes to commit"
124+ if [[ "$CHANGED_FILES" == "0" ]]; then
145125 echo "changes=false" >> $GITHUB_OUTPUT
146126 else
147- git commit -m "docs: update SDK reference for $SDK_NAME $SDK_VERSION"
148- git push
149127 echo "changes=true" >> $GITHUB_OUTPUT
150128 fi
151129
130+ echo "changed_files=$CHANGED_FILES" >> $GITHUB_OUTPUT
131+ echo "total_mdx_files=$TOTAL_MDX_FILES" >> $GITHUB_OUTPUT
132+
133+ - name : Commit changes and manage pull request
134+ if : steps.changes.outputs.changes == 'true'
135+ id : pr
136+ env :
137+ GH_TOKEN : ${{ github.token }}
138+ BASE_BRANCH : ${{ github.ref_name }}
139+ BRANCH_NAME : automation/sdk-reference-sync
140+ TRIGGER : ${{ steps.params.outputs.trigger }}
141+ SDK_NAME : ${{ steps.params.outputs.sdk }}
142+ SDK_VERSION : ${{ steps.params.outputs.version }}
143+ LIMIT_DISPLAY : ${{ steps.params.outputs.limit_display }}
144+ FORCE : ${{ steps.params.outputs.force }}
145+ CHANGED_FILES : ${{ steps.changes.outputs.changed_files }}
146+ TOTAL_MDX_FILES : ${{ steps.changes.outputs.total_mdx_files }}
147+ WORKFLOW_NAME : ${{ github.workflow }}
148+ REPOSITORY : ${{ github.repository }}
149+ RUN_ID : ${{ github.run_id }}
150+ run : bash scripts/create-sdk-reference-sync-pr.sh
151+
152152 - name : Summary
153153 env :
154+ TRIGGER : ${{ steps.params.outputs.trigger }}
154155 SDK_NAME : ${{ steps.params.outputs.sdk }}
155156 SDK_VERSION : ${{ steps.params.outputs.version }}
156- LIMIT : ${{ steps.params.outputs.limit }}
157- CHANGES : ${{ steps.commit.outputs.changes }}
157+ LIMIT : ${{ steps.params.outputs.limit_display }}
158+ FORCE : ${{ steps.params.outputs.force }}
159+ CHANGES : ${{ steps.changes.outputs.changes }}
160+ CHANGED_FILES : ${{ steps.changes.outputs.changed_files }}
161+ TOTAL_MDX_FILES : ${{ steps.changes.outputs.total_mdx_files }}
162+ PR_OPERATION : ${{ steps.pr.outputs.operation }}
163+ PR_URL : ${{ steps.pr.outputs.url }}
158164 run : |
159165 echo "## SDK Reference Generation Complete" >> $GITHUB_STEP_SUMMARY
160166 echo "" >> $GITHUB_STEP_SUMMARY
161167 echo "| Parameter | Value |" >> $GITHUB_STEP_SUMMARY
162168 echo "|-----------|-------|" >> $GITHUB_STEP_SUMMARY
169+ echo "| Trigger | $TRIGGER |" >> $GITHUB_STEP_SUMMARY
163170 echo "| SDK | $SDK_NAME |" >> $GITHUB_STEP_SUMMARY
164171 echo "| Version | $SDK_VERSION |" >> $GITHUB_STEP_SUMMARY
165- echo "| Limit | ${LIMIT:-No limit} |" >> $GITHUB_STEP_SUMMARY
166- echo "| Changes committed | $CHANGES |" >> $GITHUB_STEP_SUMMARY
172+ echo "| Limit | $LIMIT |" >> $GITHUB_STEP_SUMMARY
173+ echo "| Force | $FORCE |" >> $GITHUB_STEP_SUMMARY
174+ echo "| Changes detected | $CHANGES |" >> $GITHUB_STEP_SUMMARY
175+ echo "| Changed files | ${CHANGED_FILES:-0} |" >> $GITHUB_STEP_SUMMARY
176+ echo "| PR operation | ${PR_OPERATION:-No PR created} |" >> $GITHUB_STEP_SUMMARY
177+ if [[ -n "$PR_URL" ]]; then
178+ echo "| Pull request | $PR_URL |" >> $GITHUB_STEP_SUMMARY
179+ fi
167180 echo "" >> $GITHUB_STEP_SUMMARY
168181
169182 if [[ "$CHANGES" == "true" ]]; then
170183 echo "### Generated Files" >> $GITHUB_STEP_SUMMARY
171184 echo '```' >> $GITHUB_STEP_SUMMARY
172- echo "Total MDX files: $(find docs/sdk-reference -type f -name '*.mdx' | wc -l) " >> $GITHUB_STEP_SUMMARY
185+ echo "Total MDX files: $TOTAL_MDX_FILES " >> $GITHUB_STEP_SUMMARY
173186 echo '```' >> $GITHUB_STEP_SUMMARY
187+ else
188+ echo "No SDK reference changes were detected, so no pull request was created." >> $GITHUB_STEP_SUMMARY
174189 fi
0 commit comments