Skip to content

PR comment for OpenAPI Diff output #48

PR comment for OpenAPI Diff output

PR comment for OpenAPI Diff output #48

Workflow file for this run

name: Lint and validate OpenAPI specs
on:
- pull_request
jobs:
lint:
name: Lint OpenAPI definition
runs-on: ubuntu-latest
steps:
- name: Check out head branch
uses: actions/checkout@v4
- name: Run OpenAPI Lint Action
uses: mhiew/redoc-lint-github-action@v4
with:
args: 'openapi/task_execution_service.openapi.yaml'
validate:
name: Validate OpenAPI definition
runs-on: ubuntu-latest
steps:
- name: Check out head branch
uses: actions/checkout@v4
- name: Run OpenAPI Validate Action
uses: char0n/swagger-editor-validate@v1
with:
definition-file: openapi/task_execution_service.openapi.yaml
diff:
name: Show OpenAPI differences relative to target branch
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' }}
steps:
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: 14.x
- name: Check out head branch
uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
path: head
- name: Check out base branch
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.base.ref }}
path: base
- name: Get OpenAPI differences
id: openapi_diff
continue-on-error: true
run: |
log=$(npx openapi-diff head/openapi/task_execution_service.openapi.yaml base/openapi/task_execution_service.openapi.yaml)
if [ -n "$log" ]; then
echo "::set-output name=log_not_empty::true"
echo "$log" > openapi_diff.json
fi
- name: Upload log (if not empty)
if: steps.check_log.outputs.log_not_empty == 'true'
uses: actions/upload-artifact@v4
with:
name: openapi-diff-log
path: openapi_diff.json
diff-comment:
name: Create PR comment with OpenAPI diff log (if not empty)
runs-on: ubuntu-latest
needs: diff
if: needs.diff.outputs.log_not_empty == 'false'
permissions:
issues: write
steps:
- name: Download OpenAPI diff log
uses: actions/download-artifact@v4
with:
name: openapi-diff-log
- name: Create PR comment
uses: actions/github-script@v7
with:
script: |
const output = require('fs').readFileSync('openapi_diff.json', 'utf8');
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,  
body: '## OpenAPI diff:\n\n```json' + output + '```'
})