aboutsummaryrefslogtreecommitdiffstats
path: root/.ci/templates/job-uhd-build-src.yml
blob: 49c65c1da1e520bb9521fed1e35410cf96f54b67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
parameters:
- name: 'toolset'
  type: string
  values:
  - make
  - make_custom_boost_version
  - make_trace
  - ninja
  - msbuild
  - 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
  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'] ]
  pool:
    ${{ if eq(parameters.toolset, 'msbuild') }}:
      name: de-dre-lab
    ${{ if ne(parameters.toolset, 'msbuild') }}:
      name: Drivers-NIBuildFarm-RFMIBUILD
    demands:
      - ${{ if eq(parameters.toolset, 'msbuild') }}:
        - docker
        - Agent.OS -equals Windows_NT
      - ${{ 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
        - Agent.OSVersion -equals $(macOSVersionDemand)
        - Agent.OSArchitecture -equals $(macOSArchDemand)
  workspace:
    clean: outputs
  strategy:
    ${{ if eq(parameters.toolset, 'msbuild') }}:
      matrix: $[ variables.dockerImageMatrixWin ]
    ${{ 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)'
      endpoint: 'Docker / Artifactory - rnd-builds-local'
  steps:
  - checkout: self
    clean: true

  - download: uhd_build_docker_container

  - ${{ if eq(parameters.toolset, 'make') }}:
    - template: steps-build-uhd-make.yml
      parameters:
        uhdSrcDir: ../../../s
        uhdBuildDir: $(Build.BinariesDirectory)/uhddev/build
        uhdGenerateTestBinaries: true

  - ${{ if eq(parameters.toolset, 'make_trace') }}:
    - template: steps-build-uhd-make.yml
      parameters:
        uhdSrcDir: ../../../s
        uhdBuildDir: $(Build.BinariesDirectory)/uhddev/build
        uhdEnableTraceLog: true

  - ${{ if eq(parameters.toolset, 'make_homebrew_macos') }}:
    - template: steps-build-uhd-make-homebrew-macos.yml
      parameters:
        uhdSrcDir: ../../../s
        uhdBuildDir: $(Build.BinariesDirectory)/uhddev/build

  - ${{ if eq(parameters.toolset, 'ninja') }}:
    - template: steps-build-uhd-ninja.yml
      parameters:
        uhdSrcDir: ../../../s
        uhdBuildDir: $(Build.BinariesDirectory)/uhddev/build

  - ${{ if eq(parameters.toolset, 'msbuild') }}:
    - template: steps-build-uhd-msbuild.yml
      parameters:
        uhdSrcDir: ../../../s
        uhdBuildDir: $(Build.BinariesDirectory)\\uhddev\\build
        uhdImageDir: $(Build.BinariesDirectory)\\uhd-images
        uhdReleaseBinaries: ${{ parameters.release_binaries }}
        cmakeCompiler: $(cmakeCompiler)
        cmakeArch: $(cmakeArch)
        vsArch: $(vsArch)
        vsYear: $(vsYear)

  - ${{ 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)/$(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: '$(buildOSName)-${{ parameters.toolset }}'
    displayName: Upload uhd build artifacts

  - task: CopyFiles@2
    inputs:
      sourceFolder: $(Build.BinariesDirectory)/uhddev/
      contents: build/Testing/**
      targetFolder: $(Common.TestResultsDirectory)
    condition: and(succeeded(), ne('${{ parameters.toolset }}', 'make_homebrew_macos'))
    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 }}
    condition: and(succeeded(), ne('${{ parameters.toolset }}', 'make_homebrew_macos'))
    displayName: Publish $(buildOSName)-${{ parameters.toolset }} ctest results