name: Lint and Format on: pull_request: push: branches-ignore: - main concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} cancel-in-progress: true jobs: validation: name: "Validation" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: gradle/actions/wrapper-validation@v4 wpiformat: name: "wpiformat" runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Fetch all history and metadata run: | git checkout -b pr git branch -f main origin/main - name: Set up Python 3.12 uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install wpiformat run: | python -m venv ${{ runner.temp }}/wpiformat ${{ runner.temp }}/wpiformat/bin/pip3 install wpiformat==2025.33 - name: Run run: ${{ runner.temp }}/wpiformat/bin/wpiformat - name: Check output run: git --no-pager diff --exit-code HEAD - name: Generate diff run: git diff HEAD > wpiformat-fixes.patch if: ${{ failure() }} - uses: actions/upload-artifact@v4 with: name: wpiformat fixes path: wpiformat-fixes.patch if: ${{ failure() }} - name: Write to job summary run: | echo '```diff' >> $GITHUB_STEP_SUMMARY cat wpiformat-fixes.patch >> $GITHUB_STEP_SUMMARY echo '' >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY if: ${{ failure() }} tidy: name: "clang-tidy" runs-on: ubuntu-22.04 needs: [validation] container: wpilib/ubuntu-base:22.04 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Fetch all history and metadata run: | git config --global --add safe.directory /__w/allwpilib/allwpilib git checkout -b pr git branch -f main origin/main - name: Set up Python 3.12 uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install wpiformat run: | python -m venv ${{ runner.temp }}/wpiformat ${{ runner.temp }}/wpiformat/bin/pip3 install wpiformat==2025.33 - name: Create compile_commands.json run: | ./gradlew generateCompileCommands -Ptoolchain-optional-roboRio ./.github/workflows/fix_compile_commands.py build/TargetedCompileCommands/linuxx86-64release/compile_commands.json ./.github/workflows/fix_compile_commands.py build/TargetedCompileCommands/linuxx86-64debug/compile_commands.json - name: List changed files run: ${{ runner.temp }}/wpiformat/bin/wpiformat -list-changed-files - name: Run clang-tidy release run: ${{ runner.temp }}/wpiformat/bin/wpiformat -no-format -tidy-changed -compile-commands=build/TargetedCompileCommands/linuxx86-64release -vv - name: Run clang-tidy debug run: ${{ runner.temp }}/wpiformat/bin/wpiformat -no-format -tidy-changed -compile-commands=build/TargetedCompileCommands/linuxx86-64debug -vv javaformat: name: "Java format" runs-on: ubuntu-22.04 needs: [validation] container: wpilib/ubuntu-base:22.04 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Fetch all history and metadata run: | git config --global --add safe.directory /__w/allwpilib/allwpilib git checkout -b pr git branch -f main origin/main - name: Run Java format run: ./gradlew javaFormat spotbugsMain spotbugsTest spotbugsDev - name: Check output run: git --no-pager diff --exit-code HEAD - name: Generate diff run: git diff HEAD > javaformat-fixes.patch if: ${{ failure() }} - uses: actions/upload-artifact@v4 with: name: javaformat fixes path: javaformat-fixes.patch if: ${{ failure() }} - name: Write to job summary run: | echo '```diff' >> $GITHUB_STEP_SUMMARY cat javaformat-fixes.patch >> $GITHUB_STEP_SUMMARY echo '' >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY if: ${{ failure() }} documentation: name: "Documentation" runs-on: ubuntu-22.04 needs: [validation] steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: 21 - name: Build with Gradle run: ./gradlew docs:zipDocs -PbuildServer -PdocWarningsAsErrors ${{ env.EXTRA_GRADLE_ARGS }}