Skip to content

Deploy to Maven

Deploy to Maven #7

Workflow file for this run

name: Deploy to Maven
on:
push:
tags:
- 'v*'
workflow_dispatch:
jobs:
validation:
name: "Validation"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: gradle/actions/wrapper-validation@v4
build-docker:
needs: [validation]
strategy:
fail-fast: false
matrix:
include:
- container: wpilib/roborio-cross-ubuntu:2025-22.04
artifact-name: Athena
build-options: "-Ponlylinuxathena"
- container: wpilib/raspbian-cross-ubuntu:bookworm-22.04
artifact-name: Arm32
build-options: "-Ponlylinuxarm32"
- container: wpilib/aarch64-cross-ubuntu:bookworm-22.04
artifact-name: Arm64
build-options: "-Ponlylinuxarm64"
- container: wpilib/ubuntu-base:22.04
artifact-name: Linux
build-options: ""
name: "Build - ${{ matrix.artifact-name }}"
runs-on: ubuntu-22.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: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: false
- name: Build with Gradle
run: ./gradlew build ${{ matrix.build-options }}
- name: Publish to Local Maven
run: ./gradlew publish ${{ matrix.build-options }}
- uses: actions/upload-artifact@v4
with:
name: maven-${{ matrix.artifact-name }}
path: build/repos/releases
build-host:
needs: [validation]
env:
MACOSX_DEPLOYMENT_TARGET: 13.3
strategy:
fail-fast: false
matrix:
include:
- os: windows-2022
artifact-name: Win64
architecture: x64
- os: macos-14
artifact-name: macOS
architecture: aarch64
name: "Build - ${{ 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
architecture: ${{ matrix.architecture }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: false
- name: Build with Gradle
run: ./gradlew build -Pbuildalldesktop
- name: Publish to Local Maven
run: ./gradlew publish -Pbuildalldesktop
- uses: actions/upload-artifact@v4
with:
name: maven-${{ matrix.artifact-name }}
path: build/repos/releases
combine:
name: Combine Maven Repositories
needs: [build-docker, build-host]
runs-on: ubuntu-22.04
steps:
- uses: actions/download-artifact@v4
with:
pattern: maven-*
path: maven-artifacts
- name: Combine Maven Repositories
run: |
mkdir -p maven-combined
rsync -a maven-artifacts/*/* maven-combined/
- uses: actions/upload-artifact@v4
with:
name: Maven
path: maven-combined
publish-to-r2:
name: Publish to R2
needs: [combine]
runs-on: ubuntu-22.04
environment: main
steps:
- uses: actions/download-artifact@v4
with:
name: Maven
path: maven-repo
- name: Deploy to R2
uses: ryand56/r2-upload-action@latest
with:
r2-account-id: ${{ secrets.R2_ACCOUNT_ID }}
r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }}
r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }}
r2-bucket: ${{ secrets.R2_BUCKET_NAME }}
source-dir: maven-repo
destination-dir: ./
- name: Summary
run: |
echo "Deployed to R2 bucket at $(date)"
echo "Maven repository URL: ${{ secrets.R2_PUBLIC_URL }}"