100 lines
4.0 KiB
YAML
100 lines
4.0 KiB
YAML
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:
|
|
|
|
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 }}
|
|
|
|
- name: Setup node
|
|
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516
|
|
with:
|
|
node-version: '16.17.0'
|
|
cache: npm
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- 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'
|