| # 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 |