mirror of
https://github.com/EttusResearch/uhd.git
synced 2026-10-25 17:36:10 +00:00
209 lines
9.0 KiB
YAML
209 lines
9.0 KiB
YAML
parameters:
|
|
- name: 'toolset'
|
|
type: string
|
|
values:
|
|
- fedora_rpm
|
|
- make
|
|
- msbuild
|
|
- ubuntu_deb
|
|
- name: 'installer'
|
|
type: string
|
|
values:
|
|
- rpm # fedora_rpm
|
|
- tar # make
|
|
- nsis # msbuild
|
|
- deb # ubuntu_deb
|
|
- name: 'cmake_args'
|
|
type: string
|
|
default: " "
|
|
- name: releaseBinaries
|
|
type: boolean
|
|
default: false
|
|
# In this job, we always use uhd_images_downloader to get FPGA images, never
|
|
# the pipeline. This variable only controls if we use files.ettus.com or our
|
|
# internal server.
|
|
- name: fpga_imgs_source
|
|
type: string
|
|
default: 'Internal'
|
|
values:
|
|
- 'Internal'
|
|
- 'files.ettus.com (Public)'
|
|
- name: create_sbom
|
|
type: boolean
|
|
default: true
|
|
|
|
jobs:
|
|
- job: build_uhd_installer_${{ parameters.toolset }}
|
|
displayName: ${{ parameters.toolset }} UHD installer
|
|
dependsOn: get_latest_uhd_docker
|
|
${{ if contains(parameters.toolset, 'msbuild') }}:
|
|
timeoutInMinutes: 150
|
|
${{ else }}:
|
|
timeoutInMinutes: 120
|
|
variables:
|
|
# Need to use list format to support inclusion of variable groups.
|
|
# Variable group used by .ci/templates/steps-windows-sbom.yml@ettus-rts
|
|
- group: meta-ettus-vars
|
|
# Variable group needed for code signing (signtool-p4-path)
|
|
- ${{ if eq(parameters.toolset, 'msbuild') }}:
|
|
- group: sdr-pipeline-vars
|
|
# Docker vars from job-get-latest-uhd-docker.yml
|
|
- name: dockerBuildNumber
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerBuildNumber'] ]
|
|
- name: dockerImagePrefix
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImagePrefix'] ]
|
|
- name: dockerImageMatrixLin
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixLin'] ]
|
|
- name: dockerImageMatrixWin
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixWin'] ]
|
|
- name: dockerImageMatrixUbuntuDeb
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixUbuntuDeb'] ]
|
|
- name: macOSBuilders
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.macOSBuilders'] ]
|
|
- name: dockerImageMatrixSourcePackageBuilders
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixSourcePackageBuilders'] ]
|
|
- name: dockerImageMatrixFedoraRpm
|
|
value: $[ dependencies.get_latest_uhd_docker.outputs['setDockerVar.dockerImageMatrixFedoraRpm'] ]
|
|
pool:
|
|
name: Drivers-NIBuildFarm-RFMIBUILD
|
|
demands:
|
|
- docker
|
|
- ${{ if contains(parameters.toolset, 'msbuild') }}:
|
|
- Agent.OS -equals Windows_NT
|
|
- large_disk -equals 1
|
|
- high_disk_io -equals 1
|
|
- high_cpu_per_thread -equals 1
|
|
- cpu_host_type -equals Intel_x86-64-v4
|
|
- ${{ if not(contains(parameters.toolset, 'msbuild')) }}:
|
|
- Agent.OS -equals Linux
|
|
workspace:
|
|
clean: outputs
|
|
strategy:
|
|
${{ if and(eq(parameters.toolset, 'make'), eq(parameters.installer, 'tarball')) }}:
|
|
matrix: $[ variables.dockerImageMatrixLin ]
|
|
${{ if and(eq(parameters.toolset, 'msbuild'), eq(parameters.installer, 'nsis')) }}:
|
|
matrix: $[ variables.dockerImageMatrixWin ]
|
|
${{ if and(eq(parameters.toolset, 'ubuntu_deb'), eq(parameters.installer, 'deb')) }}:
|
|
matrix: $[ variables.dockerImageMatrixUbuntuDeb ]
|
|
${{ if and(eq(parameters.toolset, 'fedora_rpm'), eq(parameters.installer, 'rpm')) }}:
|
|
matrix: $[ variables.dockerImageMatrixFedoraRpm ]
|
|
container:
|
|
image: '$(dockerImagePrefix)$(DockerImageName):$(dockerBuildNumber)'
|
|
${{ if eq(parameters.toolset, 'msbuild') }}:
|
|
options: --cpu-count 6 --memory 12G
|
|
${{ 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
|
|
${{ if eq(parameters.toolset, 'ubuntu_deb') }}:
|
|
#pbuilder requires access to /proc
|
|
options: --privileged
|
|
steps:
|
|
# Job uses template which causes self checkout to result in different values
|
|
# for $(Build.SourcesDirectory) due to single vs multiple repositories use.
|
|
# Switching to use manual path definition $(Pipeline.Workspace)/s/<RepoName>
|
|
# for consistent behavior to avoid
|
|
# $(Pipeline.Workspace)/s vs $(Pipeline.Workspace)/s/<RepoName>).
|
|
# Custom path now includes <RepoName>, which is now hardcoded, rather than
|
|
# use name from git repo (avoids problem when building from public uhd repo).
|
|
# Checkout path needs to be defined relative to $(Pipeline.Workspace).
|
|
- checkout: self
|
|
clean: true
|
|
path: 's/uhddev'
|
|
retryCountOnTaskFailure: 3
|
|
timeoutInMinutes: 10
|
|
# Need to use OS specific steps because predefined variable
|
|
# (i.e. $(Pipeline.Workspace) on Linux is treated as runtime shell expansion,
|
|
# but actually handled by Azure and the quotes ensure correct, delayed variable
|
|
# expansion. On Windows variables are exanded before script runs, and
|
|
# using quotes results in leading or trailing quotes in the variable value.
|
|
- script: |
|
|
echo "##vso[task.setvariable variable=uhdSrcDir]$(Pipeline.Workspace)/s/uhddev"
|
|
condition: eq( variables['Agent.OS'], 'Linux' )
|
|
displayName: 'Define uhdSrcDir variable (Linux)'
|
|
- script: |
|
|
echo ##vso[task.setvariable variable=uhdSrcDir]$(Pipeline.Workspace)\s\uhddev
|
|
condition: eq( variables['Agent.OS'], 'Windows_NT' )
|
|
displayName: 'Define uhdSrcDir variable (Windows)'
|
|
|
|
|
|
- download: uhd_build_docker_container
|
|
- template: .ci/templates/steps-setup.yml@ettus-rts
|
|
- ${{ if eq(parameters.toolset, 'fedora_rpm') }}:
|
|
- template: steps-install-nib310rio-dev.yml
|
|
- template: steps-build-uhd-installer-fedora-rpm.yml
|
|
parameters:
|
|
uhdSrcDir: $(uhdSrcDir)
|
|
uhdBuildDir: $(Build.BinariesDirectory)/uhddev/build
|
|
uhdInstallerDir: $(Build.BinariesDirectory)/uhddev-installer
|
|
fedoraReleaseName: $(fedoraReleaseName)
|
|
releaseBinaries: ${{ parameters.releaseBinaries }}
|
|
cmake_args: ${{ parameters.cmake_args }}
|
|
- ${{ if parameters.create_sbom }}:
|
|
- template: .ci/templates/steps-linux-sbom.yml@ettus-rts
|
|
parameters:
|
|
toolset: ${{ parameters.toolset }}
|
|
installer: ${{ parameters.installer }}
|
|
sbomComponentList: 'uhd libuhd libboost libusb'
|
|
buildOSName: $(buildOSName)
|
|
osReleaseName: $(fedoraReleaseName)
|
|
uhdSrcDir: $(uhdSrcDir)
|
|
uhdInstallerDir: $(Build.BinariesDirectory)/uhddev-installer
|
|
releaseBinaries: ${{ parameters.releaseBinaries }}
|
|
- ${{ if eq(parameters.toolset, 'ubuntu_deb') }}:
|
|
- template: steps-install-nib310rio-dev.yml
|
|
- template: steps-build-uhd-installer-ubuntu-deb.yml
|
|
parameters:
|
|
uhdSrcDir: $(uhdSrcDir)
|
|
uhdInstallerDir: $(Build.BinariesDirectory)/uhddev-installer
|
|
ubuntuReleaseName: $(ubuntuReleaseName)
|
|
nib310rioDebPackageDir: $(Pipeline.Workspace)/nib310rio_kernel_packages/nib310rio-deb-packages
|
|
cmake_args: ${{ parameters.cmake_args }}
|
|
- ${{ if parameters.create_sbom }}:
|
|
- template: .ci/templates/steps-linux-sbom.yml@ettus-rts
|
|
parameters:
|
|
toolset: ${{ parameters.toolset }}
|
|
installer: ${{ parameters.installer }}
|
|
sbomComponentList: 'uhd libuhd'
|
|
buildOSName: $(buildOSName)
|
|
osReleaseName: $(ubuntuReleaseName)
|
|
uhdSrcDir: $(uhdSrcDir)
|
|
uhdInstallerDir: $(Build.BinariesDirectory)/uhddev-installer
|
|
releaseBinaries: ${{ parameters.releaseBinaries }}
|
|
- ${{ if and(eq(parameters.toolset, 'msbuild'), eq(parameters.installer, 'nsis')) }}:
|
|
- template: steps-build-uhd-installer-msbuild-nsis.yml
|
|
parameters:
|
|
uhdSrcDir: $(uhdSrcDir)
|
|
uhdBuildDir: c:\uhddev\build
|
|
uhdInstallerDir: $(Build.BinariesDirectory)\uhddev-installer
|
|
uhdImageDir: c:\uhd-images
|
|
uhdVcpkgManifestDir: c:\uhd-vcpkg
|
|
uhdReleaseBinaries: ${{ parameters.releaseBinaries }}
|
|
uhdBuildPythonAPI: True
|
|
${{ if contains(parameters.fpga_imgs_source, 'Internal') }}:
|
|
uhdImagesDownloaderExtraArgs: '-b $(InternalFileServerUrl)'
|
|
cmakeCompiler: $(cmakeCompiler)
|
|
cmakeArch: $(cmakeArch)
|
|
vsArch: $(vsArch)
|
|
vsYear: $(vsYear)
|
|
cleanTargetFolder: False
|
|
cmake_args: ${{ parameters.cmake_args }}
|
|
- ${{ if parameters.create_sbom }}:
|
|
- template: .ci/templates/steps-windows-sbom.yml@ettus-rts
|
|
parameters:
|
|
sbomComponentList: ''
|
|
buildOSName: $(buildOSName)
|
|
uhdSrcDir: $(uhdSrcDir)
|
|
uhdInstallerDir: $(Build.BinariesDirectory)\uhddev-installer
|
|
uhdBuildDir: c:\uhddev\build
|
|
uhdVcpkgManifestDir: c:\uhd-vcpkg
|
|
releaseBinaries: ${{ parameters.releaseBinaries }}
|
|
uhdBuildPythonAPI: True
|
|
vsArch: $(vsArch)
|
|
vsYear: $(vsYear)
|
|
- task: PublishPipelineArtifact@1
|
|
inputs:
|
|
targetPath: '$(Build.BinariesDirectory)/uhddev-installer'
|
|
artifactName: 'uhddev-$(buildOSName)-${{ parameters.toolset }}-${{ parameters.installer }}-installer'
|
|
displayName: Upload uhd installer artifact
|