mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-21 01:01:43 +00:00
This sets the workflow concurrency to 1 for all workflows. For PRs this means if you push an additional commit older jobs will be cancelled. The documentation workflow already only runs on tags or merges to main. For this, we cancel previous runs if they are to the same destination (tag or main) but still prevent 2 jobs from running at once if they are spawned from different refs.
169 lines
6.2 KiB
YAML
169 lines
6.2 KiB
YAML
name: Gradle
|
|
|
|
on: [pull_request, push]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build-docker:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- container: wpilib/roborio-cross-ubuntu:2022-18.04
|
|
artifact-name: Athena
|
|
build-options: "-Ponlylinuxathena"
|
|
- container: wpilib/raspbian-cross-ubuntu:10-18.04
|
|
artifact-name: Raspbian
|
|
build-options: "-Ponlylinuxraspbian"
|
|
- container: wpilib/aarch64-cross-ubuntu:bionic-18.04
|
|
artifact-name: Aarch64
|
|
build-options: "-Ponlylinuxaarch64bionic"
|
|
- container: wpilib/ubuntu-base:18.04
|
|
artifact-name: Linux
|
|
build-options: "-Dorg.gradle.jvmargs=-Xmx2g"
|
|
name: "Build - ${{ matrix.artifact-name }}"
|
|
runs-on: ubuntu-latest
|
|
container: ${{ matrix.container }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set release environment variable
|
|
run: echo "EXTRA_GRADLE_ARGS=-PreleaseMode" >> $GITHUB_ENV
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
- name: Build with Gradle
|
|
run: ./gradlew build -PbuildServer -PskipJavaFormat ${{ matrix.build-options }} ${{ env.EXTRA_GRADLE_ARGS }}
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: ${{ matrix.artifact-name }}
|
|
path: build/allOutputs
|
|
|
|
build-host:
|
|
env:
|
|
MACOSX_DEPLOYMENT_TARGET: 10.14
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: windows-2019
|
|
artifact-name: Win64
|
|
architecture: x64
|
|
- os: windows-2019
|
|
artifact-name: Win32
|
|
architecture: x86
|
|
- os: macOS-11
|
|
artifact-name: macOS
|
|
architecture: x64
|
|
name: "Build - ${{ matrix.artifact-name }}"
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-java@v1
|
|
with:
|
|
java-version: 11
|
|
architecture: ${{ matrix.architecture }}
|
|
- name: Import Developer ID Certificate
|
|
uses: wpilibsuite/import-signing-certificate@v1
|
|
with:
|
|
certificate-data: ${{ secrets.APPLE_CERTIFICATE_DATA }}
|
|
certificate-passphrase: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
|
|
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
|
|
if: |
|
|
matrix.artifact-name == 'macOS' && (github.repository_owner == 'wpilibsuite' &&
|
|
(github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')))
|
|
- name: Set Keychain Lock Timeout
|
|
run: security set-keychain-settings -lut 3600
|
|
if: |
|
|
matrix.artifact-name == 'macOS' && (github.repository_owner == 'wpilibsuite' &&
|
|
(github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')))
|
|
- name: Set release environment variable
|
|
run: echo "EXTRA_GRADLE_ARGS=-PreleaseMode" >> $GITHUB_ENV
|
|
shell: bash
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
- name: Build with Gradle
|
|
run: ./gradlew build -PbuildServer -PskipJavaFormat ${{ env.EXTRA_GRADLE_ARGS }}
|
|
- name: Sign Libraries with Developer ID
|
|
run: ./gradlew build -PbuildServer -PskipJavaFormat -PdeveloperID=${{ secrets.APPLE_DEVELOPER_ID }} ${{ env.EXTRA_GRADLE_ARGS }}
|
|
if: |
|
|
matrix.artifact-name == 'macOS' && (github.repository_owner == 'wpilibsuite' &&
|
|
(github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')))
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: ${{ matrix.artifact-name }}
|
|
path: build/allOutputs
|
|
|
|
build-documentation:
|
|
name: "Build - Documentation"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-java@v1
|
|
with:
|
|
java-version: 13
|
|
- name: Install libclang-9
|
|
run: sudo apt update && sudo apt install -y libclang-cpp9 libclang1-9
|
|
- name: Set release environment variable
|
|
run: echo "EXTRA_GRADLE_ARGS=-PreleaseMode" >> $GITHUB_ENV
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
- name: Build with Gradle
|
|
run: ./gradlew docs:zipDocs -PbuildServer ${{ env.EXTRA_GRADLE_ARGS }}
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: Documentation
|
|
path: docs/build/outputs
|
|
|
|
combine:
|
|
name: Combine
|
|
needs: [build-docker, build-host, build-documentation]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
repository: wpilibsuite/build-tools
|
|
- uses: actions/download-artifact@v2
|
|
with:
|
|
path: combiner/products/build/allOutputs
|
|
- name: Flatten Artifacts
|
|
run: rsync -a --delete combiner/products/build/allOutputs/*/* combiner/products/build/allOutputs/
|
|
- name: Check version number exists
|
|
run: |
|
|
cat combiner/products/build/allOutputs/version.txt
|
|
test -s combiner/products/build/allOutputs/version.txt
|
|
- uses: actions/setup-java@v1
|
|
with:
|
|
java-version: 11
|
|
- name: Combine
|
|
if: |
|
|
!startsWith(github.ref, 'refs/tags/v') &&
|
|
github.ref != 'refs/heads/main'
|
|
run: cd combiner && ./gradlew publish -Pallwpilib
|
|
- name: Combine (Master)
|
|
if: |
|
|
github.repository_owner == 'wpilibsuite' &&
|
|
github.ref == 'refs/heads/main'
|
|
run: cd combiner && ./gradlew publish -Pallwpilib
|
|
env:
|
|
RUN_AZURE_ARTIFACTORY_RELEASE: "TRUE"
|
|
ARTIFACTORY_PUBLISH_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
|
|
ARTIFACTORY_PUBLISH_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
|
|
- name: Combine (Release)
|
|
if: |
|
|
github.repository_owner == 'wpilibsuite' &&
|
|
startsWith(github.ref, 'refs/tags/v')
|
|
run: cd combiner && ./gradlew publish -Pallwpilib -PreleaseRepoPublish
|
|
env:
|
|
RUN_AZURE_ARTIFACTORY_RELEASE: "TRUE"
|
|
ARTIFACTORY_PUBLISH_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
|
|
ARTIFACTORY_PUBLISH_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: Maven
|
|
path: ~/releases
|