diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml new file mode 100644 index 0000000000..94a3d70c5a --- /dev/null +++ b/.github/workflows/tools.yml @@ -0,0 +1,144 @@ +name: Tools + +on: [pull_request, push] + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +env: + YEAR: 2024 + +jobs: + build-artifacts: + name: "Build - WPILib" + runs-on: ubuntu-22.04 + env: + DISPLAY: ':10' + steps: + - name: Free Disk Space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: false + android: true + dotnet: true + haskell: true + large-packages: false + docker-images: false + swap-storage: false + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Build WPILib with Gradle + uses: addnab/docker-run-action@v3 + with: + image: wpilib/roborio-cross-ubuntu:2024-22.04 + options: -v ${{ github.workspace }}:/work -w /work -e GITHUB_REF -e CI -e DISPLAY + run: df . && rm -f semicolon_delimited_script && ./gradlew :wpilibc:publish :wpilibj:publish :wpilibNewCommands:publish :hal:publish :cameraserver:publish :ntcore:publish :cscore:publish :wpimath:publish :wpinet:publish :wpiutil:publish :apriltag:publish :wpiunits:publish :simulation:halsim_gui:publish :simulation:halsim_ds_socket:publish -x test -x Javadoc -x doxygen --build-cache && cp -r /root/releases/maven/development /work + - uses: actions/upload-artifact@v4 + with: + name: MavenArtifacts + path: | + development + retention-days: 1 + + Robotbuilder: + name: "Build - RobotBuilder" + needs: [build-artifacts] + runs-on: ubuntu-22.04 + env: + DISPLAY: ':10' + steps: + - uses: actions/checkout@v4 + with: + repository: wpilibsuite/robotbuilder + fetch-depth: 0 + - uses: actions/download-artifact@v4 + with: + name: MavenArtifacts + - name: Patch RobotBuilder to use local development + run: cd src/main/resources/export && echo "wpi.maven.useLocal = false" >> java/build.gradle && echo "wpi.maven.useFrcMavenLocalDevelopment = true" >> java/build.gradle && echo "wpi.versions.wpilibVersion = '$YEAR.424242.+'" >> java/build.gradle && echo "wpi.versions.wpimathVersion = '$YEAR.424242.+'" >> java/build.gradle && echo "wpi.maven.useLocal = false" >> cpp/build.gradle && echo "wpi.maven.useFrcMavenLocalDevelopment = true" >> cpp/build.gradle && echo "wpi.versions.wpilibVersion = '$YEAR.424242.+'" >> cpp/build.gradle && echo "wpi.versions.wpimathVersion = '$YEAR.424242.+'" >> cpp/build.gradle + - name: Install and run xvfb + run: sudo apt-get update && sudo apt-get install -y xvfb && Xvfb $DISPLAY & + - name: Move artifacts + run: mkdir -p ~/releases/maven/development && cp -r edu ~/releases/maven/development + - uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: 'temurin' + - name: Build RobotBuilder with Gradle + run: ./gradlew build test --tests 'robotbuilder.exporters.*' -x htmlSanityCheck -PbuildServer -PreleaseMode ; cat build/test-results/test/TEST-robotbuilder.exporters.*.xml ; + - name: Summarize RobotBuilder Test Results + uses: EnricoMi/publish-unit-test-result-action@v2 + if: always() + with: + files: | + build/test-results/test/TEST*.xml + - uses: actions/upload-artifact@v4 + if: always() + with: + name: TestResults + path: | + build/reports/ + - uses: actions/upload-artifact@v4 + with: + name: RobotBuilder Build + path: | + build/libs/ + retention-days: 7 + + Shuffleboard: + name: "Build - Shuffleboard" + needs: [build-artifacts] + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + with: + repository: wpilibsuite/shuffleboard + fetch-depth: 0 + - uses: actions/download-artifact@v4 + with: + name: MavenArtifacts + - uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: 'temurin' + - name: Move artifacts + run: mkdir -p ~/releases/maven/development && cp -r edu ~/releases/maven/development + - name: Install dependencies + run: sudo apt-get install -y libgtk2.0-0 + - name: Build with Gradle + run: ./gradlew build -x Javadoc + - uses: actions/upload-artifact@v4 + with: + name: Shuffleboard Build + path: | + build/allOutputs/ + retention-days: 7 + + Pathweaver: + name: "Build - Pathweaver" + needs: [build-artifacts] + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + with: + repository: wpilibsuite/Pathweaver + fetch-depth: 0 + - uses: actions/download-artifact@v4 + with: + name: MavenArtifacts + - uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: 'temurin' + - name: Move artifacts + run: mkdir -p ~/releases/maven/development && cp -r edu ~/releases/maven/development + - name: Build with Gradle + run: ./gradlew build + - uses: actions/upload-artifact@v4 + with: + name: Pathweaver Build + path: | + build/allOutputs/ + retention-days: 7