diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 51ab6837e9..97ef121a50 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -13,178 +13,259 @@ resources: image: ubuntu:18.04 options: "--name ci-container -v /usr/bin/docker:/tmp/docker:ro" -jobs: - - job: Linux_Arm - pool: - vmImage: 'Ubuntu 16.04' +stages: +- stage: Build + jobs: + - job: Linux_Arm + pool: + vmImage: 'Ubuntu 16.04' - container: wpilib2019 + container: wpilib2019 - steps: - - task: Gradle@2 - inputs: - workingDirectory: '' - gradleWrapperFile: 'gradlew' - gradleOptions: '-Xmx3072m' - publishJUnitResults: false - testResultsFiles: '**/TEST-*.xml' - tasks: 'build' - options: '-PonlyAthena' - # checkStyleRunAnalysis: true - # pmdRunAnalysis: true - - - 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: '-PonlyRaspbian' - # checkStyleRunAnalysis: true - # pmdRunAnalysis: true - - - job: Linux - pool: - vmImage: 'Ubuntu 16.04' - - container: wpilib2019 - - steps: - - task: Gradle@2 - inputs: - workingDirectory: '' - gradleWrapperFile: 'gradlew' - gradleOptions: '-Xmx3072m' - publishJUnitResults: true - testResultsFiles: '**/TEST-*.xml' - tasks: 'build' - options: '-PskipAthena' - # checkStyleRunAnalysis: true - # pmdRunAnalysis: true - - - job: Styleguide - pool: - vmImage: 'Ubuntu 16.04' - - container: ubuntu18 - - steps: - - script: | - /tmp/docker exec -t -u 0 ci-container \ - sh -c "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confold" -y install sudo" - displayName: Set up sudo - - script: | - sudo apt-get update -y - sudo apt-get install clang-format-6.0 python3-setuptools python3-pip git -y - sudo pip3 install wpiformat - git checkout -b master - displayName: 'Install Dependencies' - - script: | - 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: wpilib2019 - - steps: - - task: CMake@1 + steps: + - task: Gradle@2 inputs: - cmakeArgs: '-DWITHOUT_ALLWPILIB=OFF ..' + workingDirectory: '' + gradleWrapperFile: 'gradlew' + gradleOptions: '-Xmx3072m' + publishJUnitResults: false + testResultsFiles: '**/TEST-*.xml' + tasks: 'build' + options: '-PonlyAthena' + # 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: '-PonlyRaspbian' + # checkStyleRunAnalysis: true + # pmdRunAnalysis: true + + - task: PublishPipelineArtifact@0 + inputs: + artifactName: 'Raspbian' + targetPath: 'build/allOutputs' + + - job: Linux + pool: + vmImage: 'Ubuntu 16.04' + + container: wpilib2019 + + steps: + - task: Gradle@2 + inputs: + workingDirectory: '' + gradleWrapperFile: 'gradlew' + gradleOptions: '-Xmx3072m' + publishJUnitResults: true + testResultsFiles: '**/TEST-*.xml' + tasks: 'build' + options: '-PskipAthena' + # checkStyleRunAnalysis: true + # pmdRunAnalysis: true + + - task: PublishPipelineArtifact@0 + inputs: + artifactName: 'Linux' + targetPath: 'build/allOutputs' + + - job: Styleguide + pool: + vmImage: 'Ubuntu 16.04' + + container: ubuntu18 + + steps: + - script: | + /tmp/docker exec -t -u 0 ci-container \ + sh -c "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confold" -y install sudo" + displayName: Set up sudo + - script: | + sudo apt-get update -y + sudo apt-get install clang-format-6.0 python3-setuptools python3-pip git -y + sudo pip3 install wpiformat + git checkout -b master + displayName: 'Install Dependencies' + - script: | + 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: wpilib2019 + + steps: + - task: CMake@1 + inputs: + cmakeArgs: '-DWITHOUT_ALLWPILIB=OFF ..' + - script: | + make -j3 + workingDirectory: 'build' + displayName: 'Build' + + - job: Windows_64_Bit + pool: + vmImage: 'vs2017-win2016' + steps: + - powershell: | + mkdir build + $ProgressPreference = 'SilentlyContinue' + wget "https://download.java.net/java/ga/jdk11/openjdk-11_windows-x64_bin.zip" -O "build\jdk.zip" + displayName: 'Download JDK' + - task: JavaToolInstaller@0 + inputs: + jdkSourceOption: localDirectory + jdkFile: 'build/jdk.zip' + jdkDestinationDirectory: 'build/jdkinst' + jdkArchitectureOption: x64 + - 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: 'Win64' + targetPath: 'build/allOutputs' + + - job: Windows_32_Bit + pool: + vmImage: 'vs2017-win2016' + 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' + # checkStyleRunAnalysis: true + # pmdRunAnalysis: true + - task: PublishPipelineArtifact@0 + inputs: + artifactName: 'Win32' + targetPath: 'build/allOutputs' + + - job: Mac + pool: + vmImage: 'xcode9-macos10.13' + steps: - script: | - make -j3 - workingDirectory: 'build' - displayName: 'Build' + mkdir build + wget "https://download.java.net/java/ga/jdk11/openjdk-11_osx-x64_bin.tar.gz" -O "build/jdk.tar.gz" + sudo tar xvzf build/jdk.tar.gz -C /Library/Java/JavaVirtualMachines/ + export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home/ + 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' + javaHomeOption: 'path' + jdkDirectory: '/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home/' + publishJUnitResults: true + testResultsFiles: '**/TEST-*.xml' + tasks: 'build' + # checkStyleRunAnalysis: true + # pmdRunAnalysis: true - - job: Windows_64_Bit - pool: - vmImage: 'vs2017-win2016' - steps: - - powershell: | - mkdir build - $ProgressPreference = 'SilentlyContinue' - wget "https://download.java.net/java/ga/jdk11/openjdk-11_windows-x64_bin.zip" -O "build\jdk.zip" - displayName: 'Download JDK' - - task: JavaToolInstaller@0 - inputs: - jdkSourceOption: localDirectory - jdkFile: 'build/jdk.zip' - jdkDestinationDirectory: 'build/jdkinst' - jdkArchitectureOption: x64 - - 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: 'Mac' + targetPath: 'build/allOutputs' - - job: Windows_32_Bit - pool: - vmImage: 'vs2017-win2016' - 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' - # checkStyleRunAnalysis: true - # pmdRunAnalysis: true +- stage: Combine + jobs: + - job: CombineJob + pool: + vmImage: 'xcode9-macos10.13' - - job: Mac - pool: - vmImage: 'xcode9-macos10.13' - steps: + steps: + - checkout: none - script: | - mkdir build - wget "https://download.java.net/java/ga/jdk11/openjdk-11_osx-x64_bin.tar.gz" -O "build/jdk.tar.gz" - sudo tar xvzf build/jdk.tar.gz -C /Library/Java/JavaVirtualMachines/ - export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home/ - displayName: 'Setup JDK' - - script: | - rm /Users/vsts/.gradle/init.d/log-gradle-version-plugin.gradle - displayName: 'Delete Version init 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: '' - gradleWrapperFile: 'gradlew' + workingDirectory: 'build-tools/combiner' + gradleWrapperFile: 'build-tools/combiner/gradlew' gradleOptions: '-Xmx3072m' - javaHomeOption: 'path' - jdkDirectory: '/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home/' - publishJUnitResults: true - testResultsFiles: '**/TEST-*.xml' - tasks: 'build' - # checkStyleRunAnalysis: true - # pmdRunAnalysis: true + 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