-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
430b28a
commit 2cd1c70
Showing
1 changed file
with
119 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
name: OpenAPI | ||
on: | ||
push: | ||
branches: | ||
- master | ||
pull_request: | ||
|
||
jobs: | ||
openapi-head: | ||
name: OpenAPI - HEAD | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v2 | ||
- name: Setup .NET Core | ||
uses: actions/setup-dotnet@v1 | ||
with: | ||
dotnet-version: '5.0.x' | ||
- name: Generate openapi.json | ||
run: dotnet test -c Release --filter "Jellyfin.Server.Integration.Tests.OpenApiSpecTests" | ||
- name: Upload openapi.json | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: openapi-head | ||
retention-days: 14 | ||
if-no-files-found: error | ||
path: tests/Jellyfin.Server.Integration.Tests/bin/Release/net5.0/openapi.json | ||
|
||
openapi-base: | ||
name: OpenAPI - BASE | ||
if: ${{ github.base_ref != '' }} | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v2 | ||
with: | ||
ref: ${{ github.base_ref }} | ||
- name: Setup .NET Core | ||
uses: actions/setup-dotnet@v1 | ||
with: | ||
dotnet-version: '5.0.x' | ||
- name: Generate openapi.json | ||
run: dotnet test -c Release --filter "Jellyfin.Server.Integration.Tests.OpenApiSpecTests" | ||
- name: Upload openapi.json | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: openapi-base | ||
retention-days: 14 | ||
if-no-files-found: error | ||
path: tests/Jellyfin.Server.Integration.Tests/bin/Release/net5.0/openapi.json | ||
|
||
openapi-diff: | ||
name: OpenAPI - Difference | ||
if: ${{ github.event_name == 'pull_request' }} | ||
runs-on: ubuntu-latest | ||
needs: | ||
- openapi-head | ||
- openapi-base | ||
steps: | ||
- name: Download openapi-head | ||
uses: actions/download-artifact@v2 | ||
with: | ||
name: openapi-head | ||
path: openapi-head | ||
- name: Download openapi-base | ||
uses: actions/download-artifact@v2 | ||
with: | ||
name: openapi-base | ||
path: openapi-base | ||
- name: Workaround openapi-diff issue | ||
run: | | ||
sed -i 's/"allOf"/"oneOf"/g' openapi-head/openapi.json | ||
sed -i 's/"allOf"/"oneOf"/g' openapi-base/openapi.json | ||
- name: Calculate OpenAPI difference | ||
uses: docker://openapitools/openapi-diff | ||
continue-on-error: true | ||
with: | ||
args: --fail-on-changed --markdown openapi-changes.md openapi-base/openapi.json openapi-head/openapi.json | ||
- id: read-diff | ||
name: Read openapi-diff output | ||
run: | | ||
body=$(cat openapi-changes.md) | ||
body="${body//'%'/'%25'}" | ||
body="${body//$'\n'/'%0A'}" | ||
body="${body//$'\r'/'%0D'}" | ||
echo ::set-output name=body::$body | ||
- name: Find difference comment | ||
uses: peter-evans/find-comment@v1 | ||
id: find-comment | ||
with: | ||
issue-number: ${{ github.event.pull_request.number }} | ||
direction: last | ||
body-includes: openapi-diff-workflow-comment | ||
- name: Reply or edit difference comment (changed) | ||
uses: peter-evans/create-or-update-comment@v1.4.5 | ||
if: ${{ steps.read-diff.outputs.body != '' }} | ||
with: | ||
issue-number: ${{ github.event.pull_request.number }} | ||
comment-id: ${{ steps.find-comment.outputs.comment-id }} | ||
edit-mode: replace | ||
body: | | ||
<!--openapi-diff-workflow-comment--> | ||
<details> | ||
<summary>Changes in OpenAPI specification found. Expand to see details.</summary> | ||
${{ steps.read-diff.outputs.body }} | ||
</details> | ||
- name: Edit difference comment (unchanged) | ||
uses: peter-evans/create-or-update-comment@v1.4.5 | ||
if: ${{ steps.read-diff.outputs.body == '' && steps.find-comment.outputs.comment-id != '' }} | ||
with: | ||
issue-number: ${{ github.event.pull_request.number }} | ||
comment-id: ${{ steps.find-comment.outputs.comment-id }} | ||
edit-mode: replace | ||
body: | | ||
<!--openapi-diff-workflow-comment--> | ||
No changes to OpenAPI specification found. See history of this comment for previous changes. |