From a0efc9ca31a5831486a01b6fb36a13f007f43cdd Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Sat, 8 Jun 2024 09:55:07 -0700 Subject: [PATCH] [ci] Add workflow to build java tools for PRs (#6698) This can catch breaking changes earlier. - Builds linux only for speed - Builds and publishes artifacts in this file as it was actually faster then reusing the artifacts from the gradle file as those need the combiner run on them. It uploads the artifacts to Actions with a 1 day retention, because that allows the tools to be built in parallel, which overall sped things up. This also only allows relevant tasks in wpilib to be run - The tool builds are uploaded with a shorter retention time in case someone wants to do more extensive tests. --- .github/workflows/tools.yml | 144 ++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 .github/workflows/tools.yml 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