Skip to content

Build PPLib Release #41

Build PPLib Release

Build PPLib Release #41

name: Build PPLib Release
on:
workflow_dispatch:
inputs:
version:
type: string
description: The full version string, i.e. 2024.0.0-alpha-1 or 2024.1.1
required: true
jobs:
build-docker:
strategy:
fail-fast: false
matrix:
include:
- container: wpilib/roborio-cross-ubuntu:2024-22.04
artifact-name: PPLib-Athena
build-options: "-Ponlylinuxathena"
- container: wpilib/ubuntu-base:22.04
artifact-name: PPLib-Linux
build-options: "-Ponlylinuxx86-64"
- container: wpilib/raspbian-cross-ubuntu:bullseye-22.04
artifact-name: PPLib-Arm32
build-options: "-Ponlylinuxarm32"
- container: wpilib/aarch64-cross-ubuntu:bullseye-22.04
artifact-name: PPLib-Arm64
build-options: "-Ponlylinuxarm64"
name: "[PPLib] Build - ${{ matrix.artifact-name }}"
runs-on: ubuntu-22.04
container: ${{ matrix.container }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Grant execute permission for gradlew
run: chmod +x gradlew
working-directory: ./pathplannerlib
- name: Set version
run: sed -i "s/0.0.0/${{ github.event.inputs.version }}/g" publish.gradle
working-directory: ./pathplannerlib
- name: Ensure spotless is applied
run: ./gradlew spotlessApply
working-directory: ./pathplannerlib
- name: Build
run: ./gradlew build -PreleaseMode ${{ matrix.build-options }}
working-directory: ./pathplannerlib
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact-name }}
path: pathplannerlib/build/allOutputs
build-host:
strategy:
fail-fast: false
matrix:
include:
- os: windows-2022
artifact-name: PPLib-Win64
os-name: windows
- os: macos-15
artifact-name: PPLib-macOS
os-name: macos
name: "[PPLib] Build - ${{ matrix.artifact-name }}"
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'zulu'
- name: Set version
if: ${{ matrix.os-name != 'macos' }}
run: sed -i "s/0.0.0/${{ github.event.inputs.version }}/g" publish.gradle
working-directory: ./pathplannerlib
- name: Set version (mac)
if: ${{ matrix.os-name == 'macos' }}
run: sed -i '' "s/0.0.0/${{ github.event.inputs.version }}/g" publish.gradle
working-directory: ./pathplannerlib
- name: Ensure spotless is applied
run: ./gradlew spotlessApply
working-directory: ./pathplannerlib
- name: Build
run: ./gradlew build -Pbuildalldesktop -PreleaseMode
working-directory: ./pathplannerlib
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact-name }}
path: pathplannerlib/build/allOutputs
combine:
name: "[PPLib] Combine"
needs: [build-docker, build-host]
runs-on: ubuntu-22.04
steps:
- name: Checkout build-tools
uses: actions/checkout@v4
with:
repository: wpilibsuite/build-tools
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: combiner/products/build/allOutputs
- name: Flatten Artifacts
run: rsync -a --delete combiner/products/build/allOutputs/*/* combiner/products/build/allOutputs/
- name: Setup java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'zulu'
- name: Combine
run: ./gradlew publish -Pthirdparty
working-directory: combiner
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: PPLib-Maven-v${{ github.event.inputs.version }}
path: ~/releases