# 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: ubuntu image: wpilib/ubuntu-base:18.04 stages: - stage: Build jobs: - job: Linux_Arm pool: vmImage: 'Ubuntu 16.04' container: wpilib2020 steps: - task: Gradle@2 inputs: workingDirectory: '' gradleWrapperFile: 'gradlew' gradleOptions: '-Xmx3072m' publishJUnitResults: false testResultsFiles: '**/TEST-*.xml' tasks: 'build' options: '-Ponlylinuxathena' # checkStyleRunAnalysis: true # pmdRunAnalysis: true - task: PublishPipelineArtifact@0 inputs: artifactName: 'Athena' targetPath: 'build/allOutputs' - job: Linux_Raspbian pool: vmImage: 'Ubuntu 16.04' container: raspbian steps: - task: Gradle@2 inputs: workingDirectory: '' gradleWrapperFile: 'gradlew' gradleOptions: '-Xmx3072m' publishJUnitResults: true testResultsFiles: '**/TEST-*.xml' tasks: 'build' options: '-Ponlylinuxraspbian' # checkStyleRunAnalysis: true # pmdRunAnalysis: true - task: PublishPipelineArtifact@0 inputs: artifactName: 'Raspbian' targetPath: 'build/allOutputs' - job: Linux pool: vmImage: 'Ubuntu 16.04' container: ubuntu steps: - task: Gradle@2 inputs: workingDirectory: '' gradleWrapperFile: 'gradlew' gradleOptions: '-Xmx3072m' publishJUnitResults: true testResultsFiles: '**/TEST-*.xml' tasks: 'build' # checkStyleRunAnalysis: true # pmdRunAnalysis: true - task: PublishPipelineArtifact@0 inputs: artifactName: 'Linux' targetPath: 'build/allOutputs' - job: Styleguide pool: vmImage: 'Ubuntu 16.04' container: ubuntu 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 steps: - task: CMake@1 inputs: cmakeArgs: '-DWITHOUT_ALLWPILIB=OFF ..' - script: | make -j3 workingDirectory: 'build' displayName: 'Build' - job: Windows_64_Bit pool: vmImage: 'windows-2019' steps: - task: Gradle@2 inputs: workingDirectory: '' gradleWrapperFile: 'gradlew' gradleOptions: '-Xmx3072m' jdkVersionOption: '1.11' publishJUnitResults: true testResultsFiles: '**/TEST-*.xml' tasks: 'build' options: '-PskipPMD' # checkStyleRunAnalysis: true # pmdRunAnalysis: true - task: PublishPipelineArtifact@0 inputs: artifactName: 'Win64' targetPath: 'build/allOutputs' - job: Windows_32_Bit pool: vmImage: 'windows-2019' steps: - powershell: | mkdir build $ProgressPreference = 'SilentlyContinue' wget "https://github.com/wpilibsuite/frc-openjdk-windows/releases/download/v11.0.0u28-1/jdk-x86-11.0.0u28-1.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 inputs: workingDirectory: '' gradleWrapperFile: 'gradlew' gradleOptions: '-Xmx1024m' publishJUnitResults: true testResultsFiles: '**/TEST-*.xml' tasks: 'build' options: '-PskipPMD' # checkStyleRunAnalysis: true # pmdRunAnalysis: true - task: PublishPipelineArtifact@0 inputs: artifactName: 'Win32' targetPath: 'build/allOutputs' - job: Mac pool: vmImage: 'macOS-10.14' steps: - script: | mkdir build export JAVA_HOME=`/usr/libexec/java_home -v 11` displayName: 'Setup JDK' - script: | rm /Users/vsts/.gradle/init.d/log-gradle-version-plugin.gradle displayName: 'Delete Version init script' - task: Gradle@2 inputs: workingDirectory: '' gradleWrapperFile: 'gradlew' gradleOptions: '-Xmx3072m' jdkVersionOption: '1.11' publishJUnitResults: true testResultsFiles: '**/TEST-*.xml' tasks: 'build' #options: '' # checkStyleRunAnalysis: true # pmdRunAnalysis: true - task: PublishPipelineArtifact@0 inputs: artifactName: 'Mac' targetPath: 'build/allOutputs' - stage: Combine jobs: - job: CombineJob pool: vmImage: 'macOS-10.14' 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: Gradle@2 inputs: workingDirectory: 'build-tools/combiner' gradleWrapperFile: 'build-tools/combiner/gradlew' gradleOptions: '-Xmx3072m' tasks: 'publish ' options: '-Pallwpilib' - script: | echo "##vso[task.setvariable variable=UserHome]$HOME" displayName: 'Set Home Variable' - task: PublishPipelineArtifact@0 inputs: artifactName: 'Maven' targetPath: $(UserHome)/releases