123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- name: 📊 Static Checks
- on:
- workflow_call:
- jobs:
- static-checks:
- name: Code style, file formatting, and docs
- runs-on: ubuntu-24.04
- timeout-minutes: 30
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 2
- - name: Install APT dependencies
- run: |
- sudo apt install -y libxml2-utils
- - name: Install Python dependencies and general setup
- run: |
- pip3 install pytest==7.1.2
- git config diff.wsErrorHighlight all
- - name: Get changed files
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- if [ "${{ github.event_name }}" == "pull_request" ]; then
- files=$(git diff-tree --no-commit-id --name-only -r HEAD^1..HEAD 2> /dev/null || true)
- elif [ "${{ github.event_name }}" == "push" -a "${{ github.event.forced }}" == "false" -a "${{ github.event.created }}" == "false" ]; then
- files=$(git diff-tree --no-commit-id --name-only -r ${{ github.event.before }}..${{ github.event.after }} 2> /dev/null || true)
- fi
- echo "$files" >> changed.txt
- cat changed.txt
- files=$(echo "$files" | grep -v 'thirdparty' | xargs -I {} sh -c 'echo "\"./{}\""' | tr '\n' ' ')
- echo "CHANGED_FILES=$files" >> $GITHUB_ENV
- # This needs to happen before Python and npm execution; it must happen before any extra files are written.
- - name: .gitignore checks (gitignore_check.sh)
- run: |
- bash ./misc/scripts/gitignore_check.sh
- - name: Style checks via pre-commit
- uses: pre-commit/action@v3.0.1
- with:
- extra_args: --files ${{ env.CHANGED_FILES }}
- - name: Python builders checks via pytest
- run: |
- pytest ./tests/python_build
- - name: Class reference schema checks
- run: |
- xmllint --quiet --noout --schema doc/class.xsd doc/classes/*.xml modules/*/doc_classes/*.xml platform/*/doc_classes/*.xml
- - name: Run C compiler on `gdextension_interface.h`
- run: |
- gcc -c core/extension/gdextension_interface.h
|