Skip to content

Commit 1922151

Browse files
authored
Merge pull request #586 from MiYanni/AllowVersionParameters
2 parents b7b62bb + b4143f9 commit 1922151

File tree

3 files changed

+159
-2
lines changed

3 files changed

+159
-2
lines changed

eng/create-version-override.ps1

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Creates a Version.Overrides.props file to override version components for the workload set creation.
2+
3+
# $createTestWorkloadSet:
4+
# - If $true, adds PreReleaseVersionIteration overrides for creating a test workload set.
5+
# - If $false, does not add any PreReleaseVersionIteration overrides.
6+
# $versionSdkMinor: Adds the VersionSdkMinor property to the Version.Overrides.props file with the provided value.
7+
# - Example Value: '2'
8+
# $versionFeature: Adds the VersionFeature property to the Version.Overrides.props file with the provided value.
9+
# - Example Value: '01'
10+
# $versionPatch: Adds the VersionPatch property to the Version.Overrides.props file with the provided value.
11+
# - Example Value: '4'
12+
# $preReleaseVersionLabel: Adds the PreReleaseVersionLabel property to the Version.Overrides.props file with the provided value.
13+
# - Example Value: 'preview'
14+
# $preReleaseVersionIteration: Adds the PreReleaseVersionIteration property to the Version.Overrides.props file with the provided value.
15+
# - Example Value: '1'
16+
17+
param ([bool] $createTestWorkloadSet = $false, [string] $versionSdkMinor = '|default|', [string] $versionFeature = '|default|', [string] $versionPatch = '|default|', [string] $preReleaseVersionLabel = '|default|', [string] $preReleaseVersionIteration = '|default|')
18+
19+
$containsNonDefault = ($sdkVersionMinor, $versionFeature, $versionPatch, $preReleaseVersionLabel, $preReleaseVersionIteration | Where-Object { $_ -ne '|default|' }) -ne $null
20+
21+
if (-not $containsNonDefault -and -not $createTestWorkloadSet) {
22+
Write-Host 'No version overrides to apply.'
23+
exit 0
24+
}
25+
26+
$xmlDoc = New-Object System.Xml.XmlDocument
27+
$project = $xmlDoc.CreateElement('Project')
28+
$propertyGroup1 = $xmlDoc.CreateElement('PropertyGroup')
29+
30+
if ($versionSdkMinor -ne '|default|') {
31+
$versionSdkMinorElem = $xmlDoc.CreateElement('VersionSdkMinor')
32+
$versionSdkMinorElem.InnerText = $versionSdkMinor
33+
$null = $propertyGroup1.AppendChild($versionSdkMinorElem)
34+
Write-Host "Setting VersionSdkMinor to $versionSdkMinor."
35+
}
36+
37+
if ($versionFeature -ne '|default|') {
38+
$versionFeatureElem = $xmlDoc.CreateElement('VersionFeature')
39+
$versionFeatureElem.InnerText = $versionFeature
40+
$null = $propertyGroup1.AppendChild($versionFeatureElem)
41+
Write-Host "Setting VersionFeature to $versionFeature."
42+
}
43+
44+
if ($versionPatch -ne '|default|') {
45+
$versionPatchElem = $xmlDoc.CreateElement('VersionPatch')
46+
$versionPatchElem.InnerText = $versionPatch
47+
$null = $propertyGroup1.AppendChild($versionPatchElem)
48+
Write-Host "Setting VersionPatch to $versionPatch."
49+
}
50+
51+
if ($preReleaseVersionLabel -ne '|default|') {
52+
$preReleaseVersionLabelElem = $xmlDoc.CreateElement('PreReleaseVersionLabel')
53+
$preReleaseVersionLabelElem.InnerText = $preReleaseVersionLabel
54+
$null = $propertyGroup1.AppendChild($preReleaseVersionLabelElem)
55+
Write-Host "Setting PreReleaseVersionLabel to $preReleaseVersionLabel."
56+
}
57+
58+
if ($preReleaseVersionIteration -ne '|default|') {
59+
$preReleaseVersionIterationElem = $xmlDoc.CreateElement('PreReleaseVersionIteration')
60+
$null = $preReleaseVersionIterationElem.SetAttribute('Condition', "'`$(StabilizePackageVersion)' != 'true'")
61+
$preReleaseVersionIterationElem.InnerText = $preReleaseVersionIteration
62+
$null = $propertyGroup1.AppendChild($preReleaseVersionIterationElem)
63+
Write-Host "Setting PreReleaseVersionIteration to $preReleaseVersionIteration."
64+
}
65+
66+
$null = $project.AppendChild($propertyGroup1)
67+
$propertyGroup2 = $xmlDoc.CreateElement('PropertyGroup')
68+
69+
$versionPrefix = $xmlDoc.CreateElement('VersionPrefix')
70+
$versionPrefix.InnerText = '$(VersionMajor).$(VersionSdkMinor)$(VersionFeature).$(VersionPatch)'
71+
$null = $propertyGroup2.AppendChild($versionPrefix)
72+
73+
$workloadsVersion1 = $xmlDoc.CreateElement('WorkloadsVersion')
74+
$workloadsVersion1.InnerText = '$(VersionMajor).$(VersionMinor).$(VersionSdkMinor)$(VersionFeature)'
75+
$null = $propertyGroup2.AppendChild($workloadsVersion1)
76+
77+
$workloadsVersion2 = $xmlDoc.CreateElement('WorkloadsVersion')
78+
$null = $workloadsVersion2.SetAttribute('Condition', "'`$(StabilizePackageVersion)' == 'true' and '`$(VersionPatch)' != '0'")
79+
$workloadsVersion2.InnerText = '$(WorkloadsVersion).$(VersionPatch)'
80+
$null = $propertyGroup2.AppendChild($workloadsVersion2)
81+
82+
$sdkFeatureBand1 = $xmlDoc.CreateElement('SdkFeatureBand')
83+
$sdkFeatureBand1.InnerText = '$(VersionMajor).$(VersionMinor).$(VersionSdkMinor)00'
84+
$null = $propertyGroup2.AppendChild($sdkFeatureBand1)
85+
86+
$sdkFeatureBand2 = $xmlDoc.CreateElement('SdkFeatureBand')
87+
$null = $sdkFeatureBand2.SetAttribute('Condition', "'`$(StabilizePackageVersion)' != 'true' and '`$(PreReleaseVersionLabel)' != 'servicing'")
88+
$sdkFeatureBand2.InnerText = '$(SdkFeatureBand)-$(PreReleaseVersionLabel).$(PreReleaseVersionIteration)'
89+
$null = $propertyGroup2.AppendChild($sdkFeatureBand2)
90+
91+
if ($createTestWorkloadSet) {
92+
$preReleaseVersionIteration1 = $xmlDoc.CreateElement('PreReleaseVersionIteration')
93+
$null = $preReleaseVersionIteration1.SetAttribute('Condition', "'`$(PreReleaseVersionLabel)' != 'servicing'")
94+
$preReleaseVersionIteration1.InnerText = '$(PreReleaseVersionIteration).0'
95+
$null = $propertyGroup2.AppendChild($preReleaseVersionIteration1)
96+
97+
$preReleaseVersionIteration2 = $xmlDoc.CreateElement('PreReleaseVersionIteration')
98+
$null = $preReleaseVersionIteration2.SetAttribute('Condition', "'`$(PreReleaseVersionLabel)' == 'servicing'")
99+
$preReleaseVersionIteration2.InnerText = '0'
100+
$null = $propertyGroup2.AppendChild($preReleaseVersionIteration2)
101+
Write-Host 'Setting PreReleaseVersionIteration for test workload set.'
102+
}
103+
104+
$null = $project.AppendChild($propertyGroup2)
105+
$null = $xmlDoc.AppendChild($project)
106+
107+
$versionOverridesPath = Join-Path -Path $PSScriptRoot -ChildPath 'Version.Overrides.props'
108+
$null = $xmlDoc.Save($versionOverridesPath)

eng/pipelines/official.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ parameters:
1414
- name: sourceBranch
1515
displayName: 🚩 Source branch 🚩
1616
type: string
17+
- name: createTestWorkloadSet
18+
displayName: ⭐ Create a test workload set
19+
type: boolean
20+
default: false
1721

1822
- name: dividerAzDO
1923
displayName: '[ ######## AZURE DEVOPS ######## ]'
@@ -87,6 +91,39 @@ parameters:
8791
type: boolean
8892
default: false
8993

94+
- name: dividerSetVersion
95+
displayName: '[ ######## SET VERSION ######## ]'
96+
type: boolean
97+
default: false
98+
- name: setVersionSdkMinor
99+
displayName: Set version SDK minor (one digit)
100+
type: string
101+
default: '|default|'
102+
- name: setVersionFeature
103+
displayName: Set version feature (two digits)
104+
type: string
105+
default: '|default|'
106+
- name: setVersionPatch
107+
displayName: Set version patch
108+
type: string
109+
default: '|default|'
110+
- name: setPreReleaseVersionLabel
111+
displayName: Set pre-release version label
112+
type: string
113+
default: '|default|'
114+
values:
115+
- '|default|'
116+
- servicing
117+
- preview
118+
- rc
119+
- alpha
120+
- rtm
121+
- test
122+
- name: setPreReleaseVersionIteration
123+
displayName: Set pre-release version iteration
124+
type: string
125+
default: '|default|'
126+
90127
variables:
91128
# Variables used: DncEngInternalBuildPool
92129
- template: /eng/common/templates-official/variables/pool-providers.yml@source
@@ -155,6 +192,12 @@ extends:
155192
usePreComponentsForVSInsertion: ${{ parameters.usePreComponentsForVSInsertion }}
156193
includeNonShippingWorkloads: ${{ parameters.includeNonShippingWorkloads }}
157194
workloadDropNames: ${{ parameters.workloadDropNames }}
195+
createTestWorkloadSet: ${{ parameters.createTestWorkloadSet }}
196+
setVersionSdkMinor: ${{ parameters.setVersionSdkMinor }}
197+
setVersionFeature: ${{ parameters.setVersionFeature }}
198+
setVersionPatch: ${{ parameters.setVersionPatch }}
199+
setPreReleaseVersionLabel: ${{ parameters.setPreReleaseVersionLabel }}
200+
setPreReleaseVersionIteration: ${{ parameters.setPreReleaseVersionIteration }}
158201

159202
- ${{ if eq(parameters.createVSInsertion, true) }}:
160203
- stage: Insertion

eng/pipelines/templates/jobs/workload-build.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,14 @@ jobs:
7373
-workloadListJson '$(WorkloadListJson)'
7474
-usePreComponents:$${{ parameters.usePreComponentsForVSInsertion }}
7575
-includeNonShipping:$${{ parameters.includeNonShippingWorkloads }}
76-
76+
- powershell: eng/create-version-override.ps1
77+
-createTestWorkloadSet:$${{ parameters.createTestWorkloadSet }}
78+
-versionSdkMinor '${{ parameters.setVersionSdkMinor }}'
79+
-versionFeature '${{ parameters.setVersionFeature }}'
80+
-versionPatch '${{ parameters.setVersionPatch }}'
81+
-preReleaseVersionLabel '${{ parameters.setPreReleaseVersionLabel }}'
82+
-preReleaseVersionIteration '${{ parameters.setPreReleaseVersionIteration }}'
83+
displayName: 🟣 Create Version.Overrides.props
7784
# https://github.com/dotnet/arcade/blob/ccae251ef033746eb0213329953f5e3c1687693b/Documentation/CorePackages/Publishing.md#basic-onboarding-scenario-for-new-repositories-to-the-current-publishing-version-v3
7885
- powershell: >-
7986
eng/common/build.ps1
@@ -89,7 +96,6 @@ jobs:
8996
displayName: 🟣 Build solution
9097
# Name is required to reference the variables created within this build step in other stages.
9198
name: BuildSolution
92-
9399
- ${{ if eq(parameters.createVSInsertion, true) }}:
94100
- task: 1ES.PublishPipelineArtifact@1
95101
displayName: 🟣 Publish workload artifacts

0 commit comments

Comments
 (0)