Skip to content

[choreolib] Java triggers overhaul #1364

[choreolib] Java triggers overhaul

[choreolib] Java triggers overhaul #1364

Workflow file for this run

name: ChoreoLib
on: [push, pull_request]
jobs:
build-docker:
strategy:
fail-fast: false
matrix:
include:
- container: wpilib/roborio-cross-ubuntu:2024-22.04
artifact-name: Athena
build-options: -Ponlylinuxathena
- container: wpilib/raspbian-cross-ubuntu:bullseye-22.04
artifact-name: Linux-arm32
build-options: -Ponlylinuxarm32
- container: wpilib/aarch64-cross-ubuntu:bullseye-22.04
artifact-name: Linux-arm64
build-options: -Ponlylinuxarm64
- container: wpilib/ubuntu-base:22.04
artifact-name: Linux-x86_64
build-options:
name: "Build C++ and Java / ${{ matrix.artifact-name }}"
runs-on: ubuntu-24.04
container: ${{ matrix.container }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- name: Fetch all history and metadata
run: |
git config --global --add safe.directory /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}
- name: Set version (release)
if: startsWith(github.ref, 'refs/tags/v')
working-directory: choreolib
run: sed -i "s/0.0.0/${GITHUB_REF##*v}/g" publish.gradle
- name: Build with Gradle
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
working-directory: choreolib
run: ./gradlew build ${{ matrix.build-options }}
- name: Build with Gradle (release)
if: startsWith(github.ref, 'refs/tags/v')
working-directory: choreolib
run: ./gradlew build ${{ matrix.build-options }} -PreleaseMode
- uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact-name }}
path: choreolib/build/allOutputs
build-host:
env:
MACOSX_DEPLOYMENT_TARGET: 13.3
strategy:
fail-fast: false
matrix:
include:
- os: windows-2022
artifact-name: Windows-x86_64
build-options:
# FIXME: Link failure on commands library
# - os: windows-2022
# artifact-name: Windows-aarch64
# build-options: -Pbuildwinarm64 -Ponlywindowsarm64
- os: macOS-13
artifact-name: macOS-x86_64
build-options:
- os: macOS-14
artifact-name: macOS-arm64
build-options:
name: "Build C++ and Java / ${{ matrix.artifact-name }}"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Fetch all history and metadata
run: git fetch --prune --unshallow
- uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: 17
- name: Set version (Windows release)
if: startsWith(matrix.os, 'windows') && startsWith(github.ref, 'refs/tags/v')
run: |
sed -i "s/0.0.0/${GITHUB_REF##*v}/g" publish.gradle
./gradlew spotlessApply # Undo line ending changes from sed
working-directory: choreolib
- name: Set version (macOS release)
if: startsWith(matrix.os, 'macOS') && startsWith(github.ref, 'refs/tags/v')
run: sed -i '' "s/0.0.0/${GITHUB_REF##*v}/g" publish.gradle
working-directory: choreolib
- name: Build with Gradle
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
working-directory: choreolib
run: ./gradlew build ${{ matrix.build-options }}
- name: Build with Gradle (release)
if: startsWith(github.ref, 'refs/tags/v')
working-directory: choreolib
run: ./gradlew build ${{ matrix.build-options }} -PreleaseMode
- uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact-name }}
path: choreolib/build/allOutputs
combine:
name: Combine
needs: [build-docker, build-host]
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
repository: wpilibsuite/build-tools
- 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
- uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: 17
- name: Combine
run: ./gradlew publish -Pthirdparty
working-directory: combiner
- uses: actions/upload-artifact@v4
with:
name: ChoreoLib-Maven
path: ~/releases
build-python:
name: "Build Python"
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: 3.12
- run: pip3 install build wheel pytest
- run: python3 -m build
working-directory: ./choreolib/py
- run: pip3 install --no-cache-dir dist/*.whl
working-directory: ./choreolib/py
- run: pytest
working-directory: ./choreolib/py
- uses: actions/upload-artifact@v4
with:
name: Python
path: ./choreolib/py/dist
pypi-publish:
name: Upload release to PyPI
runs-on: ubuntu-24.04
needs: [build-python]
if: github.repository_owner == 'SleipnirGroup' && startsWith(github.ref, 'refs/tags/v')
environment:
name: pypi
url: https://pypi.org/p/sleipnirgroup-choreolib
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v4
with:
path: dist
pattern: "Python"
merge-multiple: true
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1