ci: add conditional job for OpenAPI linting based on file changes; update README with workflow details
This commit is contained in:
@@ -7,7 +7,50 @@ on:
|
||||
branches: [main, master]
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
openapi: ${{ steps.openapi.outputs.changed }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- id: openapi
|
||||
name: Detect OpenAPI-related file changes
|
||||
run: |
|
||||
set -euo pipefail
|
||||
PATHS="docs/openapi.yaml redocly.yaml"
|
||||
changed=false
|
||||
|
||||
if [ "${{ github.event_name }}" = "pull_request" ]; then
|
||||
base="${{ github.event.pull_request.base.sha }}"
|
||||
head="${{ github.event.pull_request.head.sha }}"
|
||||
if git diff --name-only "$base" "$head" -- $PATHS | grep -q .; then
|
||||
changed=true
|
||||
fi
|
||||
else
|
||||
before="${{ github.event.before }}"
|
||||
after="${{ github.sha }}"
|
||||
if [ -n "$before" ] && [ "$before" != "0000000000000000000000000000000000000000" ]; then
|
||||
if git diff --name-only "$before" "$after" -- $PATHS | grep -q .; then
|
||||
changed=true
|
||||
fi
|
||||
elif git rev-parse --verify HEAD~1 >/dev/null 2>&1; then
|
||||
if git diff --name-only HEAD~1 HEAD -- $PATHS | grep -q .; then
|
||||
changed=true
|
||||
fi
|
||||
else
|
||||
# Нет родителя (первый коммит / тонкий clone) — линт OpenAPI выполняем один раз
|
||||
changed=true
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "changed=$changed" >> "$GITHUB_OUTPUT"
|
||||
echo "OpenAPI lint will run: $changed"
|
||||
|
||||
openapi:
|
||||
needs: [changes]
|
||||
if: needs.changes.outputs.openapi == 'true'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
Reference in New Issue
Block a user