806 lines
29 KiB
YAML
806 lines
29 KiB
YAML
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
# Licensed under the MIT License.
|
|
|
|
name: K4A-SDK-$(SourceBranchName)-$(Date:yyyyMMdd)-$(Rev:rrr)
|
|
|
|
schedules:
|
|
# Every 60 minutes from 08:00 UTC (00:00 PST/01:00 PDT) to 10:00 UTC (02:00 PST/03:00 PDT)
|
|
- cron: "*/60 08-10 * * *"
|
|
displayName: 'Nightly Builds - Develop'
|
|
branches:
|
|
include:
|
|
- develop
|
|
always: true
|
|
# Every 30 minutes from 11:00 UTC (03:00 PST/04:00 PDT) to 13:00 UTC (05:00 PST/06:00 PDT)
|
|
# - cron: "*/30 11-13 * * *"
|
|
# displayName: 'Nightly Builds - Master'
|
|
# branches:
|
|
# include:
|
|
# - master
|
|
# always: true
|
|
|
|
|
|
variables:
|
|
- name: 'skipComponentGovernaceDetection'
|
|
value: true
|
|
- name: 'linux_firmware_version'
|
|
value: '1.6.110079014'
|
|
- name: 'windows_firmware_version'
|
|
value: '1.6.110079014'
|
|
- name: 'NuGetPackageVersion'
|
|
value: '1.4.1-alpha.0'
|
|
- name: 'OpenCVPath'
|
|
value: 'C:\OpenCV\Build\x64\vc15\'
|
|
|
|
trigger:
|
|
batch: false
|
|
branches:
|
|
include:
|
|
- master
|
|
- develop
|
|
- release/*
|
|
- hotfix/*
|
|
- feature/*
|
|
|
|
jobs:
|
|
- job: WindowsK4ABuildTest
|
|
displayName: Win
|
|
strategy:
|
|
maxParallel: 100
|
|
matrix:
|
|
VS2019_x64-msvc_debug_ninja:
|
|
CMakeArch: 'amd64'
|
|
BuildGenerator: 'Ninja'
|
|
CMakeConfiguration: 'debug'
|
|
MSBuildPlatform: 'x64'
|
|
MSBuildConfiguration: 'Debug'
|
|
vmImage: 'windows-2019'
|
|
UsesOpenCV: 'TRUE'
|
|
VS2019_x64-msvc_rel_ninja:
|
|
CMakeArch: 'amd64'
|
|
BuildGenerator: 'Ninja'
|
|
CMakeConfiguration: 'relwithdebinfo'
|
|
MSBuildPlatform: 'x64'
|
|
MSBuildConfiguration: 'Release'
|
|
vmImage: 'windows-2019'
|
|
UsesOpenCV: 'TRUE'
|
|
VS2019_x86-msvc_debug_ninja:
|
|
CMakeArch: 'x86'
|
|
BuildGenerator: 'Ninja'
|
|
CMakeConfiguration: 'debug'
|
|
MSBuildPlatform: 'x86'
|
|
MSBuildConfiguration: 'Debug'
|
|
vmImage: 'windows-2019'
|
|
UsesOpenCV: 'FALSE'
|
|
VS2019_x86-msvc_rel_ninja:
|
|
CMakeArch: 'x86'
|
|
BuildGenerator: 'Ninja'
|
|
CMakeConfiguration: 'relwithdebinfo'
|
|
MSBuildPlatform: 'x86'
|
|
MSBuildConfiguration: 'Release'
|
|
vmImage: 'windows-2019'
|
|
UsesOpenCV: 'FALSE'
|
|
pool:
|
|
vmImage: $(vmImage)
|
|
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
lfs: false
|
|
persistCredentials: true
|
|
submodules: true
|
|
|
|
# Use Python Version
|
|
# Retrieves the specified version of Python from the tool cache. Optionally add it to PATH.
|
|
- task: UsePythonVersion@0
|
|
inputs:
|
|
versionSpec: '3.x'
|
|
addToPath: true
|
|
architecture: 'x64'
|
|
|
|
- powershell: '$(Build.SourcesDirectory)/scripts/verify-windows.ps1'
|
|
displayName: 'Run verify-windows.ps1'
|
|
|
|
- script: |
|
|
git add --renormalize . && git diff-index --quiet HEAD --
|
|
IF %ERRORLEVEL% NEQ 0 (
|
|
echo "Please renormalize files before pushing using git add --renormalize ."
|
|
git status
|
|
exit /b 1
|
|
)
|
|
exit /b 0
|
|
displayName: 'Check Line Endings'
|
|
|
|
- task: BatchScript@1
|
|
displayName: 'Setup VS Env'
|
|
inputs:
|
|
filename: 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat'
|
|
arguments: '-arch=$(CMakeArch)'
|
|
modifyEnvironment: true
|
|
condition: and(succeeded(), eq(variables['vmImage'], 'vs2017-win2016'))
|
|
|
|
- task: BatchScript@1
|
|
displayName: 'Setup VS Env'
|
|
inputs:
|
|
filename: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat'
|
|
arguments: '-arch=$(CMakeArch)'
|
|
modifyEnvironment: true
|
|
condition: and(succeeded(), eq(variables['vmImage'], 'windows-2019'))
|
|
|
|
- pwsh: '$(Build.SourcesDirectory)/scripts/install-opencv.ps1'
|
|
displayName: 'Install OpenCV'
|
|
condition: and(succeeded(), eq(variables['UsesOpenCV'], 'TRUE'))
|
|
|
|
- powershell: |
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
function Download-ToTemp
|
|
{
|
|
param
|
|
(
|
|
[Parameter(Mandatory)]
|
|
[string] $url,
|
|
[string] $filename
|
|
)
|
|
|
|
if (-not ($filename))
|
|
{
|
|
$filename = Split-Path -Path $url -Leaf
|
|
}
|
|
|
|
if (-not ($filename))
|
|
{
|
|
Write-Error "Unable to parse filename from $url"
|
|
return $null
|
|
}
|
|
|
|
$tempDir = [System.IO.Path]::GetTempPath()
|
|
$path = Join-Path -Path $tempDir -ChildPath $filename
|
|
|
|
Write-Host -NoNewline "Downloading $url to $path..."
|
|
Invoke-WebRequest -Uri $url -OutFile $path -UserAgent "NativeClient"
|
|
Write-Host "Done"
|
|
|
|
return $path
|
|
}
|
|
|
|
# Download NASM
|
|
$url = "https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/win64/nasm-2.14.02-win64.zip"
|
|
$nasmzip = Download-ToTemp -url $url
|
|
|
|
Expand-Archive $nasmzip .\nasmexe
|
|
Write-Host "NASM Downloaded"
|
|
|
|
workingDirectory: '$(Build.BinariesDirectory)'
|
|
displayName: 'Download NASM'
|
|
|
|
- script: |
|
|
set PATH=%PATH%;$(Build.BinariesDirectory)\nasmexe\nasm-2.14.02
|
|
cmake -G "$(BuildGenerator)" "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DOpenCV_REQUIRED=$(UsesOpenCV)" "$(Build.SourcesDirectory)" "-DCMAKE_BUILD_TYPE=$(CMakeConfiguration)" "-DK4A_SOURCE_LINK=ON"
|
|
workingDirectory: '$(Build.BinariesDirectory)'
|
|
displayName: 'CMake Configure'
|
|
env:
|
|
CC: cl
|
|
CXX: cl
|
|
|
|
- task: CMake@1
|
|
displayName: 'CMake Build'
|
|
inputs:
|
|
workingDirectory: '$(Build.BinariesDirectory)'
|
|
cmakeArgs: '--build . --config "$(CMakeConfiguration)"'
|
|
|
|
- task: CMake@1
|
|
displayName: 'CMake Build Package'
|
|
inputs:
|
|
workingDirectory: '$(Build.BinariesDirectory)'
|
|
cmakeArgs: '--build . --config "$(CMakeConfiguration)" --target package'
|
|
|
|
- script: 'ctest -V -C "$(CMakeConfiguration)" -L unit'
|
|
workingDirectory: '$(Build.BinariesDirectory)'
|
|
displayName: 'Run Native Unit Tests'
|
|
|
|
- task: PublishTestResults@2
|
|
displayName: 'Publish Test Results'
|
|
inputs:
|
|
testResultsFiles: '**\TEST-*.xml'
|
|
searchFolder: '$(Build.BinariesDirectory)'
|
|
mergeTestResults: true
|
|
testRunTitle: 'Unit Tests'
|
|
condition: succeededOrFailed()
|
|
|
|
# Create a placeholder version of the depth engine to satisfy MSBuild copy rules.
|
|
# This version is not needed for actual execution.
|
|
# In the future we should fetch the real version from a valid source.
|
|
- powershell: |
|
|
if ("$(BuildGenerator)" -eq "Ninja")
|
|
{
|
|
IF(-Not (Test-Path "$(Build.BinariesDirectory)\bin\depthengine_2_0.dll")) { Add-Content "$(Build.BinariesDirectory)\bin\depthengine_2_0.dll" "Placeholder file, please download real depth engine." }
|
|
}
|
|
elseif ("$(BuildGenerator)" -like "Visual Studio *")
|
|
{
|
|
IF(-Not (Test-Path "$(Build.BinariesDirectory)\bin\$(CMakeConfiguration)\depthengine_2_0.dll")) { Add-Content "$(Build.BinariesDirectory)\bin\$(CMakeConfiguration)\depthengine_2_0.dll" "Placeholder file, please download real depth engine." }
|
|
}
|
|
else
|
|
{
|
|
Write-Error "Unknown Generator <<$(BuildGenerator)>>"
|
|
}
|
|
displayName: 'Create placeholder depth engine'
|
|
|
|
- task: NuGetToolInstaller@0
|
|
inputs:
|
|
versionSpec: '>=4.3.1'
|
|
|
|
- task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2 # NuGetCommand@2
|
|
inputs:
|
|
command: 'restore'
|
|
solution: '$(Build.SourcesDirectory)\src\csharp\K4a.sln'
|
|
|
|
- task: VSBuild@1
|
|
displayName: 'Build C# Wrappers'
|
|
inputs:
|
|
solution: '$(Build.SourcesDirectory)\src\csharp\K4a.sln'
|
|
msbuildArgs: '/p:BaseOutputPath="$(Build.BinariesDirectory)\bin\$(MSBuildConfiguration)\\"'
|
|
platform: '$(MSBuildPlatform)'
|
|
configuration: '$(MSBuildConfiguration)'
|
|
|
|
- task: VSTest@2
|
|
displayName: 'Run C# Unit Tests'
|
|
inputs:
|
|
testSelector: 'testAssemblies'
|
|
searchFolder: '$(Build.BinariesDirectory)\bin'
|
|
platform: '$(MSBuildPlatform)'
|
|
configuration: '$(MSBuildConfiguration)'
|
|
testAssemblyVer2: |
|
|
**/*UnitTests.dll
|
|
!**/obj/**
|
|
|
|
# Clean up any placeholder version of the depth engine that were created.
|
|
- powershell: Get-ChildItem -Path "$(Build.BinariesDirectory)\bin\\" -Filter "DepthEngine_*.dll" -Recurse | Remove-Item
|
|
displayName: 'Clean up temp depth engine'
|
|
|
|
- task: CopyFiles@2
|
|
displayName: 'Copy build folder to Staging'
|
|
inputs:
|
|
SourceFolder: '$(Build.BinariesDirectory)'
|
|
Contents: |
|
|
*
|
|
bin/**/*
|
|
docs/**/*
|
|
CMakeFiles/**/*
|
|
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
|
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Artifact: Build folder'
|
|
inputs:
|
|
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
|
ArtifactName: '$(CMakeArch)-windows-msvc-$(CMakeConfiguration)'
|
|
parallel: true
|
|
parallelCount: 8
|
|
condition: and(succeeded(), and(eq(variables['vmImage'], 'vs2017-win2016'), eq(variables['BuildGenerator'], 'Ninja')))
|
|
|
|
# This will publish symbols created from this build to the Azure DevOps symbol
|
|
# server. This symbol server will be private to Microsoft internal.
|
|
- task: PublishSymbols@2
|
|
displayName: 'Publish K4A Symbols'
|
|
inputs:
|
|
symbolsFolder: '$(Build.BinariesDirectory)'
|
|
searchPattern: 'bin/**/*.pdb'
|
|
indexSources: true
|
|
publishSymbols: true
|
|
symbolServerType: 'teamServices'
|
|
condition: and(succeeded(), and(eq(variables['vmImage'], 'vs2017-win2016'), eq(variables['BuildGenerator'], 'Ninja')))
|
|
|
|
- job: LinuxK4ABuildTest
|
|
displayName: Linux
|
|
strategy:
|
|
maxParallel: 100
|
|
matrix:
|
|
x64-clang_debug_ninja:
|
|
CMakeLinuxTargetTriple: 'x86_64-linux-clang'
|
|
CMakeConfiguration: 'debug'
|
|
UsesOpenCV: 'TRUE'
|
|
container: 'mcr.microsoft.com/akbuilder-linux:v5-amd64'
|
|
x64-gnu_debug_ninja:
|
|
CMakeLinuxTargetTriple: 'x86_64-linux-gnu'
|
|
CMakeConfiguration: 'debug'
|
|
UsesOpenCV: 'TRUE'
|
|
container: 'mcr.microsoft.com/akbuilder-linux:v5-amd64'
|
|
x64-clang_rel_ninja:
|
|
CMakeLinuxTargetTriple: 'x86_64-linux-clang'
|
|
CMakeConfiguration: 'relwithdebinfo'
|
|
UsesOpenCV: 'TRUE'
|
|
container: 'mcr.microsoft.com/akbuilder-linux:v5-amd64'
|
|
x64-gnu_rel_ninja:
|
|
CMakeLinuxTargetTriple: 'x86_64-linux-gnu'
|
|
CMakeConfiguration: 'relwithdebinfo'
|
|
UsesOpenCV: 'TRUE'
|
|
container: 'mcr.microsoft.com/akbuilder-linux:v5-amd64'
|
|
# arm64-clang_debug_ninja:
|
|
# CMakeLinuxTargetTriple: 'arm64-linux-clang'
|
|
# CMakeConfiguration: 'debug'
|
|
# UsesOpenCV: 'FALSE'
|
|
arm64-gnu_debug_ninja:
|
|
CMakeLinuxTargetTriple: 'arm64-linux-gnu'
|
|
CMakeConfiguration: 'debug'
|
|
UsesOpenCV: 'FALSE'
|
|
container: 'mcr.microsoft.com/akbuilder-linux:v5-arm64'
|
|
# arm64-clang_rel_ninja:
|
|
# CMakeLinuxTargetTriple: 'arm64-linux-clang'
|
|
# CMakeConfiguration: 'relwithdebinfo'
|
|
# UsesOpenCV: 'FALSE'
|
|
arm64-gnu_rel_ninja:
|
|
CMakeLinuxTargetTriple: 'arm64-linux-gnu'
|
|
CMakeConfiguration: 'relwithdebinfo'
|
|
UsesOpenCV: 'FALSE'
|
|
container: 'mcr.microsoft.com/akbuilder-linux:v5-arm64'
|
|
|
|
# 32-bit builds are currently broken
|
|
# i386-unknown-linux-clang_debug_ninja:
|
|
# CMakeLinuxTargetTriple: 'i386-linux-clang'
|
|
# CMakeConfiguration: 'debug'
|
|
# i386-unknown-linux-gnu_debug_ninja:
|
|
# CMakeLinuxTargetTriple: 'i386-linux-gnu'
|
|
# CMakeConfiguration: 'debug'
|
|
# i386-unknown-linux-clang_relwithdebinfo_ninja:
|
|
# CMakeLinuxTargetTriple: 'i386-linux-clang'
|
|
# CMakeConfiguration: 'relwithdebinfo'
|
|
# i386-unknown-linux-gnu_relwithdebinfo_ninja:
|
|
# CMakeLinuxTargetTriple: 'i386-linux-gnu'
|
|
# CMakeConfiguration: 'relwithdebinfo'
|
|
pool:
|
|
vmImage: 'ubuntu-18.04'
|
|
container: $[ variables['container'] ]
|
|
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
lfs: false
|
|
persistCredentials: true
|
|
submodules: true
|
|
|
|
- script: |
|
|
git add --renormalize . && git diff-index --quiet HEAD --
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "Please normalize files before pushing using git add --renormalize ."
|
|
git status
|
|
exit 1
|
|
fi
|
|
displayName: 'Check Line Endings'
|
|
|
|
# OpenCV always required on Linux
|
|
- script: 'cmake -GNinja -DCMAKE_VERBOSE_MAKEFILE=ON -DOpenCV_REQUIRED=$(UsesOpenCV) "$(Build.SourcesDirectory)" "-DCMAKE_BUILD_TYPE=$(CMakeConfiguration)" "-DCMAKE_TOOLCHAIN_FILE=$(Build.SourcesDirectory)/cmake/toolchains/$(CMakeLinuxTargetTriple).cmake"'
|
|
workingDirectory: '$(Build.BinariesDirectory)'
|
|
displayName: 'CMake Configure'
|
|
|
|
- task: CMake@1
|
|
displayName: 'CMake Build'
|
|
inputs:
|
|
workingDirectory: '$(Build.BinariesDirectory)'
|
|
cmakeArgs: '--build .'
|
|
|
|
- task: CMake@1
|
|
displayName: 'CMake Build Package'
|
|
inputs:
|
|
workingDirectory: '$(Build.BinariesDirectory)'
|
|
cmakeArgs: '--build . --target package'
|
|
|
|
- script: 'ctest -V -L unit'
|
|
workingDirectory: '$(Build.BinariesDirectory)'
|
|
displayName: 'Unit Tests'
|
|
|
|
- task: PublishTestResults@2
|
|
displayName: 'Publish Test Results'
|
|
inputs:
|
|
searchFolder: '$(Build.BinariesDirectory)'
|
|
mergeTestResults: true
|
|
testRunTitle: 'Unit Tests'
|
|
condition: succeededOrFailed()
|
|
|
|
- task: CopyFiles@2
|
|
displayName: 'Copy build folder to Staging'
|
|
inputs:
|
|
SourceFolder: '$(Build.BinariesDirectory)'
|
|
Contents: |
|
|
*
|
|
bin/*
|
|
docs/**/*
|
|
CMakeFiles/**/*
|
|
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
|
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Artifact: Build folder'
|
|
inputs:
|
|
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
|
ArtifactName: '$(CMakeLinuxTargetTriple)-$(CMakeConfiguration)'
|
|
parallel: true
|
|
parallelCount: 8
|
|
condition: and(succeeded(), contains(variables['CMakeLinuxTargetTriple'], 'gnu'))
|
|
|
|
- job: DocumentationBuild
|
|
displayName: Documentation Build
|
|
pool:
|
|
vmImage: 'windows-2019'
|
|
demands:
|
|
- Cmd
|
|
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
lfs: false
|
|
persistCredentials: true
|
|
submodules: true
|
|
|
|
- task: BatchScript@1
|
|
displayName: 'Setup VS2019 Env'
|
|
inputs:
|
|
filename: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat'
|
|
modifyEnvironment: true
|
|
|
|
- powershell: |
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
function Download-ToTemp
|
|
{
|
|
param
|
|
(
|
|
[Parameter(Mandatory)]
|
|
[string] $url,
|
|
[string] $filename
|
|
)
|
|
|
|
if (-not ($filename))
|
|
{
|
|
$filename = Split-Path -Path $url -Leaf
|
|
}
|
|
|
|
if (-not ($filename))
|
|
{
|
|
Write-Error "Unable to parse filename from $url"
|
|
return $null
|
|
}
|
|
|
|
$tempDir = [System.IO.Path]::GetTempPath()
|
|
$path = Join-Path -Path $tempDir -ChildPath $filename
|
|
|
|
Write-Host -NoNewline "Downloading $url to $path..."
|
|
Invoke-WebRequest -Uri $url -OutFile $path -UserAgent "NativeClient"
|
|
Write-Host "Done"
|
|
|
|
return $path
|
|
}
|
|
|
|
# Download Doxygen
|
|
$url = "https://sourceforge.net/projects/doxygen/files/rel-1.8.14/doxygen-1.8.14.windows.bin.zip/download"
|
|
$filename = "doxygen-1.8.14.windows.bin.zip"
|
|
$doxygenzip = Download-ToTemp -url $url -filename $filename
|
|
|
|
Expand-Archive $doxygenzip .\doxygenexe
|
|
Write-Host "Doxygen installed. Please use Visual Studio Developer Command prompt to build."
|
|
|
|
workingDirectory: '$(Build.BinariesDirectory)'
|
|
displayName: 'Download doxygen'
|
|
|
|
- script: |
|
|
set PATH=%PATH%;$(Build.BinariesDirectory)\doxygenexe
|
|
cmake -G Ninja "-DK4A_BUILD_DOCS:BOOL=ON" "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DSOURCE_BRANCH=$(Build.SourceBranch)" "$(Build.SourcesDirectory)"
|
|
|
|
workingDirectory: '$(Build.BinariesDirectory)'
|
|
displayName: 'CMake Configure'
|
|
env:
|
|
CC: cl
|
|
CXX: cl
|
|
|
|
- task: CMake@1
|
|
displayName: 'CMake Build'
|
|
inputs:
|
|
workingDirectory: '$(Build.BinariesDirectory)'
|
|
cmakeArgs: '--build . --target k4adocs'
|
|
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Artifact: Documentation'
|
|
inputs:
|
|
PathtoPublish: '$(Build.BinariesDirectory)\docs'
|
|
ArtifactName: docs
|
|
parallel: true
|
|
parallelCount: 8
|
|
|
|
- task: PowerShell@2
|
|
displayName: 'Publish Documentation HTML'
|
|
inputs:
|
|
targetType: 'filePath'
|
|
filePath: '$(Build.SourcesDirectory)\doxygen\PublishDocs.ps1'
|
|
condition: and(eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564'), and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')))
|
|
|
|
- ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}:
|
|
- job: WindowsFunctionalTests
|
|
displayName: Windows Functional Test
|
|
dependsOn: WindowsK4ABuildTest
|
|
variables:
|
|
firmware_version: "$(windows_firmware_version)"
|
|
pool:
|
|
name: Analog-FwConnected
|
|
demands:
|
|
- Eden
|
|
- Agent.OS -equals Windows_NT
|
|
|
|
steps:
|
|
- task: VisualStudioTestPlatformInstaller@1
|
|
displayName: 'Install Visual Studio Test Platform tools'
|
|
|
|
- checkout: self
|
|
clean: true
|
|
lfs: false
|
|
persistCredentials: true
|
|
submodules: false
|
|
|
|
- task: DownloadBuildArtifacts@0
|
|
displayName: 'Download Build Artifacts'
|
|
inputs:
|
|
artifactName: 'amd64-windows-msvc-RelWithDebInfo'
|
|
parallelizationLimit: 8
|
|
|
|
- task: NuGetToolInstaller@0
|
|
inputs:
|
|
versionSpec: '>=5.1.0'
|
|
|
|
- task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2 #NugetCommand@2
|
|
displayName: "Get Azure Kinect NuGet Package"
|
|
inputs:
|
|
command: custom
|
|
arguments: install Microsoft.Azure.Kinect.Sensor -prerelease -Version $(NuGetPackageVersion) -OutputDirectory $(System.ArtifactsDirectory)/NugetOutputDir
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy DepthEngine into amd64/debug artifacts folder"
|
|
inputs:
|
|
sourceFolder: "$(System.ArtifactsDirectory)/NugetOutputDir/Microsoft.Azure.Kinect.Sensor.$(NuGetPackageVersion)/lib/native/amd64/release/"
|
|
contents: "depthengine*.dll"
|
|
targetFolder: "$(System.ArtifactsDirectory)/depthengineplugin/windows/amd64/debug"
|
|
flattenFolders: true
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy DepthEngine into amd64/release artifacts folder"
|
|
inputs:
|
|
sourceFolder: "$(System.ArtifactsDirectory)/NugetOutputDir/Microsoft.Azure.Kinect.Sensor.$(NuGetPackageVersion)/lib/native/amd64/release/"
|
|
contents: "depthengine*.dll"
|
|
targetFolder: "$(System.ArtifactsDirectory)/depthengineplugin/windows/amd64/release"
|
|
flattenFolders: true
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy DepthEngine into x86/debug artifacts folder"
|
|
inputs:
|
|
sourceFolder: "$(System.ArtifactsDirectory)/NugetOutputDir/Microsoft.Azure.Kinect.Sensor.$(NuGetPackageVersion)/lib/native/x86/release/"
|
|
contents: "depthengine*.dll"
|
|
targetFolder: "$(System.ArtifactsDirectory)/depthengineplugin/windows/x86/debug"
|
|
flattenFolders: true
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy DepthEngine into x86/release artifacts folder"
|
|
inputs:
|
|
sourceFolder: "$(System.ArtifactsDirectory)/NugetOutputDir/Microsoft.Azure.Kinect.Sensor.$(NuGetPackageVersion)/lib/native/x86/release/"
|
|
contents: "depthengine*.dll"
|
|
targetFolder: "$(System.ArtifactsDirectory)/depthengineplugin/windows/x86/release"
|
|
flattenFolders: true
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy AzureKinectDK_Fw_$(firmware_version).bin artifacts folder"
|
|
inputs:
|
|
sourceFolder: "$(System.ArtifactsDirectory)/NugetOutputDir/Microsoft.Azure.Kinect.Sensor.$(NuGetPackageVersion)/firmware/"
|
|
contents: "AzureKinectDK_Fw_$(firmware_version).bin"
|
|
targetFolder: "$(System.ArtifactsDirectory)/firmware"
|
|
flattenFolders: true
|
|
|
|
# we don't want to test other binaries in the NuGet package, so delete it.
|
|
- task: DeleteFiles@1
|
|
displayName: "Delete Microsoft.Azure.Kinect.Sensor NuGet Package"
|
|
inputs:
|
|
sourceFolder: "$(System.ArtifactsDirectory)/NugetOutputDir"
|
|
contents: '\*'
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy DepthEngine into bin folder"
|
|
inputs:
|
|
sourceFolder: "$(System.ArtifactsDirectory)/depthengineplugin/windows/amd64/release/"
|
|
contents: "depthengine*.dll"
|
|
targetFolder: "$(System.ArtifactsDirectory)/amd64-windows-msvc-relwithdebinfo/bin"
|
|
flattenFolders: true
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy DepthEngine into C# functional tests folder"
|
|
inputs:
|
|
sourceFolder: "$(System.ArtifactsDirectory)/depthengineplugin/windows/amd64/release/"
|
|
contents: "depthengine*.dll"
|
|
targetFolder: "$(System.ArtifactsDirectory)/amd64-windows-msvc-relwithdebinfo/bin/Release/Microsoft.AzureKinect.FunctionalTests/netcoreapp2.1/"
|
|
flattenFolders: true
|
|
|
|
- script: '.\amd64-windows-msvc-relwithdebinfo\bin\AzureKinectFirmwareTool.exe -r'
|
|
workingDirectory: '$(System.ArtifactsDirectory)'
|
|
displayName: 'Reset K4A Device'
|
|
|
|
- script: '.\amd64-windows-msvc-relwithdebinfo\bin\AzureKinectFirmwareTool.exe -u firmware/AzureKinectDK_Fw_$(firmware_version).bin'
|
|
workingDirectory: '$(System.ArtifactsDirectory)'
|
|
displayName: 'Update Device'
|
|
|
|
- script: '.\amd64-windows-msvc-relwithdebinfo\bin\enumerate_devices.exe'
|
|
workingDirectory: '$(System.ArtifactsDirectory)'
|
|
displayName: 'Check Device Health'
|
|
|
|
- script: 'python $(Build.SourcesDirectory)/scripts/RunTestList.py --list bin/functional_test_list.txt --bin bin/ --output=xml --gtest_filter=-*ONBOARDING*'
|
|
workingDirectory: '$(System.ArtifactsDirectory)/amd64-windows-msvc-relwithdebinfo'
|
|
displayName: 'Run Functional Tests'
|
|
timeoutInMinutes: 15
|
|
|
|
- script: 'python $(Build.SourcesDirectory)/scripts/RunTestList.py --list bin/functional_custom_test_list.txt --bin bin/ --output=xml --gtest_filter=-*ONBOARDING*'
|
|
workingDirectory: '$(System.ArtifactsDirectory)/amd64-windows-msvc-relwithdebinfo'
|
|
displayName: 'Run Custom Functional Tests'
|
|
timeoutInMinutes: 15
|
|
|
|
- script: 'python $(Build.SourcesDirectory)/scripts/RunTestList.py --list bin/functional_test_list.txt --bin bin/ --output=xml --gtest_filter=*ONBOARDING*'
|
|
workingDirectory: '$(System.ArtifactsDirectory)/amd64-windows-msvc-relwithdebinfo'
|
|
displayName: 'Run Functional Tests - Onboarding'
|
|
timeoutInMinutes: 15
|
|
continueOnError: true
|
|
|
|
- task: VSTest@2
|
|
displayName: 'Run C# Functional Tests'
|
|
inputs:
|
|
testSelector: 'testAssemblies'
|
|
searchFolder: '$(Build.BinariesDirectory)'
|
|
platform: '$(MSBuildPlatform)'
|
|
configuration: '$(MSBuildConfiguration)'
|
|
vsTestVersion: 'toolsInstaller'
|
|
testAssemblyVer2: |
|
|
**/*FunctionalTests.dll
|
|
!**/obj/**
|
|
|
|
- ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}:
|
|
- job: LinuxFunctionalTests
|
|
displayName: Linux Functional Test
|
|
dependsOn: LinuxK4ABuildTest
|
|
variables:
|
|
firmware_version: "$(linux_firmware_version)"
|
|
strategy:
|
|
maxParallel: 100
|
|
matrix:
|
|
x86_64:
|
|
CMakeLinuxTargetTriple: 'x86_64-linux-gnu'
|
|
EdenArch: 'x64'
|
|
arm64:
|
|
CMakeLinuxTargetTriple: 'arm64-linux-gnu'
|
|
EdenArch: 'arm64'
|
|
pool:
|
|
name: Analog-FwConnected
|
|
demands:
|
|
- EdenArch -equals $(EdenArch)
|
|
- Agent.OS -equals Linux
|
|
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
lfs: false
|
|
persistCredentials: true
|
|
submodules: true
|
|
|
|
- task: DownloadBuildArtifacts@0
|
|
displayName: 'Download Build Artifacts'
|
|
inputs:
|
|
artifactName: '$(CMakeLinuxTargetTriple)-relwithdebinfo'
|
|
parallelizationLimit: 8
|
|
|
|
- task: NuGetToolInstaller@0
|
|
inputs:
|
|
versionSpec: '>=5.1.0'
|
|
|
|
# The account on the NUC does not currently give this user permission to install, so we have done so manually.
|
|
# Mono has a bug, so we need a newer version. Version 6.8 is working well for both AMD64 and ARM64.
|
|
#- script: 'apt-get install mono-complete python git-lfs openssh-server ufw libopencv-dev'
|
|
# workingDirectory: '$(System.ArtifactsDirectory)'
|
|
# displayName: "Ensure Mono is installed"
|
|
|
|
- task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2 #NugetCommand@2
|
|
displayName: "Get Azure Kinect NuGet Package"
|
|
inputs:
|
|
command: custom
|
|
arguments: install Microsoft.Azure.Kinect.Sensor -prerelease -Version $(NuGetPackageVersion) -OutputDirectory $(System.ArtifactsDirectory)/NugetOutputDir
|
|
|
|
- script: 'ls -alR'
|
|
workingDirectory: '$(System.ArtifactsDirectory)/NugetOutputDir'
|
|
displayName: "Temp List files"
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy DepthEngine into $(EdenArch)/debug artifacts folder"
|
|
inputs:
|
|
sourceFolder: "$(System.ArtifactsDirectory)/NugetOutputDir/Microsoft.Azure.Kinect.Sensor.$(NuGetPackageVersion)/linux/lib/native/$(EdenArch)/release/"
|
|
contents: "libdepthengine*"
|
|
targetFolder: "$(System.ArtifactsDirectory)/depthengineplugin/linux/$(EdenArch)/debug"
|
|
flattenFolders: true
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy DepthEngine into $(EdenArch)/release artifacts folder"
|
|
inputs:
|
|
sourceFolder: "$(System.ArtifactsDirectory)/NugetOutputDir/Microsoft.Azure.Kinect.Sensor.$(NuGetPackageVersion)/linux/lib/native/$(EdenArch)/release/"
|
|
contents: "libdepthengine*"
|
|
targetFolder: "$(System.ArtifactsDirectory)/depthengineplugin/linux/$(EdenArch)/release"
|
|
flattenFolders: true
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy AzureKinectDK_Fw_$(firmware_version).bin artifacts folder"
|
|
inputs:
|
|
sourceFolder: "$(System.ArtifactsDirectory)/NugetOutputDir/Microsoft.Azure.Kinect.Sensor.$(NuGetPackageVersion)/firmware/"
|
|
contents: "AzureKinectDK_Fw_$(firmware_version).bin"
|
|
targetFolder: "$(System.ArtifactsDirectory)/firmware"
|
|
flattenFolders: true
|
|
|
|
# we don't want to test other binaries in the NuGet package, so delete it.
|
|
- task: DeleteFiles@1
|
|
displayName: "Delete Microsoft.Azure.Kinect.Sensor NuGet Package"
|
|
inputs:
|
|
sourceFolder: "$(System.ArtifactsDirectory)/NugetOutputDir"
|
|
contents: '\*'
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy DepthEnginePlugin into Build Artifacts"
|
|
inputs:
|
|
sourceFolder: "$(System.ArtifactsDirectory)/depthengineplugin/linux/$(EdenArch)/release/"
|
|
contents: "libdepthengine.so*"
|
|
targetFolder: "$(System.ArtifactsDirectory)/$(CMakeLinuxTargetTriple)-relwithdebinfo/bin/"
|
|
flattenFolders: true
|
|
|
|
- script: 'chmod +x ./$(CMakeLinuxTargetTriple)-relwithdebinfo/bin/*'
|
|
workingDirectory: '$(System.ArtifactsDirectory)'
|
|
displayName: 'Add execution property to binary files'
|
|
|
|
# Set and verify the DISPLAY variable since DepthEngine needs to open a display window (even there is no visual display).
|
|
- script: |
|
|
echo
|
|
echo Checking OpenGL version on DISPLAY=:0
|
|
echo "##vso[task.setvariable variable=DISPLAY]:0"
|
|
export DISPLAY=:0
|
|
env | grep DISPLAY
|
|
which xauth
|
|
glxinfo | grep "OpenGL"
|
|
if [ $? -ne 0 ] ; then
|
|
echo
|
|
echo Checking OpenGL version on DISPLAY=:1
|
|
echo "##vso[task.setvariable variable=DISPLAY]:1"
|
|
export DISPLAY=:1
|
|
env | grep DISPLAY
|
|
which xauth
|
|
glxinfo | grep "OpenGL"
|
|
fi
|
|
workingDirectory: '$(System.ArtifactsDirectory)'
|
|
displayName: 'Check openGL version'
|
|
timeoutInMinutes: 5
|
|
|
|
- script: './$(CMakeLinuxTargetTriple)-relwithdebinfo/bin/AzureKinectFirmwareTool -r'
|
|
workingDirectory: '$(System.ArtifactsDirectory)'
|
|
displayName: 'Reset K4A Device'
|
|
env:
|
|
K4A_LOG_LEVEL: 'I'
|
|
|
|
- script: './$(CMakeLinuxTargetTriple)-relwithdebinfo/bin/AzureKinectFirmwareTool -u firmware/AzureKinectDK_Fw_$(firmware_version).bin'
|
|
workingDirectory: '$(System.ArtifactsDirectory)'
|
|
displayName: 'Update Device'
|
|
env:
|
|
K4A_LOG_LEVEL: 'I'
|
|
|
|
- script: './$(CMakeLinuxTargetTriple)-relwithdebinfo/bin/enumerate_devices'
|
|
workingDirectory: '$(System.ArtifactsDirectory)'
|
|
displayName: 'Check Device Health'
|
|
|
|
- script: 'python $(Build.SourcesDirectory)/scripts/RunTestList.py --list bin/functional_test_list.txt --bin bin/ --output=xml --gtest_filter=-*ONBOARDING*'
|
|
workingDirectory: '$(System.ArtifactsDirectory)/$(CMakeLinuxTargetTriple)-relwithdebinfo'
|
|
displayName: 'Run Functional Tests'
|
|
timeoutInMinutes: 15
|
|
|
|
- script: 'python $(Build.SourcesDirectory)/scripts/RunTestList.py --list bin/functional_custom_test_list.txt --bin bin/ --output=xml --gtest_filter=-*ONBOARDING*'
|
|
workingDirectory: '$(System.ArtifactsDirectory)/$(CMakeLinuxTargetTriple)-relwithdebinfo'
|
|
displayName: 'Run Custom Functional Tests'
|
|
timeoutInMinutes: 15
|
|
|
|
- script: 'python $(Build.SourcesDirectory)/scripts/RunTestList.py --list bin/functional_test_list.txt --bin bin/ --output=xml --gtest_filter=*ONBOARDING*'
|
|
workingDirectory: '$(System.ArtifactsDirectory)/$(CMakeLinuxTargetTriple)-relwithdebinfo'
|
|
displayName: 'Run Functional Tests - Onboarding'
|
|
timeoutInMinutes: 15
|
|
continueOnError: true
|