mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
The update yaml step _might_ cause changes that would affect the build file generation. Since `bazel run //:write_robotpy_update_yaml_files` runs them all at once, user that was using the github action to fix their python stuff would end up having to run it twice. By running the steps individually in series, this should be able to get it in one swoop.
156 lines
6.5 KiB
YAML
156 lines
6.5 KiB
YAML
name: Bazel
|
|
|
|
on: [pull_request, push]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- { name: "Linux System Core", classifier: "linuxsystemcore", os: ubuntu-24.04, container: "wpilib/systemcore-cross-ubuntu:2027-24.04", action: "build" }
|
|
- { name: "Linux System Core Debug", classifier: "linuxsystemcoredebug", os: ubuntu-24.04, container: "wpilib/systemcore-cross-ubuntu:2027-24.04", action: "build" }
|
|
- { name: "Linux System Core Static", classifier: "linuxsystemcorestatic", os: ubuntu-24.04, container: "wpilib/systemcore-cross-ubuntu:2027-24.04", action: "build" }
|
|
- { name: "Linux System Core Static Debug", classifier: "linuxsystemcorestaticdebug", os: ubuntu-24.04, container: "wpilib/systemcore-cross-ubuntu:2027-24.04", action: "build" }
|
|
- { name: "Linux x86-64", classifier: "linuxx86-64,headers,sources", os: ubuntu-24.04, container: "wpilib/systemcore-cross-ubuntu:2027-24.04", action: "test" }
|
|
- { name: "Linux x86-64 Debug", classifier: "linuxx86-64debug", os: ubuntu-24.04, container: "wpilib/systemcore-cross-ubuntu:2027-24.04", action: "test" }
|
|
- { name: "Linux x86-64 Static", classifier: "linuxx86-64static", os: ubuntu-24.04, container: "wpilib/systemcore-cross-ubuntu:2027-24.04", action: "test" }
|
|
- { name: "Linux x86-64 Static Debug", classifier: "linuxx86-64staticdebug", os: ubuntu-24.04, container: "wpilib/systemcore-cross-ubuntu:2027-24.04", action: "test" }
|
|
|
|
- { name: "macOS", classifier: "osxuniversal,osxuniversaldebug,headers,sources,osxuniversalstatic,osxuniversalstaticdebug,linuxsystemcore,linuxsystemcoredebug,linuxsystemcorestatic,linuxsystemcorestaticdebug", os: macOS-15, action: "test" }
|
|
|
|
- { name: "Windows x86-64", classifier: "windowsx86-64,windowsx86-64debug,headers,sources", os: windows-2022, action: "test" }
|
|
- { name: "Windows x86-64 Static", classifier: "windowsx86-64static,windowsx86-64staticdebug", os: windows-2022, action: "test" }
|
|
|
|
- { name: "Windows ARM64", classifier: "windowsarm64,windowsarm64debug", os: windows-2022, action: "build" }
|
|
- { name: "Windows ARM64 Static", classifier: "windowsarm64static,windowsarm64staticdebug", os: windows-2022, action: "build" }
|
|
|
|
- { name: "Windows System Core", classifier: "linuxsystemcore,linuxsystemcoredebug", os: windows-2022, action: "build" }
|
|
- { name: "Windows System Core Static", classifier: "linuxsystemcorestatic,linuxsystemcorestaticdebug", os: windows-2022, action: "build" }
|
|
|
|
name: "${{ matrix.action == 'test' && 'Test' || 'Build' }} ${{ matrix.name }}"
|
|
runs-on: ${{ matrix.os }}
|
|
container: ${{ matrix.container }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with: { fetch-depth: 0 }
|
|
|
|
- if: matrix.os == 'windows-2022' || matrix.os == 'macOS-15'
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: 21
|
|
architecture: x64
|
|
|
|
- if: matrix.os == 'ubuntu-24.04'
|
|
uses: bazelbuild/setup-bazelisk@v3
|
|
|
|
- id: Setup_bazel_remote
|
|
uses: ./.github/actions/setup-bazel-remote
|
|
with:
|
|
username: ${{ secrets.BAZEL_CACHE_USERNAME }}
|
|
password: ${{ secrets.BAZEL_CACHE_PASSWORD }}
|
|
|
|
- if: matrix.os == 'ubuntu-24.04'
|
|
uses: bazel-contrib/setup-bazel@0.15.0
|
|
with:
|
|
bazelisk-cache: true
|
|
repository-cache: true
|
|
bazelisk-version: 1.x
|
|
|
|
- name: bazel ${{ matrix.action }}
|
|
run: |
|
|
if [[ "${{ matrix.os }}" == "windows-2022" ]]; then
|
|
bazel --output_user_root=C:\\bazelroot ${{ matrix.action }} ... --config=ci -c opt --repo_env=WPI_PUBLISH_CLASSIFIER_FILTER='${{ matrix.classifier }}'
|
|
elif [[ "${{ matrix.os }}" == "macOS-15" ]]; then
|
|
bazel ${{ matrix.action }} ... --config=ci -c opt --nojava_header_compilation --repo_env=WPI_PUBLISH_CLASSIFIER_FILTER='${{ matrix.classifier }}'
|
|
else
|
|
bazel ${{ matrix.action }} ... --config=ci -c opt --repo_env=WPI_PUBLISH_CLASSIFIER_FILTER='${{ matrix.classifier }}'
|
|
fi
|
|
shell: bash
|
|
|
|
- name: Free Space
|
|
if: always()
|
|
shell: bash
|
|
run: |
|
|
if [[ "${{ matrix.os }}" == "windows-2022" ]]; then
|
|
fsutil volume diskfree C:
|
|
else
|
|
df -h /
|
|
fi
|
|
|
|
buildifier:
|
|
name: "buildifier"
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- name: Set up Go 1.15.x
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
cache: false
|
|
go-version: 1.15.x
|
|
id: go
|
|
|
|
- name: Install Buildifier
|
|
run: |
|
|
cd $(mktemp -d)
|
|
GO111MODULE=on go get github.com/bazelbuild/buildtools/buildifier@6.0.0
|
|
|
|
- uses: actions/checkout@v4
|
|
with: { fetch-depth: 0 }
|
|
|
|
- name: Run buildifier
|
|
run: buildifier -warnings all --lint=fix -r .
|
|
|
|
- name: Check Output
|
|
run: git --no-pager diff --exit-code HEAD
|
|
|
|
- name: Generate diff
|
|
run: git diff HEAD > bazel-lint-fixes.patch
|
|
if: ${{ failure() }}
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.platform }}-bazel-lint-fixes
|
|
path: bazel-lint-fixes.patch
|
|
if: ${{ failure() }}
|
|
|
|
robotpy_pregeneration:
|
|
name: "Robotpy Pregeneration"
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with: { fetch-depth: 0 }
|
|
|
|
- id: Setup_build_buddy
|
|
uses: ./.github/actions/setup-build-buddy
|
|
with:
|
|
token: ${{ secrets.BUILDBUDDY_API_KEY }}
|
|
|
|
# You should ensure the headers are correct before trying to pregen files
|
|
- name: Test Scan Headers
|
|
run: bazel test //... -k --test_tag_filters=robotpy_scan_headers --build_tests_only
|
|
shell: bash
|
|
|
|
- name: Run yaml file generation
|
|
run: bazel run //:write_robotpy_update_yaml_files
|
|
|
|
- name: Run build file generation
|
|
run: bazel run //:write_robotpy_generated_pybind_files
|
|
|
|
- name: Check Output
|
|
run: git --no-pager diff --exit-code HEAD
|
|
|
|
- name: Generate diff
|
|
run: git diff HEAD > robotpy-pregeneration.patch
|
|
if: ${{ failure() }}
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.platform }}-robotpy-pregeneration-fixes
|
|
path: robotpy-pregeneration-fixes.patch
|
|
if: ${{ failure() }}
|