Skip to content

Commit f5dfe3b

Browse files
authored
Ensure that eng/ based packages build, test, and analyze appropriately (Azure#24397)
* update language-settings to handle eng or sdk rooted packages in Get-AllPackageInfoFromRepo * update analyze.yml to operate on packages instead of service directories. this fixes the confusion as to whether a package should be rooted in `eng/` vs rooted in `sdk/`. This fixes the various analyze failures for go - generator and other tools packages * add sdk/keyvault to the checkout for eng packages * skip eng linting * filter out eng from smoketest invocations
1 parent c697931 commit f5dfe3b

File tree

10 files changed

+70
-50
lines changed

10 files changed

+70
-50
lines changed

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

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -153,16 +153,9 @@ extends:
153153
os: linux
154154

155155
steps:
156-
- template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
156+
- template: /eng/pipelines/templates/steps/sparse-checkout-for-servicedirectory.yml
157157
parameters:
158-
${{ if eq(parameters.ServiceDirectory, 'auto') }}:
159-
Paths:
160-
- "/*"
161-
- ".vscode/"
162-
${{ else }}:
163-
Paths:
164-
- "sdk/${{ parameters.ServiceDirectory }}"
165-
- ".vscode/"
158+
ServiceDirectory: ${{ parameters.ServiceDirectory }}
166159

167160
- template: /eng/common/pipelines/templates/steps/check-spelling.yml
168161

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,9 @@ jobs:
5252
os: ${{ parameters.OSName }}
5353

5454
steps:
55-
- template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
55+
- template: /eng/pipelines/templates/steps/sparse-checkout-for-servicedirectory.yml
5656
parameters:
57-
${{ if eq(parameters.ServiceDirectory, 'auto') }}:
58-
Paths:
59-
- "/*"
60-
${{ else }}:
61-
Paths:
62-
- "sdk/${{ parameters.ServiceDirectory }}"
57+
ServiceDirectory: ${{ parameters.ServiceDirectory }}
6358

6459
- template: /eng/common/pipelines/templates/steps/verify-agent-os.yml
6560
parameters:

eng/pipelines/templates/steps/analyze.yml

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ steps:
2626
$pkgs = Get-PackagesFromPackageInfo -PackageInfoFolder "$(Build.ArtifactStagingDirectory)/PackageInfo" `
2727
-IncludeIndirect $false -CustomCompareFunction { param($pkgProp) { return $pkgProp.CIParameters.IsSdkLibrary } }
2828
29-
$changedServices = @()
29+
$apiviewEnabledPackages = @()
3030
if ($pkgs) {
31-
$changedServices = $pkgs | ForEach-Object { $_.ServiceDirectory } | Sort-Object -Unique
31+
$apiviewEnabledPackages = $pkgs | ForEach-Object { $_.Name } | Sort-Object -Unique
3232
}
3333
else {
3434
Write-Host "No sdk packages were found in package set. Skipping APIView generation."
@@ -38,7 +38,7 @@ steps:
3838
$failed = $false
3939
$directoryToPublish = Join-Path -Path $(Build.ArtifactStagingDirectory) ${{ parameters.ArtifactName }}
4040
41-
foreach($serviceDirectory in $changedServices) {
41+
foreach($serviceDirectory in $apiviewEnabledPackages) {
4242
New-APIViewArtifacts `
4343
-ServiceDirectory $serviceDirectory `
4444
-OutputDirectory $(Build.ArtifactStagingDirectory) `
@@ -151,18 +151,24 @@ steps:
151151
retryCountOnTaskFailure: 3
152152
153153
- pwsh: |
154-
$changedServices = "$(ChangedServices)" -split ","
154+
$changedPackages = "$(Packages)" -split ","
155155
$failed = $false
156156
157-
foreach($serviceDirectory in $changedServices) {
158-
$modDirs = & $(Build.SourcesDirectory)/eng/scripts/get_module_dirs.ps1 "$serviceDirectory"
157+
foreach($packageDirectory in $changedPackages) {
158+
if ($packageDirectory.startsWith('eng')) {
159+
Write-Host "skipping linting on engineering-only package: '$jpackageDirectory'"
160+
continue
161+
}
162+
163+
$modDirs = & $(Build.SourcesDirectory)/eng/scripts/get_module_dirs.ps1 "$packageDirectory"
164+
159165
foreach ($md in $modDirs) {
160166
pushd $md
161167
Write-Host "##[command]Executing golangci-lint run -c $(System.DefaultWorkingDirectory)/eng/.golangci.yml in $md"
162168
golangci-lint run -c $(System.DefaultWorkingDirectory)/eng/.golangci.yml
163169
164170
if ($LASTEXITCODE) {
165-
Write-Host "golangci-lint for $serviceDirectory failed. Check above output for details."
171+
Write-Host "golangci-lint for $packageDirectory failed. Check above output for details."
166172
$failed = $true
167173
}
168174
}
@@ -177,19 +183,19 @@ steps:
177183
condition: succeededOrFailed()
178184
179185
- pwsh: |
180-
$changedServices = "$(ChangedServices)" -split ","
186+
$changedPackages = "$(Packages)" -split ","
181187
$failed = $false
182188
183-
foreach($serviceDirectory in $changedServices) {
184-
$modDirs = & $(Build.SourcesDirectory)/eng/scripts/get_module_dirs.ps1 "$serviceDirectory"
189+
foreach($packageDirectory in $changedPackages) {
190+
$modDirs = & $(Build.SourcesDirectory)/eng/scripts/get_module_dirs.ps1 "$packageDirectory"
185191
foreach ($md in $modDirs) {
186192
pushd $md
187193
Write-Host "##[command]Executing go get -u all in $md"
188194
go get -u all
189195
$diff = (git diff -w .)
190196
Write-Host ($diff -join "`n")
191197
if ($diff.Length -gt 0) {
192-
Write-Host "Failed to go get $serviceDirectory"
198+
Write-Host "Failed to go get $packageDirectory"
193199
$failed = $true
194200
}
195201
}
@@ -204,11 +210,11 @@ steps:
204210
workingDirectory: $(System.DefaultWorkingDirectory)
205211
206212
- pwsh: |
207-
$changedServices = "$(ChangedServices)" -split ","
213+
$changedPackages = "$(Packages)" -split ","
208214
$failed = $false
209215
210-
foreach($serviceDirectory in $changedServices) {
211-
$modDirs = & $(Build.SourcesDirectory)/eng/scripts/get_module_dirs.ps1 "$serviceDirectory"
216+
foreach($packageDirectory in $changedPackages) {
217+
$modDirs = & $(Build.SourcesDirectory)/eng/scripts/get_module_dirs.ps1 "$packageDirectory"
212218
foreach ($md in $modDirs) {
213219
pushd $md
214220
Write-Host "##[command]Executing go mod tidy in $md"
@@ -217,7 +223,7 @@ steps:
217223
Write-Host ($diff -join "`n")
218224
if ($diff.Length -gt 0) {
219225
$failed = $true
220-
Write-Host "Failed to go mod tidy $serviceDirectory"
226+
Write-Host "Failed to go mod tidy $packageDirectory"
221227
}
222228
}
223229
}
@@ -231,9 +237,9 @@ steps:
231237
condition: succeededOrFailed()
232238
233239
- pwsh: |
234-
$changedServices = "$(ChangedServices)" -split ","
235-
foreach($serviceDirectory in $changedServices) {
236-
$modDirs = ./eng/scripts/get_module_dirs.ps1 "$serviceDirectory"
240+
$packages = "$(Packages)" -split ","
241+
foreach($packageDir in $packages) {
242+
$modDirs = ./eng/scripts/get_module_dirs.ps1 "$packageDir"
237243
foreach ($md in $modDirs) {
238244
if (-Not $md -Match "/arm") {
239245
Get-ChildItem $md/doc.go
@@ -282,16 +288,16 @@ steps:
282288
Condition: succeededOrFailed()
283289

284290
- pwsh: |
285-
if (-not "$(ChangedServices)") {
291+
if (-not "$(Packages)") {
286292
Write-Host "No services were changed build. Skipping doccheck."
287293
exit 0
288294
}
289295
290-
$changedServices = "$(ChangedServices)" -split ","
296+
$changedServices = "$(Packages)" -split ","
291297
$failed = $false
292298
293299
foreach ($service in $changedServices) {
294-
go run . --directory "$(System.DefaultWorkingDirectory)/sdk/$service"
300+
go run . --directory "$(System.DefaultWorkingDirectory)/$service"
295301
if ($LASTEXITCODE -ne 0) {
296302
$failed = $true
297303
}
@@ -308,7 +314,7 @@ steps:
308314
- template: /eng/common/pipelines/templates/steps/eng-common-workflow-enforcer.yml
309315

310316
- pwsh: |
311-
./eng/scripts/Invoke-SmokeTests.ps1 "$(ChangedServices)"
317+
./eng/scripts/Invoke-SmokeTests.ps1 "$(Packages)"
312318
displayName: 'Run Nightly SmokeTests'
313319
314320
# There are no more checks after this one, so simply removing all packageInfo that aren't shipping
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
parameters:
2+
- name: ServiceDirectory
3+
type: string
4+
default: ''
5+
6+
7+
steps:
8+
- template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
9+
parameters:
10+
${{ if eq(parameters.ServiceDirectory, 'auto') }}:
11+
Paths:
12+
- "/*"
13+
- ".vscode/"
14+
${{ else }}:
15+
Paths:
16+
- ${{ if startsWith(parameters.ServiceDirectory, '../') }}:
17+
- ${{ replace(parameters.ServiceDirectory, '../', '') }}
18+
# this is a workaround for the eng packages that have integration tests that rely on keyvault
19+
# todo: transform this to a more generic solution of passed sparse checkout paths
20+
- "sdk/security"
21+
- ${{ else }}:
22+
- "sdk/${{ parameters.ServiceDirectory }}"
23+
- ".vscode/"
24+
25+
- pwsh: |
26+
Get-ChildItem -Path "$(Build.SourcesDirectory)" -Recurse | % { Write-Host $_.FullName }
27+
displayName: "Dump visible files"

eng/scripts/Invoke-DependencyCheck.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ $PackageDirectories = $PackageDirectories -split ","
4747

4848
foreach ($sdk in $sdks)
4949
{
50-
if ($sdk.Name -like "*internal*" -or (IsPackageDeprecated $sdk))
50+
if ($sdk.Name -like "*internal*" -or (IsPackageDeprecated $sdk) -or $sdk.SdkType -eq "eng")
5151
{
5252
continue
5353
}

eng/scripts/Invoke-SmokeTests.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Param(
77
. (Join-Path $PSScriptRoot ".." common scripts common.ps1)
88

99
$packages = Get-AllPackageInfoFromRepo $filter
10-
$targetServices = $packages | Where-Object { $_.CIParameters.NonShipping -eq $false } | Select-Object -Property ServiceDirectory -Unique
10+
$targetServices = $packages | Where-Object { $_.CIParameters.NonShipping -eq $false -and $_.SdkType -ne "eng" } | Select-Object -Property ServiceDirectory -Unique
1111

1212
$failed = $false
1313

eng/scripts/Language-Settings.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ function ResolveSearchPaths {
133133
$filters = $FilterString.Split(",")
134134

135135
foreach($filter in $filters) {
136-
if ($filter.StartsWith("sdk")) {
136+
if ($filter.StartsWith("sdk") -or $filter.StartsWith("eng")) {
137137
$resolvedPaths += (Join-Path $RepoRoot $filter)
138138
}
139139
else {

eng/scripts/run_tests.ps1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ Param(
99

1010
$ErrorActionPreference = 'Stop'
1111

12-
$services = $TargetDirectories -split ","
12+
$directories = $TargetDirectories -split ","
1313

14-
foreach($serviceDirectory in $services) {
15-
&$PSScriptRoot/test.ps1 $serviceDirectory $testTimeout $enableRaceDetector
14+
foreach($serviceOrPackageDir in $directories) {
15+
&$PSScriptRoot/test.ps1 $serviceOrPackageDir $testTimeout $enableRaceDetector
1616
if ($LASTEXITCODE) {
17-
Write-Host "##[error] a failure occurred testing the directory: $serviceDirectory. Check above details for more information."
17+
Write-Host "##[error] a failure occurred testing the directory: $serviceOrPackageDir. Check above details for more information."
1818
$failed = $true
1919
}
2020
}

eng/scripts/test.ps1

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ param (
33
[string] $testTimeout,
44
[bool] $enableRaceDetector
55
)
6-
$targetDirectory = $serviceDirectory
7-
if (-not $serviceDirectory.StartsWith("sdk")) {
8-
$targetDirectory = Join-Path "sdk" $serviceDirectory
9-
}
6+
. $PSScriptRoot/../common/scripts/common.ps1
7+
# we are passing in a single item here, so the first item is all we need as that is all there will ever be
8+
$targetDirectory = (ResolveSearchPaths $serviceDirectory)[0]
109
Push-Location $targetDirectory
1110

1211
if ($enableRaceDetector) {

eng/tools/generator/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,4 @@ To authenticate this command, you need to either
4141
Example usage:
4242
```shell
4343
generator issue -t $YOUR_PERSONAL_ACCESS_TOKEN > sdk-release.json
44-
```
44+
```

0 commit comments

Comments
 (0)