chore(deps): update ci dependencies #931
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: OpenAPI | |
on: | |
push: | |
branches: | |
- master | |
pull_request_target: | |
permissions: {} | |
jobs: | |
openapi-head: | |
name: OpenAPI - HEAD | |
runs-on: ubuntu-latest | |
permissions: read-all | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
- name: Setup .NET | |
uses: actions/setup-dotnet@3447fd6a9f9e57506b15f895c5b76d3b197dc7c2 # v3.2.0 | |
with: | |
dotnet-version: '7.0.x' | |
- name: Generate openapi.json | |
run: dotnet test tests/Jellyfin.Server.Integration.Tests/Jellyfin.Server.Integration.Tests.csproj -c Release --filter "Jellyfin.Server.Integration.Tests.OpenApiSpecTests" | |
- name: Upload openapi.json | |
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 | |
with: | |
name: openapi-head | |
retention-days: 14 | |
if-no-files-found: error | |
path: tests/Jellyfin.Server.Integration.Tests/bin/Release/net7.0/openapi.json | |
openapi-base: | |
name: OpenAPI - BASE | |
if: ${{ github.base_ref != '' }} | |
runs-on: ubuntu-latest | |
permissions: read-all | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
fetch-depth: 0 | |
- name: Checkout common ancestor | |
run: | | |
git remote add upstream https://github.com/${{ github.event.pull_request.base.repo.full_name }} | |
git -c protocol.version=2 fetch --prune --progress --no-recurse-submodules upstream +refs/heads/*:refs/remotes/upstream/* +refs/tags/*:refs/tags/* | |
ANCESTOR_REF=$(git merge-base upstream/${{ github.base_ref }} origin/${{ github.head_ref }}) | |
git checkout --progress --force $ANCESTOR_REF | |
- name: Setup .NET | |
uses: actions/setup-dotnet@3447fd6a9f9e57506b15f895c5b76d3b197dc7c2 # v3.2.0 | |
with: | |
dotnet-version: '7.0.x' | |
- name: Generate openapi.json | |
run: dotnet test tests/Jellyfin.Server.Integration.Tests/Jellyfin.Server.Integration.Tests.csproj -c Release --filter "Jellyfin.Server.Integration.Tests.OpenApiSpecTests" | |
- name: Upload openapi.json | |
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 | |
with: | |
name: openapi-base | |
retention-days: 14 | |
if-no-files-found: error | |
path: tests/Jellyfin.Server.Integration.Tests/bin/Release/net7.0/openapi.json | |
openapi-diff: | |
permissions: | |
pull-requests: write # to create or update comment (peter-evans/create-or-update-comment) | |
name: OpenAPI - Difference | |
if: ${{ github.event_name == 'pull_request_target' }} | |
runs-on: ubuntu-latest | |
needs: | |
- openapi-head | |
- openapi-base | |
steps: | |
- name: Download openapi-head | |
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 | |
with: | |
name: openapi-head | |
path: openapi-head | |
- name: Download openapi-base | |
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 | |
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@a54c31d7fa095754bfef525c0c8e5e5674c4b4b1 # v2.4.0 | |
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@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0 | |
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@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0 | |
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. |