Skip to content

Commit fbe7f4a

Browse files
authored
Run smoke tests against latest published versions in release pipeline (Azure#15865)
* Run smoke tests on release * Use pipeline artifact versions for smoke test on release * Use correct logic for daily conditional
1 parent 5760cbc commit fbe7f4a

File tree

6 files changed

+241
-130
lines changed

6 files changed

+241
-130
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
azure-core>=0.0.0b1
2+
azure-identity>=0.0.0b1
3+
azure-cosmos>=4.0.0b5
4+
azure-eventhub>=0.0.0b1
5+
azure-keyvault-certificates>=0.0.0b1
6+
azure-keyvault-keys>=0.0.0b1
7+
azure-keyvault-secrets>=0.0.0b1
8+
azure-storage-blob>=0.0.0b1

common/smoketest/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ azure-eventhub
55
azure-keyvault-certificates
66
azure-keyvault-keys
77
azure-keyvault-secrets
8-
azure-storage-blob
8+
azure-storage-blob

common/smoketest/smoke-test.yml

Lines changed: 3 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,4 @@
1-
variables:
2-
InstallAsyncRequirements: true
3-
41
jobs:
5-
- job:
6-
strategy:
7-
matrix:
8-
Python_27_Linux (AzureCloud):
9-
PythonVersion: '2.7'
10-
InstallAsyncRequirements: false
11-
OSVmImage: ubuntu-18.04
12-
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
13-
ArmTemplateParameters: $(azureCloudArmParameters)
14-
Python_37_Linux (AzureCloud):
15-
PythonVersion: '3.7'
16-
OSVmImage: ubuntu-18.04
17-
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
18-
ArmTemplateParameters: $(azureCloudArmParameters)
19-
Python_38_Linux (AzureCloud):
20-
PythonVersion: '3.8'
21-
OSVmImage: ubuntu-18.04
22-
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
23-
ArmTemplateParameters: $(azureCloudArmParameters)
24-
Python_38_Linux (AzureCloud Canary):
25-
PythonVersion: '3.8'
26-
OSVmImage: ubuntu-18.04
27-
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources-preview)
28-
ArmTemplateParameters: $(azureCloudArmParameters)
29-
Location: 'eastus2euap'
30-
Python_37_Windows (AzureCloud):
31-
PythonVersion: '3.7'
32-
OSVmImage: windows-2019
33-
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
34-
ArmTemplateParameters: $(azureCloudArmParameters)
35-
Python_38_Windows (AzureCloud):
36-
PythonVersion: '3.8'
37-
OSVmImage: windows-2019
38-
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
39-
ArmTemplateParameters: $(azureCloudArmParameters)
40-
Python_37_Mac (AzureCloud):
41-
PythonVersion: '3.7'
42-
OSVmImage: macOS-10.15
43-
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
44-
ArmTemplateParameters: $(azureCloudArmParameters)
45-
Python_38_Mac (AzureCloud):
46-
PythonVersion: '3.8'
47-
OSVmImage: macOS-10.15
48-
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
49-
ArmTemplateParameters: $(azureCloudArmParameters)
50-
Python_38_Linux (AzureUSGovernment):
51-
PythonVersion: '3.8'
52-
OSVmImage: ubuntu-18.04
53-
SubscriptionConfiguration: $(sub-config-gov-test-resources)
54-
ArmTemplateParameters: $(azureUSGovernmentArmParameters)
55-
Python_37_Windows (AzureUSGovernment):
56-
PythonVersion: '3.7'
57-
OSVmImage: windows-2019
58-
SubscriptionConfiguration: $(sub-config-gov-test-resources)
59-
ArmTemplateParameters: $(azureUSGovernmentArmParameters)
60-
Python_38_Linux (AzureChinaCloud):
61-
PythonVersion: '3.8'
62-
OSVmImage: ubuntu-18.04
63-
SubscriptionConfiguration: $(sub-config-cn-test-resources)
64-
Location: 'chinanorth'
65-
ArmTemplateParameters: $(azureChinaCloudArmParameters)
66-
Python_37_Windows (AzureChinaCloud):
67-
PythonVersion: '3.7'
68-
OSVmImage: windows-2019
69-
SubscriptionConfiguration: $(sub-config-cn-test-resources)
70-
Location: 'chinanorth'
71-
ArmTemplateParameters: $(azureChinaCloudArmParameters)
72-
73-
pool:
74-
vmImage: $(OSVmImage)
75-
76-
variables:
77-
Location: ''
78-
azureCloudArmParameters: "@{ storageEndpointSuffix = 'core.windows.net'; azureCloud = 'AzureCloud'; }"
79-
azureUSGovernmentArmParameters: "@{ storageEndpointSuffix = 'core.usgovcloudapi.net'; azureCloud = 'AzureUSGovernment'; }"
80-
azureChinaCloudArmParameters: "@{ storageEndpointSuffix = 'core.chinacloudapi.cn'; azureCloud = 'AzureChinaCloud'; }"
81-
82-
steps:
83-
- task: UsePythonVersion@0
84-
displayName: "Use Python $(PythonVersion)"
85-
inputs:
86-
versionSpec: $(PythonVersion)
87-
88-
- script: |
89-
python -m pip install pip==20.0.2
90-
pip --version
91-
displayName: pip --version
92-
93-
- script: pip install -r ./common/smoketest/requirements.txt --pre --no-deps --index-url https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple
94-
displayName: Install requirements from dev feed without dependencies
95-
96-
- script: pip install -r ./common/smoketest/requirements_async.txt
97-
displayName: "Install requirements_async.txt"
98-
condition: and(succeeded(), eq(variables['InstallAsyncRequirements'], 'true'))
99-
100-
- script: python ./common/smoketest/dependencies.py -r ./common/smoketest/requirements.txt | tee ./common/smoketest/requirements_dependencies.txt
101-
displayName: Create dependency list from installed dev packages
102-
103-
- script: pip install -r ./common/smoketest/requirements_dependencies.txt
104-
displayName: Install dev package dependencies from PyPI
105-
106-
- script: pip freeze
107-
displayName: Show installed packages (pip freeze)
108-
109-
- template: /eng/common/TestResources/deploy-test-resources.yml
110-
parameters:
111-
ServiceDirectory: '$(Build.SourcesDirectory)/common/smoketest/'
112-
SubscriptionConfiguration: $(SubscriptionConfiguration)
113-
Location: $(Location)
114-
ArmTemplateParameters: $(ArmTemplateParameters)
115-
116-
- script: python ./common/smoketest/program.py
117-
displayName: Run Smoke Test
118-
119-
- template: /eng/common/TestResources/remove-test-resources.yml
120-
parameters:
121-
ServiceDirectory: '$(Build.SourcesDirectory)/common/smoketest/'
122-
SubscriptionConfiguration: $(SubscriptionConfiguration)
123-
2+
- template: /eng/pipelines/templates/jobs/smoke-test.yml
3+
parameters:
4+
Daily: true
Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
1+
parameters:
2+
- name: Daily
3+
default: true
4+
- name: Artifacts
5+
type: object
6+
default: []
7+
- name: ArtifactName
8+
type: string
9+
default: "not-specified"
10+
11+
jobs:
12+
- ${{ if eq(parameters.Daily, false) }}:
13+
- job: smoke_test_eligibility
14+
displayName: Check Smoke Test Eligibility
15+
steps:
16+
- ${{ each artifact in parameters.Artifacts }}:
17+
- ${{ if and(ne(variables['Skip.Release'], 'true'), ne(artifact.skipPublishPackage, 'true')) }}:
18+
- pwsh: |
19+
$packages = Get-Content $(Build.SourcesDirectory)/common/smoketest/requirements-release.txt
20+
if ($packages | Where-Object { $_ -match "${{ replace(artifact.name, '_', '-') }}" }) {
21+
Write-Host "Smoke tests will run for ${{ artifact.name }}"
22+
Write-Host "##vso[task.setvariable variable=RunSmokeTests;]true"
23+
}
24+
name: check_smoke_tests_${{ artifact.safeName }}
25+
displayName: Check smoke test eligibility for ${{ artifact.name }}
26+
27+
- pwsh: |
28+
Write-Host "Setting RunSmokeTests to $($env:RunSmokeTests)"
29+
Write-Host "##vso[task.setvariable variable=RunSmokeTests;isOutput=true;]$($env:RunSmokeTests)"
30+
name: output_eligibility
31+
env:
32+
RunSmokeTests: $(RunSmokeTests)
33+
34+
- job:
35+
${{ if eq(parameters.Daily, false) }}:
36+
dependsOn: smoke_test_eligibility
37+
condition: and(succeeded(), eq(dependencies.smoke_test_eligibility.outputs['output_eligibility.RunSmokeTests'], true))
38+
strategy:
39+
matrix:
40+
Python_27_Linux (AzureCloud):
41+
PythonVersion: '2.7'
42+
SkipAsyncInstall: true
43+
OSVmImage: ubuntu-18.04
44+
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
45+
ArmTemplateParameters: $(azureCloudArmParameters)
46+
Python_37_Linux (AzureCloud):
47+
PythonVersion: '3.7'
48+
OSVmImage: ubuntu-18.04
49+
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
50+
ArmTemplateParameters: $(azureCloudArmParameters)
51+
Python_38_Linux (AzureCloud):
52+
PythonVersion: '3.8'
53+
OSVmImage: ubuntu-18.04
54+
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
55+
ArmTemplateParameters: $(azureCloudArmParameters)
56+
Python_38_Linux (AzureCloud Canary):
57+
PythonVersion: '3.8'
58+
OSVmImage: ubuntu-18.04
59+
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources-preview)
60+
ArmTemplateParameters: $(azureCloudArmParameters)
61+
Location: 'eastus2euap'
62+
Python_37_Windows (AzureCloud):
63+
PythonVersion: '3.7'
64+
OSVmImage: windows-2019
65+
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
66+
ArmTemplateParameters: $(azureCloudArmParameters)
67+
Python_38_Windows (AzureCloud):
68+
PythonVersion: '3.8'
69+
OSVmImage: windows-2019
70+
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
71+
ArmTemplateParameters: $(azureCloudArmParameters)
72+
Python_37_Mac (AzureCloud):
73+
PythonVersion: '3.7'
74+
OSVmImage: macOS-10.15
75+
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
76+
ArmTemplateParameters: $(azureCloudArmParameters)
77+
Python_38_Mac (AzureCloud):
78+
PythonVersion: '3.8'
79+
OSVmImage: macOS-10.15
80+
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
81+
ArmTemplateParameters: $(azureCloudArmParameters)
82+
Python_38_Linux (AzureUSGovernment):
83+
PythonVersion: '3.8'
84+
OSVmImage: ubuntu-18.04
85+
SubscriptionConfiguration: $(sub-config-gov-test-resources)
86+
ArmTemplateParameters: $(azureUSGovernmentArmParameters)
87+
Python_37_Windows (AzureUSGovernment):
88+
PythonVersion: '3.7'
89+
OSVmImage: windows-2019
90+
SubscriptionConfiguration: $(sub-config-gov-test-resources)
91+
ArmTemplateParameters: $(azureUSGovernmentArmParameters)
92+
Python_38_Linux (AzureChinaCloud):
93+
PythonVersion: '3.8'
94+
OSVmImage: ubuntu-18.04
95+
SubscriptionConfiguration: $(sub-config-cn-test-resources)
96+
Location: 'chinanorth'
97+
ArmTemplateParameters: $(azureChinaCloudArmParameters)
98+
Python_37_Windows (AzureChinaCloud):
99+
PythonVersion: '3.7'
100+
OSVmImage: windows-2019
101+
SubscriptionConfiguration: $(sub-config-cn-test-resources)
102+
Location: 'chinanorth'
103+
ArmTemplateParameters: $(azureChinaCloudArmParameters)
104+
105+
pool:
106+
vmImage: $(OSVmImage)
107+
108+
variables:
109+
- template: /eng/pipelines/templates/variables/globals.yml
110+
- name: Location
111+
value: ''
112+
- name: azureCloudArmParameters
113+
value: "@{ storageEndpointSuffix = 'core.windows.net'; azureCloud = 'AzureCloud'; }"
114+
- name: azureUSGovernmentArmParameters
115+
value: "@{ storageEndpointSuffix = 'core.usgovcloudapi.net'; azureCloud = 'AzureUSGovernment'; }"
116+
- name: azureChinaCloudArmParameters
117+
value: "@{ storageEndpointSuffix = 'core.chinacloudapi.cn'; azureCloud = 'AzureChinaCloud'; }"
118+
- name: requirements
119+
${{ if eq(parameters.Daily, true) }}:
120+
value: $(Build.SourcesDirectory)/common/smoketest/requirements.txt
121+
${{ if eq(parameters.Daily, false) }}:
122+
value: $(Build.SourcesDirectory)/common/smoketest/requirements-release.txt
123+
124+
steps:
125+
- task: UsePythonVersion@0
126+
displayName: "Use Python $(PythonVersion)"
127+
inputs:
128+
versionSpec: $(PythonVersion)
129+
130+
- script: |
131+
python -m pip install pip==20.0.2
132+
pip --version
133+
displayName: pip --version
134+
135+
- ${{ if eq(parameters.Daily, false) }}:
136+
- download: current
137+
artifact: ${{ parameters.ArtifactName }}
138+
timeoutInMinutes: 5
139+
140+
- pwsh: |
141+
$packages = Get-ChildItem "$(Pipeline.Workspace)/${{ parameters.ArtifactName }}/*.zip"
142+
Write-Host "Artifacts found:"
143+
$artifacts = $packages | ForEach-Object {
144+
if ($_.Name -match "([a-zA-Z\-]+)\-(.*).zip") {
145+
Write-Host "$($matches[1]): $($matches[2])"
146+
return @{ "name" = $matches[1]; "version" = $matches[2] }
147+
}
148+
}
149+
$dependencies = Get-Content $env:REQUIREMENTS | ForEach-Object {
150+
$line = $_
151+
if ($line -match "([a-zA-Z\-]+)(\W+)(.*)") {
152+
$override = ($artifacts | Where-Object { $_.Name -eq $matches[1] }).Version
153+
if ($override) {
154+
$line = $line -replace '([a-zA-Z\-]+)(\W+)(.*)', ('${1}${2}' + $override)
155+
Write-Host "Overriding dependency to: $line"
156+
}
157+
}
158+
return $line
159+
}
160+
161+
$dependencies | Out-File $env:REQUIREMENTS
162+
163+
displayName: Override requirements with pipeline build artifact versions
164+
env:
165+
REQUIREMENTS: $(requirements)
166+
167+
- pwsh: pip install -r "$env:REQUIREMENTS" --no-deps --upgrade
168+
displayName: Install requirements without dependencies
169+
env:
170+
REQUIREMENTS: $(requirements)
171+
172+
- ${{ if eq(parameters.Daily, true) }}:
173+
- pwsh: |
174+
pip install -r "$env:REQUIREMENTS" --pre --no-deps --upgrade `
175+
--index-url https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple
176+
177+
displayName: Install requirements from dev feed without dependencies
178+
env:
179+
REQUIREMENTS: $(requirements)
180+
181+
- pwsh: pip install -r $(Build.SourcesDirectory)/common/smoketest/requirements_async.txt
182+
displayName: "Install requirements_async.txt"
183+
condition: and(succeeded(), ne(variables['SkipAsyncInstall'], true))
184+
185+
- pwsh: |
186+
python $(Build.SourcesDirectory)/common/smoketest/dependencies.py -r "$env:REQUIREMENTS" `
187+
| Out-File $(Build.SourcesDirectory)/common/smoketest/requirements_dependencies.txt
188+
displayName: Create dependency list from installed packages
189+
env:
190+
REQUIREMENTS: $(requirements)
191+
192+
- script: pip install -r $(Build.SourcesDirectory)/common/smoketest/requirements_dependencies.txt
193+
displayName: Install package dependencies from PyPI
194+
195+
- script: pip freeze
196+
displayName: Show installed packages (pip freeze)
197+
198+
- template: /eng/common/TestResources/deploy-test-resources.yml
199+
parameters:
200+
ServiceDirectory: '$(Build.SourcesDirectory)/common/smoketest/'
201+
SubscriptionConfiguration: $(SubscriptionConfiguration)
202+
Location: $(Location)
203+
ArmTemplateParameters: $(ArmTemplateParameters)
204+
205+
- script: python $(Build.SourcesDirectory)/common/smoketest/program.py
206+
displayName: Run Smoke Test
207+
208+
- template: /eng/common/TestResources/remove-test-resources.yml
209+
parameters:
210+
ServiceDirectory: '$(Build.SourcesDirectory)/common/smoketest/'
211+
SubscriptionConfiguration: $(SubscriptionConfiguration)
212+

0 commit comments

Comments
 (0)