Skip to content

Commit 7cfe183

Browse files
authored
Handling Proper Defaulting of BuildTargetingString within nested templates (Azure#21426)
* adding targeting-string-resolve.yml and calling at the root of each "job" in our pipeline. The BuildTargetingString should apply appropriately in all cases now.
1 parent 49472b0 commit 7cfe183

16 files changed

+119
-58
lines changed

eng/pipelines/templates/jobs/ci.tests.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ jobs:
7272
value: ${{ parameters.InjectedPackages }}
7373

7474
steps:
75+
- template: /eng/pipelines/templates/steps/targeting-string-resolve.yml
76+
parameters:
77+
BuildTargetingString: ${{ parameters.BuildTargetingString }}
78+
7579
- template: /eng/common/pipelines/templates/steps/verify-agent-os.yml
7680
parameters:
7781
AgentImage: $(OSVmImage)
@@ -99,7 +103,6 @@ jobs:
99103
OSVmImage: $(OSVmImage)
100104
CoverageArg: $(CoverageArg)
101105
PythonVersion: $(PythonVersion)
102-
BuildTargetingString: ${{ parameters.BuildTargetingString }}
103106
ToxTestEnv: $(toxenv)
104107
ToxEnvParallel: ${{ parameters.ToxEnvParallel }}
105108
InjectedPackages: $(InjectedPackages)
@@ -112,7 +115,6 @@ jobs:
112115
- template: ../steps/set-dev-build.yml
113116
parameters:
114117
ServiceDirectory: ${{ parameters.ServiceDirectory }}
115-
BuildTargetingString: ${{ parameters.BuildTargetingString }}
116118

117119
- ${{ each step in parameters.BeforeTestSteps }}:
118120
- ${{ step }}

eng/pipelines/templates/jobs/ci.yml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,13 @@ jobs:
7070
vmImage: MMSUbuntu20.04
7171

7272
steps:
73+
- template: /eng/pipelines/templates/steps/targeting-string-resolve.yml
74+
parameters:
75+
BuildTargetingString: ${{ parameters.BuildTargetingString }}
76+
7377
- template: ../steps/build-artifacts.yml
7478
parameters:
7579
ServiceDirectory: ${{ parameters.ServiceDirectory }}
76-
BuildTargetingString: ${{ parameters.BuildTargetingString }}
7780
BeforePublishSteps: ${{ parameters.BeforePublishSteps }}
7881
BuildDocs: ${{ parameters.BuildDocs }}
7982
TestPipeline: ${{ parameters.TestPipeline }}
@@ -98,6 +101,10 @@ jobs:
98101
vmImage: MMSUbuntu20.04
99102

100103
steps:
104+
- template: /eng/pipelines/templates/steps/targeting-string-resolve.yml
105+
parameters:
106+
BuildTargetingString: ${{ parameters.BuildTargetingString }}
107+
101108
- template: /eng/common/pipelines/templates/steps/check-spelling.yml
102109

103110
- template: /eng/common/pipelines/templates/steps/verify-links.yml
@@ -112,7 +119,6 @@ jobs:
112119
- template: ../steps/analyze.yml
113120
parameters:
114121
ServiceDirectory: ${{ parameters.ServiceDirectory }}
115-
BuildTargetingString: ${{ parameters.BuildTargetingString }}
116122
TestMarkArgument: ${{ parameters.TestMarkArgument }}
117123
AdditionalTestArgs: '--wheel_dir="$(Build.ArtifactStagingDirectory)"'
118124
TestPipeline: ${{ parameters.TestPipeline }}
@@ -180,7 +186,10 @@ jobs:
180186
vmImage: MMSUbuntu20.04
181187

182188
steps:
189+
- template: /eng/pipelines/templates/steps/targeting-string-resolve.yml
190+
parameters:
191+
BuildTargetingString: ${{ parameters.BuildTargetingString }}
192+
183193
- template: ../steps/test_regression.yml
184194
parameters:
185195
ServiceDirectory: ${{ parameters.ServiceDirectory }}
186-
BuildTargetingString: ${{ parameters.BuildTargetingString }}

eng/pipelines/templates/jobs/live.tests.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ jobs:
6868
value: true
6969
- name: ArmTemplateParameters
7070
value: '@{}'
71-
- name: BuildTargetingStringValue
72-
value: $[ coalesce(variables['BuildTargetingString'], '${{ parameters.BuildTargetingString }}') ]
7371

7472
timeoutInMinutes: ${{ parameters.TestTimeoutInMinutes }}
7573
continueOnError: false
@@ -87,6 +85,10 @@ jobs:
8785
parameters:
8886
AgentImage: $(OSVmImage)
8987

88+
- template: /eng/pipelines/templates/steps/targeting-string-resolve.yml
89+
parameters:
90+
BuildTargetingString: ${{ parameters.BuildTargetingString }}
91+
9092
- template: /eng/common/TestResources/build-test-resource-config.yml
9193
parameters:
9294
SubscriptionConfiguration: ${{ parameters.CloudConfig.SubscriptionConfiguration }}
@@ -101,7 +103,6 @@ jobs:
101103

102104
- template: ../steps/build-test.yml
103105
parameters:
104-
BuildTargetingString: $(BuildTargetingStringValue)
105106
ServiceDirectory: ${{ parameters.ServiceDirectory }}
106107
CloudName: ${{ parameters.CloudConfig.Cloud }}
107108
CoverageArg: $(CoverageArg)

eng/pipelines/templates/stages/archetype-sdk-client.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,6 @@ parameters:
7272

7373
stages:
7474
- stage: Build
75-
variables:
76-
- name: BuildTargetingStringValue
77-
value: $[ coalesce(variables['BuildTargetingString'], '${{ parameters.BuildTargetingString }}') ]
7875
jobs:
7976
- template: /eng/pipelines/templates/jobs/ci.yml
8077
parameters:
@@ -87,7 +84,7 @@ stages:
8784
AfterTestSteps: ${{ parameters.AfterTestSteps }}
8885
BeforePublishSteps: ${{ parameters.BeforePublishSteps }}
8986
TestMarkArgument: ${{ parameters.TestMarkArgument }}
90-
BuildTargetingString: $(BuildTargetingStringValue)
87+
BuildTargetingString: '${{ parameters.BuildTargetingString }}'
9188
TestTimeoutInMinutes: ${{ parameters.TestTimeoutInMinutes }}
9289
ToxEnvParallel: ${{ parameters.ToxEnvParallel }}
9390
InjectedPackages: ${{ parameters.InjectedPackages }}

eng/pipelines/templates/steps/analyze.yml

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
parameters:
2-
BuildTargetingString: 'azure-*'
32
ServiceDirectory: ''
43
TestMarkArgument: ''
54
AdditionalTestArgs: ''
@@ -8,6 +7,12 @@ parameters:
87
VerifyAutorest: false
98
ValidateFormatting: false
109

10+
# The variable TargetingString is set by template `eng/pipelines/templates/steps/targeting-string-resolve.yml`. This template is invoked from yml files:
11+
# eng/pipelines/templates/jobs/ci.tests.yml
12+
# eng/pipelines/templates/jobs/ci.yml
13+
# eng/pipelines/templates/jobs/live.test.yml
14+
15+
# Please use `$(TargetingString)` to refer to the python packages glob string. This was previously `${{ parameters.BuildTargetingString }}`.
1116
steps:
1217
- template: /eng/pipelines/templates/steps/analyze_dependency.yml
1318

@@ -25,16 +30,6 @@ steps:
2530
ServiceName: ${{parameters.ServiceDirectory}}
2631
ForRelease: false
2732

28-
# - template: /eng/common/pipelines/templates/steps/verify-samples.yml
29-
# parameters:
30-
# ServiceDirectory: ${{parameters.ServiceDirectory}}
31-
32-
# Using --always-succeed so as not to block the build. Once package
33-
# target is based on data available per-package the --always-succeed should
34-
# be removed so this script can help enforce correct practices
35-
# (https://github.com/Azure/azure-sdk-for-python/issues/8697)
36-
37-
3833
- pwsh: |
3934
pip install -r eng/ci_tools.txt $(if($IsWindows) {"--user" })
4035
displayName: 'Install Necessary Dependencies'
@@ -83,31 +78,28 @@ steps:
8378
condition: and(succeededOrFailed(), ne(variables['Skip.VerifySdist'],'true'))
8479
inputs:
8580
scriptPath: 'scripts/devops_tasks/setup_execute_tests.py'
86-
arguments: '"${{ parameters.BuildTargetingString }}" --service=${{parameters.ServiceDirectory}} --toxenv=verifysdist'
81+
arguments: '"$(TargetingString)" --service=${{parameters.ServiceDirectory}} --toxenv=verifysdist'
8782

8883
- task: PythonScript@0
8984
displayName: 'Verify whl'
9085
condition: and(succeededOrFailed(), ne(variables['Skip.VerifyWhl'],'true'))
9186
inputs:
9287
scriptPath: 'scripts/devops_tasks/setup_execute_tests.py'
93-
arguments: '"${{ parameters.BuildTargetingString }}" --service=${{parameters.ServiceDirectory}} --toxenv=verifywhl'
88+
arguments: '"$(TargetingString)" --service=${{parameters.ServiceDirectory}} --toxenv=verifywhl'
9489

9590
- template: run_mypy.yml
9691
parameters:
9792
ServiceDirectory: ${{ parameters.ServiceDirectory }}
98-
BuildTargetingString: ${{ parameters.BuildTargetingString }}
9993
TestMarkArgument: ${{ parameters.TestMarkArgument }}
10094

10195
- template: run_pylint.yml
10296
parameters:
10397
ServiceDirectory: ${{ parameters.ServiceDirectory }}
104-
BuildTargetingString: ${{ parameters.BuildTargetingString }}
10598

10699
- ${{ if parameters.ValidateFormatting }}:
107100
- template: run_black.yml
108101
parameters:
109102
ServiceDirectory: ${{ parameters.ServiceDirectory }}
110-
BuildTargetingString: ${{ parameters.BuildTargetingString }}
111103
ValidateFormatting: ${{ parameters.ValidateFormatting }}
112104

113105
- task: DownloadPipelineArtifact@2
@@ -119,21 +111,18 @@ steps:
119111
- template: ../steps/run_apistub.yml
120112
parameters:
121113
ServiceDirectory: ${{ parameters.ServiceDirectory }}
122-
BuildTargetingString: ${{ parameters.BuildTargetingString }}
123114
TestMarkArgument: ${{ parameters.TestMarkArgument }}
124115
AdditionalTestArgs: ${{parameters.AdditionalTestArgs}}
125116

126117
- template: ../steps/run_bandit.yml
127118
parameters:
128119
ServiceDirectory: ${{ parameters.ServiceDirectory }}
129-
BuildTargetingString: ${{ parameters.BuildTargetingString }}
130120
TestMarkArgument: ${{ parameters.TestMarkArgument }}
131121
AdditionalTestArgs: ${{parameters.AdditionalTestArgs}}
132122

133123
- template: ../steps/run_breaking_changes.yml
134124
parameters:
135125
ServiceDirectory: ${{ parameters.ServiceDirectory }}
136-
BuildTargetingString: ${{ parameters.BuildTargetingString }}
137126
TestMarkArgument: ${{ parameters.TestMarkArgument }}
138127
AdditionalTestArgs: ${{parameters.AdditionalTestArgs}}
139128

eng/pipelines/templates/steps/build-artifacts.yml

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@ parameters:
55
- name: TestPipeline
66
type: boolean
77
default: false
8-
- name: BuildTargetingString
9-
type: string
10-
default: 'azure-*'
118
- name: ServiceDirectory
129
type: string
1310
default: ''
@@ -18,13 +15,21 @@ parameters:
1815
type: object
1916
default: []
2017

18+
# The variable TargetingString is set by template `eng/pipelines/templates/steps/targeting-string-resolve.yml`. This template is invoked from yml files:
19+
# eng/pipelines/templates/jobs/ci.tests.yml
20+
# eng/pipelines/templates/jobs/ci.yml
21+
# eng/pipelines/templates/jobs/live.test.yml
22+
23+
# Please use `$(TargetingString)` to refer to the python packages glob string. This was previously `${{ parameters.BuildTargetingString }}`.
2124
steps:
2225
- template: /eng/common/pipelines/templates/steps/set-test-pipeline-version.yml
2326
parameters:
2427
PackageName: "azure-template"
2528
ServiceDirectory: "template"
2629
TestPipeline: ${{ parameters.TestPipeline }}
30+
2731
- template: /eng/common/pipelines/templates/steps/set-default-branch.yml
32+
2833
- script: |
2934
echo "##vso[build.addbuildtag]Scheduled"
3035
displayName: 'Tag scheduled builds'
@@ -43,7 +48,7 @@ steps:
4348
displayName: 'Generate Python2 Applicable Namespace Packages'
4449
inputs:
4550
scriptPath: 'scripts/devops_tasks/build_packages.py'
46-
arguments: '-d "$(Build.ArtifactStagingDirectory)" "${{ parameters.BuildTargetingString }}" --pkgfilter="nspkg" --service=${{parameters.ServiceDirectory}}'
51+
arguments: '-d "$(Build.ArtifactStagingDirectory)" "$(TargetingString)" --pkgfilter="nspkg" --service=${{parameters.ServiceDirectory}}'
4752

4853
- task: UsePythonVersion@0
4954
displayName: 'Use Python $(PythonVersion)'
@@ -57,7 +62,7 @@ steps:
5762
- template: ../steps/set-dev-build.yml
5863
parameters:
5964
ServiceDirectory: ${{ parameters.ServiceDirectory }}
60-
BuildTargetingString: ${{ parameters.BuildTargetingString }}
65+
6166
- task: Powershell@2
6267
inputs:
6368
filePath: $(Build.SourcesDirectory)/eng/common/scripts/Save-Package-Properties.ps1
@@ -73,7 +78,7 @@ steps:
7378
displayName: 'Generate Packages'
7479
inputs:
7580
scriptPath: 'scripts/devops_tasks/build_packages.py'
76-
arguments: '-d "$(Build.ArtifactStagingDirectory)" "${{ parameters.BuildTargetingString }}" --service=${{parameters.ServiceDirectory}} --devbuild="$(SetDevVersion)"'
81+
arguments: '-d "$(Build.ArtifactStagingDirectory)" "$(TargetingString)" --service=${{parameters.ServiceDirectory}} --devbuild="$(SetDevVersion)"'
7782

7883
- script: |
7984
twine check $(Build.ArtifactStagingDirectory)/**/*.whl
@@ -86,7 +91,7 @@ steps:
8691
inputs:
8792
scriptPath: 'scripts/devops_tasks/setup_execute_tests.py'
8893
arguments: >-
89-
"${{ parameters.BuildTargetingString }}"
94+
"$(TargetingString)"
9095
--service="${{ parameters.ServiceDirectory }}"
9196
--toxenv=sphinx
9297

eng/pipelines/templates/steps/build-test.yml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,22 @@ parameters:
99
BeforeTestSteps: []
1010
AfterTestSteps: []
1111
CoverageArg: ''
12-
BuildTargetingString: 'azure-*'
1312
ToxTestEnv: ""
1413
RunCoverage: ne(variables['CoverageArg'], '--disablecov')
1514
ToxEnvParallel: ''
1615
InjectedPackages: ''
1716
DevFeedName: 'public/azure-sdk-for-python'
1817

18+
# The variable TargetingString is set by template `eng/pipelines/templates/steps/targeting-string-resolve.yml`. This template is invoked from yml files:
19+
# eng/pipelines/templates/jobs/ci.tests.yml
20+
# eng/pipelines/templates/jobs/ci.yml
21+
# eng/pipelines/templates/jobs/live.test.yml
22+
23+
# Please use `$(TargetingString)` to refer to the python packages glob string. This was previously `${{ parameters.BuildTargetingString }}`.
1924
steps:
2025
- pwsh: |
2126
gci -r $(Build.ArtifactStagingDirectory)
27+
displayName: Dump Artifact Directory
2228
2329
- template: /eng/pipelines/templates/steps/use-python-version.yml
2430
parameters:
@@ -43,7 +49,7 @@ steps:
4349
inputs:
4450
scriptPath: 'scripts/devops_tasks/setup_execute_tests.py'
4551
arguments: >-
46-
"${{ parameters.BuildTargetingString }}"
52+
"$(TargetingString)"
4753
${{ parameters.AdditionalTestArgs }}
4854
${{ parameters.CoverageArg }}
4955
--mark_arg="${{ parameters.TestMarkArgument }}"
@@ -94,7 +100,7 @@ steps:
94100
inputs:
95101
scriptPath: 'scripts/devops_tasks/setup_execute_tests.py'
96102
arguments: >-
97-
"${{ parameters.BuildTargetingString }}"
103+
"$(TargetingString)"
98104
--service="${{ parameters.ServiceDirectory }}"
99105
--toxenv="samples"
100106
env: ${{ parameters.EnvVars }}

eng/pipelines/templates/steps/run_apistub.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
parameters:
2-
BuildTargetingString: 'azure-*'
32
ServiceDirectory: ''
43
TestMarkArgument: ''
54
AdditionalTestArgs: ''
65

6+
# The variable TargetingString is set by template `eng/pipelines/templates/steps/targeting-string-resolve.yml`. This template is invoked from yml files:
7+
# eng/pipelines/templates/jobs/ci.tests.yml
8+
# eng/pipelines/templates/jobs/ci.yml
9+
# eng/pipelines/templates/jobs/live.test.yml
10+
11+
# Please use `$(TargetingString)` to refer to the python packages glob string. This was previously `${{ parameters.BuildTargetingString }}`.
712
steps:
813
- task: PythonScript@0
914
displayName: 'Run Api Stub Generation'
1015
condition: and(succeededOrFailed(), ne(variables['Skip.ApiStubGen'],'true'))
1116
inputs:
1217
scriptPath: 'scripts/devops_tasks/setup_execute_tests.py'
1318
arguments: >-
14-
"${{ parameters.BuildTargetingString }}"
19+
"$(TargetingString)"
1520
${{ parameters.AdditionalTestArgs }}
1621
--mark_arg="${{ parameters.TestMarkArgument }}"
1722
--service="${{ parameters.ServiceDirectory }}"

eng/pipelines/templates/steps/run_bandit.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
parameters:
2-
BuildTargetingString: 'azure-*'
32
ServiceDirectory: ''
43
TestMarkArgument: ''
54
EnvVars: {}
65

6+
# The variable TargetingString is set by template `eng/pipelines/templates/steps/targeting-string-resolve.yml`. This template is invoked from yml files:
7+
# eng/pipelines/templates/jobs/ci.tests.yml
8+
# eng/pipelines/templates/jobs/ci.yml
9+
# eng/pipelines/templates/jobs/live.test.yml
10+
11+
# Please use `$(TargetingString)` to refer to the python packages glob string. This was previously `${{ parameters.BuildTargetingString }}`.
712
steps:
813
- task: PythonScript@0
914
displayName: 'Run Bandit'
1015
inputs:
1116
scriptPath: 'scripts/devops_tasks/setup_execute_tests.py'
1217
arguments: >-
13-
"${{ parameters.BuildTargetingString }}"
18+
"$(TargetingString)"
1419
--mark_arg="${{ parameters.TestMarkArgument }}"
1520
--service="${{ parameters.ServiceDirectory }}"
1621
--toxenv="bandit"

eng/pipelines/templates/steps/run_black.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
parameters:
2-
BuildTargetingString: 'azure-*'
32
ServiceDirectory: ''
43
ValidateFormatting: false
54
EnvVars: {}

0 commit comments

Comments
 (0)