uhd/.ci/templates/job-uhd-build-src.yml
Matthew Crymble f80898c9f3 ci: select docker image repo directly at container endpoint definitions
This fixes issues caused by e22a2a7395.
That commit tried to consolidate the selection of the endpoint based on branch name
in a single shared location.  But due to the order that azure pipelines evaluates
things, the endpoints were being authenticated before the stage variables
were evaluated.

From azure docs:
"Resources are authorized before a stage can start running,
so stage- and job-level variables aren't available. Pipeline-level
variables can be used, but only those variables explicitly included in the pipeline."
2023-07-28 15:13:44 -05:00

181 lines
7.5 KiB
YAML

parameters:
- name: 'toolset'
type: string
values:
- make
- make_custom_boost_version
- make_trace
- ninja
- msbuild
- msbuild_python
- make_homebrew_macos
- name: 'custom_boost_version_url'
type: string
default: 'https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2'
- name: release_binaries
type: boolean
default: false
jobs:
- job: build_ctest_and_upload_uhd_${{ parameters.toolset }}
displayName: ${{ parameters.toolset }}, ctest, and upload UHD
dependsOn: get_latest_uhd_docker
timeoutInMinutes: 90
variables:
# Docker vars from job-get-latest-uhd-docker.yml
dockerBuildNumber: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerBuildNumber'] ]
dockerImagePrefix: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImagePrefix'] ]
dockerImageMatrixLin: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixLin'] ]
dockerImageMatrixWin: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixWin'] ]
dockerImageMatrixUbuntuDeb: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixUbuntuDeb'] ]
macOSBuilders: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.macOSBuilders'] ]
dockerImageMatrixSourcePackageBuilders: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixSourcePackageBuilders'] ]
dockerImageMatrixFedoraRpm: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixFedoraRpm'] ]
dockerImageMatrixWinPythonBuild: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixWinPythonBuild'] ]
pool:
${{ if contains(parameters.toolset, 'msbuild') }}:
name: de-dre-lab
${{ if not(contains(parameters.toolset, 'msbuild')) }}:
name: Drivers-NIBuildFarm-RFMIBUILD
demands:
- ${{ if contains(parameters.toolset, 'msbuild') }}:
- docker
- Agent.OS -equals Windows_NT
- rfsdr-build
- ${{ if or(eq(parameters.toolset, 'make'), eq(parameters.toolset, 'make_trace'), eq(parameters.toolset, 'ninja'), eq(parameters.toolset, 'make_custom_boost_version')) }}:
- docker
- Agent.OS -equals Linux
- ${{ if eq(parameters.toolset, 'make_homebrew_macos') }}:
- Agent.OS -equals Darwin
- MACOS_MAJOR_VERSION -equals $(macOSVersionDemand)
- Agent.OSArchitecture -equals $(macOSArchDemand)
workspace:
clean: outputs
strategy:
${{ if eq(parameters.toolset, 'msbuild') }}:
matrix: $[ variables.dockerImageMatrixWin ]
${{ if eq(parameters.toolset, 'msbuild_python') }}:
matrix: $[ variables.dockerImageMatrixWinPythonBuild ]
${{ if or(eq(parameters.toolset, 'make'), eq(parameters.toolset, 'make_trace'), eq(parameters.toolset, 'ninja'), eq(parameters.toolset, 'make_custom_boost_version')) }}:
matrix: $[ variables.dockerImageMatrixLin ]
${{ if eq(parameters.toolset, 'make_homebrew_macos') }}:
matrix: $[ variables.macOSBuilders ]
${{ if ne(parameters.toolset, 'make_homebrew_macos') }}:
container:
image: '$(dockerImagePrefix)$(DockerImageName):$(dockerBuildNumber)'
${{ if or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'], 'refs/heads/UHD-')) }}:
endpoint: rnd-docker-niartifacts-ci-readonly
${{ else }}:
endpoint: rnd-docker-niartifacts-pre-readonly
steps:
- checkout: self
clean: true
- download: uhd_build_docker_container
- ${{ if eq(parameters.toolset, 'make') }}:
- template: steps-build-uhd-make.yml
parameters:
uhdSrcDir: $(Build.SourcesDirectory)
uhdBuildDir: $(Build.BinariesDirectory)/uhddev/build
uhdGenerateTestBinaries: true
- ${{ if eq(parameters.toolset, 'make_trace') }}:
- template: steps-build-uhd-make.yml
parameters:
uhdSrcDir: $(Build.SourcesDirectory)
uhdBuildDir: $(Build.BinariesDirectory)/uhddev/build
uhdEnableTraceLog: true
- ${{ if eq(parameters.toolset, 'make_homebrew_macos') }}:
- template: steps-build-uhd-make-homebrew-macos.yml
parameters:
uhdSrcDir: $(Build.SourcesDirectory)
uhdBuildDir: $(Build.BinariesDirectory)/uhddev/build
uhdGenerateTestBinaries: true
- ${{ if eq(parameters.toolset, 'ninja') }}:
- template: steps-build-uhd-ninja.yml
parameters:
uhdSrcDir: $(Build.SourcesDirectory)
uhdBuildDir: $(Build.BinariesDirectory)/uhddev/build
- ${{ if eq(parameters.toolset, 'msbuild') }}:
- template: steps-build-uhd-msbuild.yml
parameters:
uhdSrcDir: $(Build.SourcesDirectory)
uhdBuildDir: $(Build.BinariesDirectory)\\uhddev\\build
uhdReleaseBinaries: ${{ parameters.release_binaries }}
uhdBuildPythonAPI: false
cmakeCompiler: $(cmakeCompiler)
cmakeArch: $(cmakeArch)
vsArch: $(vsArch)
vsYear: $(vsYear)
uhdGenerateTestBinaries: true
- ${{ if eq(parameters.toolset, 'msbuild_python') }}:
- template: steps-build-uhd-msbuild.yml
parameters:
uhdSrcDir: $(Build.SourcesDirectory)
uhdBuildDir: $(Build.BinariesDirectory)\\uhddev\\build
uhdReleaseBinaries: ${{ parameters.release_binaries }}
uhdBuildPythonAPI: true
cmakeCompiler: $(cmakeCompiler)
cmakeArch: $(cmakeArch)
vsArch: $(vsArch)
vsYear: $(vsYear)
uhdGenerateTestBinaries: true
- ${{ if eq(parameters.toolset, 'make_custom_boost_version') }}:
- template: steps-build-uhd-make.yml
parameters:
uhdSrcDir: $(Build.SourcesDirectory)
uhdBuildDir: $(Build.BinariesDirectory)/uhddev/build
uhdCustomBoostPackage: true
uhdCustomBoostPackageURL: ${{ parameters.custom_boost_version_url }}
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: $(Build.BinariesDirectory)
includeRootFolder: false
archiveType: tar
tarCompression: gz
archiveFile: $(Build.ArtifactStagingDirectory)/uhddev-$(buildOSName)-${{ parameters.toolset }}.tar.gz
replaceExistingArchive: true
displayName: Compress build files
- task: CopyFiles@2
inputs:
sourceFolder: $(Pipeline.Workspace)/uhd_build_docker_container/$(UHDPipelineDockerImageArtifactName)
targetFolder: $(Build.ArtifactStagingDirectory)
displayName: Copy builder container version to artifact folder
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: 'uhddev-$(buildOSName)-${{ parameters.toolset }}-failed$(System.JobAttempt)'
condition: in(variables['Agent.JobStatus'], 'SucceededWithIssues', 'Failed', 'Canceled')
displayName: Upload uhd build artifacts from failure
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: 'uhddev-$(buildOSName)-${{ parameters.toolset }}'
condition: in(variables['Agent.JobStatus'], 'Succeeded')
displayName: Upload uhd build artifacts
- task: CopyFiles@2
inputs:
sourceFolder: $(Build.BinariesDirectory)/uhddev/
contents: build/Testing/**
targetFolder: $(Common.TestResultsDirectory)
displayName: Copy ${{ parameters.toolset }} ctest results
- task: PublishTestResults@2
inputs:
testResultsFormat: cTest
testResultsFiles: $(Common.TestResultsDirectory)/build/Testing/**/Test.xml
failTaskOnFailedTests: true
testRunTitle: uhd ctest $(buildOSName)-${{ parameters.toolset }}
displayName: Publish $(buildOSName)-${{ parameters.toolset }} ctest results