Validate Generated OpenAPI Spec File #14279
Workflow file for this run
This file contains 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: Validate Generated OpenAPI Spec File | |
on: | |
pull_request: | |
merge_group: | |
types: | |
- checks_requested | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
validate_json: | |
name: Validate generated OpenAPI spec file | |
runs-on: ubuntu-latest | |
steps: | |
- name: Generate a token | |
if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }} | |
id: generate_token | |
uses: actions/create-github-app-token@v1 | |
with: | |
app-id: ${{ secrets.HYPERSWITCH_BOT_APP_ID }} | |
private-key: ${{ secrets.HYPERSWITCH_BOT_APP_PRIVATE_KEY }} | |
- name: Checkout PR from fork | |
if: ${{ (github.event_name == 'pull_request') && (github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name) }} | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.ref }} | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
- name: Checkout PR with token | |
if: ${{ (github.event_name == 'pull_request') && (github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name) }} | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.ref }} | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
token: ${{ steps.generate_token.outputs.token }} | |
- name: Checkout merge group HEAD commit | |
if: ${{ github.event_name == 'merge_group' }} | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.merge_group.head_sha }} | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable 2 weeks ago | |
- name: Generate the OpenAPI spec file | |
shell: bash | |
run: cargo run -p openapi | |
- name: Install `swagger-cli` | |
shell: bash | |
run: npm install -g @apidevtools/swagger-cli | |
- name: Validate the JSON file | |
shell: bash | |
run: swagger-cli validate ./openapi/openapi_spec.json | |
- name: Commit the JSON file if it is not up-to-date | |
# PR originated from same repository | |
if: ${{ (github.event_name == 'pull_request') && (github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name) }} | |
shell: bash | |
run: | | |
if ! git diff --quiet --exit-code -- openapi/openapi_spec.json ; then | |
git config --local user.name 'hyperswitch-bot[bot]' | |
git config --local user.email '148525504+hyperswitch-bot[bot]@users.noreply.github.com' | |
git add openapi/openapi_spec.json | |
git commit --message 'docs(openapi): re-generate OpenAPI specification' | |
git push | |
fi | |
- name: Fail check if the JSON file is not up-to-date | |
if: ${{ (github.event_name == 'merge_group') || ((github.event_name == 'pull_request') && (github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name)) }} | |
shell: bash | |
run: | | |
if ! git diff --quiet --exit-code -- openapi/openapi_spec.json ; then | |
echo '::error::The OpenAPI spec file is not up-to-date. Please re-generate the OpenAPI spec file using `cargo run -p openapi` and commit it.' | |
exit 1 | |
fi |