mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-22 01:11:42 +00:00
418 lines
12 KiB
YAML
418 lines
12 KiB
YAML
# Gradle
|
|
# Build your Java projects and run tests with Gradle using a Gradle wrapper script.
|
|
# Add steps that analyze code, save build artifacts, deploy, and more:
|
|
# https://docs.microsoft.com/vsts/pipelines/languages/java
|
|
|
|
resources:
|
|
containers:
|
|
- container: wpilib2020
|
|
image: wpilib/roborio-cross-ubuntu:2020-18.04
|
|
- container: raspbian
|
|
image: wpilib/raspbian-cross-ubuntu:10-18.04
|
|
- container: aarch64
|
|
image: wpilib/aarch64-cross-ubuntu:bionic-18.04
|
|
- container: ubuntu
|
|
image: wpilib/ubuntu-base:18.04
|
|
|
|
variables:
|
|
- group: Artifactory-Package-Publish
|
|
|
|
trigger:
|
|
batch: true
|
|
branches:
|
|
include:
|
|
- master
|
|
|
|
stages:
|
|
- stage: Build
|
|
jobs:
|
|
- job: Linux_Arm
|
|
pool:
|
|
vmImage: 'Ubuntu 16.04'
|
|
|
|
container: wpilib2020
|
|
|
|
timeoutInMinutes: 0
|
|
|
|
steps:
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v')))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
publishJUnitResults: false
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-Ponlylinuxathena -PbuildServer'
|
|
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
publishJUnitResults: false
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-Ponlylinuxathena -PreleaseMode -PbuildServer'
|
|
|
|
- task: PublishPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Athena'
|
|
targetPath: 'build/allOutputs'
|
|
|
|
- job: Linux_Raspbian
|
|
pool:
|
|
vmImage: 'Ubuntu 16.04'
|
|
|
|
container: raspbian
|
|
|
|
timeoutInMinutes: 0
|
|
|
|
steps:
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v')))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
publishJUnitResults: true
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-Ponlylinuxraspbian -PbuildServer'
|
|
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
publishJUnitResults: true
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-Ponlylinuxraspbian -PreleaseMode -PbuildServer'
|
|
|
|
- task: PublishPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Raspbian'
|
|
targetPath: 'build/allOutputs'
|
|
|
|
- job: Linux_Aarch64
|
|
pool:
|
|
vmImage: 'Ubuntu 16.04'
|
|
|
|
container: aarch64
|
|
|
|
timeoutInMinutes: 0
|
|
|
|
steps:
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v')))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
publishJUnitResults: true
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-Ponlylinuxaarch64bionic -PbuildServer'
|
|
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
publishJUnitResults: true
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-Ponlylinuxaarch64bionic -PreleaseMode -PbuildServer'
|
|
|
|
- task: PublishPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Aarch64'
|
|
targetPath: 'build/allOutputs'
|
|
|
|
- job: Linux
|
|
pool:
|
|
vmImage: 'Ubuntu 16.04'
|
|
|
|
container: ubuntu
|
|
|
|
timeoutInMinutes: 0
|
|
|
|
steps:
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v')))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
publishJUnitResults: true
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-PbuildServer'
|
|
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
publishJUnitResults: true
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-PreleaseMode -PbuildServer'
|
|
|
|
- task: PublishPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Linux'
|
|
targetPath: 'build/allOutputs'
|
|
|
|
- job: Styleguide
|
|
pool:
|
|
vmImage: 'Ubuntu 16.04'
|
|
|
|
container: ubuntu
|
|
|
|
timeoutInMinutes: 0
|
|
|
|
steps:
|
|
- script: |
|
|
sudo pip3 install wpiformat
|
|
displayName: 'Install wpiformat'
|
|
- script: |
|
|
git checkout -b master
|
|
wpiformat -clang 6.0
|
|
displayName: 'Run wpiformat'
|
|
- script: |
|
|
# Ensure formatter made no changes
|
|
git --no-pager diff --exit-code HEAD
|
|
displayName: 'Check wpiformat Output'
|
|
|
|
- job: CMakeBuild
|
|
pool:
|
|
vmImage: 'Ubuntu 16.04'
|
|
|
|
container: wpilib2020
|
|
|
|
timeoutInMinutes: 0
|
|
|
|
steps:
|
|
- task: CMake@1
|
|
inputs:
|
|
cmakeArgs: '-DWITHOUT_ALLWPILIB=OFF ..'
|
|
- script: |
|
|
make -j3
|
|
workingDirectory: 'build'
|
|
displayName: 'Build'
|
|
|
|
- job: Windows_64_Bit
|
|
pool:
|
|
vmImage: 'windows-2019'
|
|
|
|
timeoutInMinutes: 0
|
|
steps:
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v')))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
jdkVersionOption: '1.11'
|
|
publishJUnitResults: true
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-PskipPMD -PbuildServer'
|
|
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
jdkVersionOption: '1.11'
|
|
publishJUnitResults: true
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-PskipPMD -PreleaseMode -PbuildServer'
|
|
|
|
- task: PublishPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Win64'
|
|
targetPath: 'build/allOutputs'
|
|
|
|
- job: Windows_32_Bit
|
|
pool:
|
|
vmImage: 'windows-2019'
|
|
|
|
timeoutInMinutes: 0
|
|
steps:
|
|
- powershell: |
|
|
mkdir build
|
|
$ProgressPreference = 'SilentlyContinue'
|
|
wget "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11/OpenJDK11U-jdk_x86-32_windows_hotspot_11.0.4_11.zip" -O "build\jdk.zip"
|
|
displayName: 'Download JDK'
|
|
- task: JavaToolInstaller@0
|
|
inputs:
|
|
jdkSourceOption: localDirectory
|
|
jdkFile: 'build/jdk.zip'
|
|
jdkDestinationDirectory: 'build/jdkinst'
|
|
jdkArchitectureOption: x86
|
|
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v')))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx1024m'
|
|
publishJUnitResults: true
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-PskipPMD -PbuildServer'
|
|
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx1024m'
|
|
publishJUnitResults: true
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-PskipPMD -PreleaseMode -PbuildServer'
|
|
|
|
- task: PublishPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Win32'
|
|
targetPath: 'build/allOutputs'
|
|
|
|
- job: Mac
|
|
pool:
|
|
vmImage: 'macOS-10.14'
|
|
|
|
timeoutInMinutes: 0
|
|
steps:
|
|
- script: |
|
|
mkdir build
|
|
export JAVA_HOME=`/usr/libexec/java_home -v 11`
|
|
displayName: 'Setup JDK'
|
|
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v')))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
jdkVersionOption: '1.11'
|
|
publishJUnitResults: true
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-PbuildServer'
|
|
|
|
- task: Gradle@2
|
|
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
|
|
inputs:
|
|
workingDirectory: ''
|
|
gradleWrapperFile: 'gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
jdkVersionOption: '1.11'
|
|
publishJUnitResults: true
|
|
testResultsFiles: '**/TEST-*.xml'
|
|
tasks: 'build'
|
|
options: '-PreleaseMode -PbuildServer'
|
|
|
|
- task: PublishPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Mac'
|
|
targetPath: 'build/allOutputs'
|
|
|
|
- stage: Combine
|
|
jobs:
|
|
- job: CombineJob
|
|
pool:
|
|
vmImage: 'macOS-10.14'
|
|
|
|
timeoutInMinutes: 0
|
|
|
|
steps:
|
|
- checkout: none
|
|
- script: |
|
|
git clone https://github.com/wpilibsuite/build-tools
|
|
displayName: 'Clone Combiner'
|
|
- task: DownloadPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Mac'
|
|
targetPath: 'build-tools/combiner/products/build/allOutputs'
|
|
- task: DownloadPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Win32'
|
|
targetPath: 'build-tools/combiner/products/build/allOutputs'
|
|
- task: DownloadPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Win64'
|
|
targetPath: 'build-tools/combiner/products/build/allOutputs'
|
|
- task: DownloadPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Linux'
|
|
targetPath: 'build-tools/combiner/products/build/allOutputs'
|
|
- task: DownloadPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Raspbian'
|
|
targetPath: 'build-tools/combiner/products/build/allOutputs'
|
|
- task: DownloadPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Athena'
|
|
targetPath: 'build-tools/combiner/products/build/allOutputs'
|
|
- task: DownloadPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Aarch64'
|
|
targetPath: 'build-tools/combiner/products/build/allOutputs'
|
|
|
|
# PR Builds
|
|
- task: Gradle@2
|
|
inputs:
|
|
workingDirectory: 'build-tools/combiner'
|
|
gradleWrapperFile: 'build-tools/combiner/gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
tasks: 'publish '
|
|
options: '-Pallwpilib'
|
|
condition: and(succeeded(), and(ne(variables['Build.SourceBranch'], 'refs/heads/master'), not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))))
|
|
|
|
# Master Builds
|
|
- task: Gradle@2
|
|
inputs:
|
|
workingDirectory: 'build-tools/combiner'
|
|
gradleWrapperFile: 'build-tools/combiner/gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
tasks: 'publish '
|
|
options: '-Pallwpilib'
|
|
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
|
|
env:
|
|
RUN_AZURE_ARTIFACTORY_RELEASE: 'TRUE'
|
|
ARTIFACTORY_PUBLISH_USERNAME: $(PublishUserName)
|
|
ARTIFACTORY_PUBLISH_PASSWORD: $(PublishPassword)
|
|
|
|
# Tagged Builds
|
|
- task: Gradle@2
|
|
inputs:
|
|
workingDirectory: 'build-tools/combiner'
|
|
gradleWrapperFile: 'build-tools/combiner/gradlew'
|
|
gradleOptions: '-Xmx3072m'
|
|
tasks: 'publish '
|
|
options: '-Pallwpilib -PreleaseRepoPublish'
|
|
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
|
|
env:
|
|
RUN_AZURE_ARTIFACTORY_RELEASE: 'TRUE'
|
|
ARTIFACTORY_PUBLISH_USERNAME: $(PublishUserName)
|
|
ARTIFACTORY_PUBLISH_PASSWORD: $(PublishPassword)
|
|
|
|
- script: |
|
|
echo "##vso[task.setvariable variable=UserHome]$HOME"
|
|
displayName: 'Set Home Variable'
|
|
- task: PublishPipelineArtifact@0
|
|
inputs:
|
|
artifactName: 'Maven'
|
|
targetPath: $(UserHome)/releases
|