Skip to content

Commit

Permalink
[CI] Move the templates jobs to a yml template to be reusable. (#13682)
Browse files Browse the repository at this point in the history
Move the jobs and the default values to a template, this will allow the
megapipeline to reuse the template and be able to run the tests.

Some extra parameters have been added to allow the megapipeline to
provide an upload prefix and the artefct names to download.
  • Loading branch information
mandel-macaque authored Mar 7, 2023
2 parents f050bf1 + 60582bd commit a7771d4
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 47 deletions.
101 changes: 101 additions & 0 deletions eng/pipelines/common/maui-templates.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
parameters:
- name: condition
default: true

- name: artifactName
type: string
default: nuget

- name: artefactItemPattern
type: string
default: '**/*.nupkg'

- name: uploadPrefix
type: string
default: ''

- name: BuildConfigurations
type: object
default:
- Debug
- Release

- name: BuildPlatforms
type: object
default:
- name: Windows
poolName: $(windowsNet6VmPool)
vmImage: $(windowsNet6VmImage)
bootsAndroid: $(Android.Msi)
bootsiOS: $(iOS.Msi)
artifact: build-windows
- name: macOS
poolName: $(macOSXNet6VmPool)
vmImage: $(macOSXNet6VmImage)
bootsAndroid: $(Android.Pkg)
bootsiOS: $(iOS.Pkg)
bootsMacCatalyst: $(MacCatalyst.Pkg)
artifact: build-macos

- name: TestTargetFrameworks
type: object
default:
- name: default
tfm: default
- name: net6
tfm: net6.0
- name: net7
tfm: net7.0

jobs:
- ${{ each BuildPlatform in parameters.BuildPlatforms }}:
- ${{ each BuildConfiguration in parameters.BuildConfigurations }}:
- ${{ each TestTFM in parameters.TestTargetFrameworks }}:
- job: build_${{ TestTFM.name }}_${{ BuildPlatform.name }}_${{ BuildConfiguration }}
workspace:
clean: all
displayName: ${{ BuildPlatform.name }} ${{ TestTFM.tfm }} (${{ BuildConfiguration }})
timeoutInMinutes: 240
condition: or(
${{ parameters.condition}},
eq('${{ BuildConfiguration }}', 'Release')
)
pool:
name: ${{ BuildPlatform.poolName }}
vmImage: ${{ BuildPlatform.vmImage }}
demands:
- macOS.Name -equals Monterey
- macOS.Architecture -equals x64
- Agent.HasDevices -equals False
- Agent.IsPaired -equals False
steps:
- template: provision.yml
parameters:
platform: ${{ BuildPlatform.name }}
poolName: ${{ BuildPlatform.poolName }}

- task: DownloadBuildArtifacts@0
displayName: 'Download Packages'
inputs:
artifactName: ${{ parameters.artifactName }}
itemPattern: ${{ parameters.artefactItemPattern }}
downloadPath: $(System.DefaultWorkingDirectory)/artifacts

- pwsh: Move-Item -Path artifacts\nuget\*.nupkg -Destination artifacts -Force
displayName: Move the downloaded artifacts

- pwsh: ./build.ps1 --target=dotnet-local-workloads --configuration="${{ BuildConfiguration }}" --verbosity=diagnostic
displayName: 'Install .NET (Local Workloads)'
retryCountOnTaskFailure: 3
env:
DOTNET_TOKEN: $(dotnetbuilds-internal-container-read-token)
PRIVATE_BUILD: $(PrivateBuild)

- pwsh: ./build.ps1 --target=dotnet-templates --configuration="${{ BuildConfiguration }}" --testtfm="${{ TestTFM.tfm }}" --verbosity=diagnostic
displayName: 'Build .NET MAUI Templates'

- task: PublishBuildArtifacts@1
condition: always()
displayName: publish artifacts
inputs:
ArtifactName: '${{ parameters.uploadPrefix }}${{ BuildPlatform.artifact }}'
55 changes: 8 additions & 47 deletions eng/pipelines/handlers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -258,53 +258,14 @@ stages:
displayName: Build .NET MAUI Templates
dependsOn: pack_net
jobs:
- ${{ each BuildPlatform in parameters.BuildPlatforms }}:
- ${{ each BuildConfiguration in parameters.BuildConfigurations }}:
- ${{ each TestTFM in parameters.TestTargetFrameworks }}:
- job: build_${{ TestTFM.name }}_${{ BuildPlatform.name }}_${{ BuildConfiguration }}
workspace:
clean: all
displayName: ${{ BuildPlatform.name }} ${{ TestTFM.tfm }} (${{ BuildConfiguration }})
timeoutInMinutes: 240
condition: or(
${{ parameters.BuildEverything }},
ne(variables['Build.Reason'], 'PullRequest'),
eq('${{ BuildConfiguration }}', 'Release'))
pool:
name: ${{ BuildPlatform.poolName }}
vmImage: ${{ BuildPlatform.vmImage }}
demands:
- macOS.Name -equals Monterey
- macOS.Architecture -equals x64
- Agent.HasDevices -equals False
- Agent.IsPaired -equals False
steps:
- template: common/provision.yml
parameters:
platform: ${{ BuildPlatform.name }}
poolName: ${{ BuildPlatform.poolName }}

- task: DownloadBuildArtifacts@0
displayName: 'Download Packages'
inputs:
artifactName: nuget
itemPattern: '**/*.nupkg'
downloadPath: $(System.DefaultWorkingDirectory)/artifacts
- pwsh: Move-Item -Path artifacts\nuget\*.nupkg -Destination artifacts -Force
displayName: Move the downloaded artifacts
- pwsh: ./build.ps1 --target=dotnet-local-workloads --configuration="${{ BuildConfiguration }}" --verbosity=diagnostic
displayName: 'Install .NET (Local Workloads)'
retryCountOnTaskFailure: 3
env:
DOTNET_TOKEN: $(dotnetbuilds-internal-container-read-token)
PRIVATE_BUILD: $(PrivateBuild)
- pwsh: ./build.ps1 --target=dotnet-templates --configuration="${{ BuildConfiguration }}" --testtfm="${{ TestTFM.tfm }}" --verbosity=diagnostic
displayName: 'Build .NET MAUI Templates'
- task: PublishBuildArtifacts@1
condition: always()
displayName: publish artifacts
inputs:
ArtifactName: ${{ BuildPlatform.artifact }}
- template: common/maui-templates.yml
parameters:
BuildConfigurations: ${{ parameters.BuildConfigurations }}
BuildPlatforms: ${{ parameters.BuildPlatforms }}
TestTargetFrameworks: ${{ parameters.TestTargetFrameworks }}
condition: or(
${{ parameters.BuildEverything }},
ne(variables['Build.Reason'], 'PullRequest'))

- template: common/security-compliance.yml

Expand Down

0 comments on commit a7771d4

Please sign in to comment.