@@ -274,7 +274,7 @@ function SourcePackageHasComFolder($artifactNamePrefix, $packageDirectory) {
274274 $mvnResults = mvn `
275275 dependency:copy `
276276 - Dartifact= " $packageArtifact " `
277- - DoutputDirectory= " $packageDirectory " | Out-Null
277+ - DoutputDirectory= " $packageDirectory "
278278
279279 if ($LASTEXITCODE ) {
280280 LogWarning " Could not download source artifact: $packageArtifact "
@@ -309,7 +309,7 @@ function PackageDependenciesResolve($artifactNamePrefix, $packageDirectory) {
309309 $artifactDownloadOutput = mvn `
310310 dependency:copy `
311311 - Dartifact= " $pomArtifactName " `
312- - DoutputDirectory= " $packageDirectory " | Out-Null
312+ - DoutputDirectory= " $packageDirectory "
313313
314314 if ($LASTEXITCODE ) {
315315 LogWarning " Could not download pom artifact: $pomArtifactName "
@@ -325,7 +325,7 @@ function PackageDependenciesResolve($artifactNamePrefix, $packageDirectory) {
325325 -f $downloadedPomPath `
326326 dependency:copy-dependencies `
327327 - P ' !azure-mgmt-sdk-test-jar' `
328- - DoutputDirectory= " $packageDirectory " | Out-Null
328+ - DoutputDirectory= " $packageDirectory "
329329
330330 if ($LASTEXITCODE ) {
331331 LogWarning " Could not resolve dependencies for: $pomArtifactName "
@@ -336,7 +336,7 @@ function PackageDependenciesResolve($artifactNamePrefix, $packageDirectory) {
336336 return $true
337337}
338338
339- function ValidatePackage ($groupId , $artifactId , $version ) {
339+ function ValidatePackage ($groupId , $artifactId , $version , $DocValidationImageId ) {
340340 $workingDirectory = Join-Path ([System.IO.Path ]::GetTempPath()) " validation"
341341 if (! (Test-Path $workingDirectory )) {
342342 New-Item - ItemType Directory - Force - Path $workingDirectory | Out-Null
@@ -349,8 +349,49 @@ function ValidatePackage($groupId, $artifactId, $version) {
349349 " ${groupId} __${artifactId} __${version} "
350350 New-Item - ItemType Directory - Path $packageDirectory - Force | Out-Null
351351
352- return (SourcePackageHasComFolder $artifactNamePrefix $packageDirectory ) `
353- -and (PackageDependenciesResolve $artifactNamePrefix $packageDirectory )
352+ # Add more validation by replicating as much of the docs CI process as
353+ # possible
354+ # https://github.com/Azure/azure-sdk-for-python/issues/20109
355+ if (! $DocValidationImageId )
356+ {
357+ Write-Host " Validating using mvn command directly on $artifactId ."
358+ return FallbackValidation - artifactNamePrefix $artifactNamePrefix - workingDirectory $packageDirectory
359+ }
360+ else
361+ {
362+ Write-Host " Validating using $DocValidationImageId on $artifactId ."
363+ return DockerValidation - packageName " $artifactId " - packageVersion " $version " - groupId " $groudId " - DocValidationImageId $DocValidationImageId - workingDirectory $packageDirectory
364+ }
365+ }
366+
367+ function FallbackValidation ($artifactNamePrefix , $workingDirectory )
368+ {
369+ return (SourcePackageHasComFolder $artifactNamePrefix $workingDirectory ) `
370+ -and (PackageDependenciesResolve $artifactNamePrefix $workingDirectory )
371+ }
372+
373+ function DockerValidation ($packageName , $packageVersion , $groupId , $DocValidationImageId , $workingdirectory )
374+ {
375+
376+ $output = docker run - v " ${workingDirectory} :/workdir/out" `
377+ - e TARGET_PACKAGE= $packageName - e TARGET_VERSION= $packageVersion - e TARGET_GROUP_ID= $groupId - t $DocValidationImageId 2>&1
378+ # The docker exit codes: https://docs.docker.com/engine/reference/run/#exit-status
379+ # If the docker failed because of docker itself instead of the application,
380+ # we should skip the validation and keep the packages.
381+ $artifactNamePrefix = " ${groupId} :${packageName} :${packageVersion} "
382+ if ($LASTEXITCODE -eq 125 -Or $LASTEXITCODE -eq 126 -Or $LASTEXITCODE -eq 127 )
383+ {
384+ LogWarning " The `docker` command does not work with exit code $LASTEXITCODE . Fall back to mvn install $artifactNamePrefix directly."
385+ $output | Write-Host
386+ FallbackValidation - artifactNamePrefix " $artifactNamePrefix " - workingDirectory $workingdirectory
387+ }
388+ elseif ($LASTEXITCODE -ne 0 )
389+ {
390+ LogWarning " Package $artifactNamePrefix ref docs validation failed."
391+ $output | Write-Host
392+ return $false
393+ }
394+ return $true
354395}
355396
356397function Update-java-DocsMsPackages ($DocsRepoLocation , $DocsMetadata , $DocValidationImageId ) {
@@ -616,9 +657,9 @@ function Get-java-DocsMsMetadataForPackage($PackageInfo) {
616657
617658function Validate-java-DocMsPackages ($PackageInfo , $DocValidationImageId )
618659{
619- if (! (ValidatePackage $PackageInfo.Group $PackageInfo.Name $PackageInfo.Version ))
660+ if (! (ValidatePackage $PackageInfo.Group $PackageInfo.Name $PackageInfo.Version $DocValidationImageId ))
620661 {
621- exit 1
662+ Write-Error " Package $PackageInfo .Name failed on validation " - ErrorAction Stop
622663 }
623664 return
624665}
0 commit comments