Feature/5564 dependency updates #6
Workflow file for this run
This file contains hidden or 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: API Spec review | |
| env: | |
| COMPOSE_USER: root | |
| on: | |
| pull_request: | |
| jobs: | |
| api-spec-updated: | |
| name: Ensure committed API specification is up to date | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 2 | |
| - name: Create docker network | |
| run: | | |
| docker network create frontend | |
| - name: Composer install | |
| run: | | |
| docker compose run --rm phpfpm composer install | |
| - name: Export API specification | |
| run: | | |
| docker compose run --rm phpfpm bin/console api:openapi:export --yaml --output=public/api-spec-v1.yaml --no-interaction | |
| - name: Check for changes in specification | |
| id: git-diff-spec | |
| continue-on-error: true | |
| run: git diff --diff-filter=ACMRT --exit-code public/api-spec-v1.yaml | |
| - name: Comment PR | |
| if: steps.git-diff-spec.outcome == 'failure' | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| echo '## 🛑 Exported API specification file not up to date' > var/comment.md | |
| echo '' >> var/comment.md | |
| echo 'Please run `composer update-api-spec` to export the API specification. Then commit and push the changes.' >> var/comment.md | |
| gh pr comment ${{ github.event.pull_request.number }} --body-file var/comment.md --create-if-none --edit-last | |
| - name: Fail job, api spec is not up to date | |
| if: steps.git-diff-spec.outcome == 'failure' | |
| run: | | |
| exit 1 | |
| detect-breaking-changes: | |
| name: Detect breaking changes in API specification | |
| runs-on: ubuntu-latest | |
| needs: [api-spec-updated] | |
| steps: | |
| - name: Check out BASE rev | |
| uses: actions/checkout@v5 | |
| with: | |
| ref: ${{ github.base_ref }} | |
| path: base | |
| - name: Check out HEAD rev | |
| uses: actions/checkout@v5 | |
| with: | |
| ref: ${{ github.head_ref }} | |
| path: head | |
| - name: Run OpenAPI Changed (from HEAD rev) | |
| id: api-changed | |
| continue-on-error: true | |
| uses: docker://openapitools/openapi-diff:latest | |
| with: | |
| args: --fail-on-changed base/public/api-spec-v1.yaml head/public/api-spec-v1.yaml --markdown api-spec-changed.md | |
| - name: Run OpenAPI Incompatible (from HEAD rev) | |
| id: api-incompatible | |
| continue-on-error: true | |
| uses: docker://openapitools/openapi-diff:latest | |
| with: | |
| args: --fail-on-incompatible base/public/api-spec-v1.yaml head/public/api-spec-v1.yaml --markdown api-spec-incompatible.md | |
| - name: Comment PR with no changes | |
| if: steps.api-changed.outcome == 'success' && steps.api-incompatible.outcome == 'success' | |
| working-directory: head | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| gh pr comment ${{ github.event.pull_request.number }} --body "✅ **No changes detected in API specification**" --create-if-none --edit-last | |
| - name: Comment PR with non-breaking changes | |
| if: steps.api-changed.outcome == 'failure' && steps.api-incompatible.outcome == 'success' | |
| working-directory: head | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| echo "## ⚠️ Non-Breaking changes detected in API specification" > ../comment.md | |
| echo "" >> ../comment.md | |
| cat ../api-spec-changed.md >> ../comment.md | |
| gh pr comment ${{ github.event.pull_request.number }} --body-file ../comment.md --create-if-none --edit-last | |
| - name: Comment PR with breaking changes | |
| if: steps.api-incompatible.outcome == 'failure' | |
| working-directory: head | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| echo "## 🛑 Breaking changes detected in API specification" > ../comment.md | |
| echo "" >> ../comment.md | |
| cat ../api-spec-incompatible.md >> ../comment.md | |
| gh pr comment ${{ github.event.pull_request.number }} --body-file ../comment.md --create-if-none --edit-last | |
| - name: Fail if breaking changes detected | |
| if: steps.api-incompatible.outcome == 'failure' | |
| run: | | |
| exit 1 |