name: OpenAPI generate decorated schema files # **What it does**: On 'Update OpenAPI Descriptions' PRs opened by github-openapi-bot, this workflow runs the script to generate the decorated OpenAPI files and commit them to the PR. # **Why we have it**: So we can consume OpenAPI changes, decorate them, and publish them to the REST API docs. # **Who does it impact**: Anyone making OpenAPI changes in `github/github`, and wanting to get them published on the docs site. on: pull_request: # This prevents the workflow from running continuously. We only want # this workflow to run once on the initial open. types: - opened permissions: contents: write pull-requests: write # This allows a subsequently queued workflow run to interrupt previous runs concurrency: group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' cancel-in-progress: true jobs: generate-decorated-files: if: >- ${{ github.repository == 'github/docs-internal' && github.event.pull_request.user.login == 'github-openapi-bot' }} runs-on: ubuntu-latest steps: - name: Label pull requests with 'github-openapi-bot' uses: andymckay/labeler@e6c4322d0397f3240f0e7e30a33b5c5df2d39e90 with: add-labels: 'github-openapi-bot' - name: Checkout repository code uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 with: # actions/checkout by default will leave you in a detached head state # so we need to specify the PR head ref explicitly since we're making # changes that we want to commit to the branch. ref: ${{ github.event.pull_request.head.ref }} # Using a PAT is necessary so that the new commit will trigger the # CI in the PR. (Events from GITHUB_TOKEN don't trigger new workflows.) token: ${{ secrets.DOCUBOT_REPO_PAT }} - uses: ./.github/actions/node-npm-setup - name: Decorate the dereferenced OpenAPI schemas run: script/rest/update-files.js --decorate-only - name: Check if pull request should be closed id: close-pr env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} PR_URL: ${{ github.event.pull_request.html_url }} run: | echo "If there are no changes, exit" NUM_FILES_CHANGED=$(git diff --name-only -- lib/rest/static/decorated | wc -l) if [[ $NUM_FILES_CHANGED -eq 0 ]] then echo "No decorated file changes found" gh pr comment "$PR_URL" --body "🤖 This pull request has no changes to lib/rest/static/decorated, so it is being closed automatically." gh pr close "$PR_URL" --delete-branch echo "NO_DECORATED=true" >> $GITHUB_OUTPUT exit 0 fi - name: Check in the decorated files if: ${{ steps.close-pr.outputs.NO_DECORATED != 'true' }} uses: EndBug/add-and-commit@050a66787244b10a4874a2a5f682130263edc192 with: # The arguments for the `git add` command add: '["lib/rest/static/apps", "lib/rest/static/decorated", "lib/webhooks/static/decorated", "lib/redirects/static/client-side-rest-api-redirects.json"]' # The message for the commit message: 'Add decorated OpenAPI schema files' env: # Disable pre-commit hooks; they don't play nicely with add-and-commit HUSKY: '0' - name: Remove the dereferenced files if: ${{ steps.close-pr.outputs.NO_DECORATED != 'true' }} uses: EndBug/add-and-commit@050a66787244b10a4874a2a5f682130263edc192 with: # The arguments for the `git add` command remove: '["lib/rest/static/dereferenced/*"]' # The message for the commit message: 'Removed dereferenced OpenAPI schema files' env: # Disable pre-commit hooks; they don't play nicely with add-and-commit HUSKY: '0'