diff --git a/eng/pipelines/docindex.yml b/eng/pipelines/docindex.yml index 91c2ac7c1430..2085f67fd8b4 100644 --- a/eng/pipelines/docindex.yml +++ b/eng/pipelines/docindex.yml @@ -11,6 +11,7 @@ jobs: DailyDocRepoLocation: $(Pipeline.Workspace)/daily DocRepoOwner: Azure DocRepoName: azure-docs-sdk-java + DocValidationImageId: azuresdkimages.azurecr.io/javarefautocr:latest steps: # Sync docs repo onboarding files/folders - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml @@ -22,13 +23,18 @@ jobs: Repositories: - Name: $(DocRepoOwner)/$(DocRepoName) WorkingDirectory: $(DocRepoLocation) - + # Pull and build the docker image. + - template: /eng/common/pipelines/templates/steps/docker-pull-image.yml + parameters: + ContainerRegistryClientId: $(azuresdkimages-cr-clientid) + ContainerRegistryClientSecret: $(azuresdkimages-cr-clientsecret) + ImageId: "$(DocValidationImageId)" # Call update docs ci script to onboard packages - task: Powershell@2 inputs: pwsh: true filePath: eng/common/scripts/Update-DocsMsPackages.ps1 - arguments: -DocRepoLocation $(DocRepoLocation) + arguments: -DocRepoLocation $(DocRepoLocation) -ImageId '$(DocValidationImageId)' displayName: Update Docs Onboarding condition: and(succeeded(), or(eq(variables['Build.Reason'], 'Schedule'), eq(variables['Force.MainUpdate'], 'true'))) diff --git a/eng/pipelines/templates/stages/archetype-java-release.yml b/eng/pipelines/templates/stages/archetype-java-release.yml index 20d9230cbe79..72a87c41b110 100644 --- a/eng/pipelines/templates/stages/archetype-java-release.yml +++ b/eng/pipelines/templates/stages/archetype-java-release.yml @@ -212,20 +212,22 @@ stages: pool: name: azsdk-pool-mms-ubuntu-2004-general vmImage: MMSUbuntu20.04 - strategy: runOnce: deploy: steps: + - download: current + displayName: 'Download Artifact: ${{parameters.ArtifactName}}' + artifact: ${{parameters.ArtifactName}} - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml parameters: SkipDefaultCheckout: true Paths: - - sdk/**/*.md + - sdk + - common/perf-test-core - .github/CODEOWNERS - - download: current - displayName: 'Download Artifact: ${{parameters.ArtifactName}}' - artifact: ${{parameters.ArtifactName}} + - '!sdk/**/test-recordings' + - '!sdk/**/session-records' - template: /eng/common/pipelines/templates/steps/update-docsms-metadata.yml parameters: PackageInfoLocations: @@ -385,19 +387,26 @@ stages: name: azsdk-pool-mms-ubuntu-2004-general vmImage: MMSUbuntu20.04 steps: - - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml - parameters: - SkipDefaultCheckout: true - Paths: - - sdk/**/*.md - - .github/CODEOWNERS - download: current displayName: 'Download Artifact: ${{parameters.ArtifactName}}' artifact: ${{parameters.ArtifactName}} - pwsh: | Get-ChildItem -Recurse $(Pipeline.Workspace)/${{parameters.ArtifactName}}/ displayName: Show visible artifacts - + # Docs daily updates is supposed to download packages from public feed repository, so we have to specify additional repositories in a POM or the profile. + # Here is maven documentation: https://maven.apache.org/guides/mini/guide-multiple-repositories.html + - powershell: | + # Linux mvn `setting.xml` is sitting under path `~/.m2/setting.xml` + Get-Command mvn + if (!(Test-Path '~/.m2/')) { + mkdir ~/.m2/ + } + if (Test-Path '~/.m2/setting.xml') { + Write-Host "'setting.xml' exists. Overwriting the file to support multiple repositories." + } + Copy-Item "./eng/repo-docs/docms/daily.update.setting.xml" -Destination "~/.m2/settings.xml" + displayName: 'Configure mvn' + workingDirectory: $(Build.SourcesDirectory) - template: /eng/common/pipelines/templates/steps/update-docsms-metadata.yml parameters: PackageInfoLocations: @@ -411,4 +420,4 @@ stages: DailyDocsBuild: true SparseCheckoutPaths: - docs-ref-services/ - - metadata/ \ No newline at end of file + - metadata/ diff --git a/eng/scripts/Language-Settings.ps1 b/eng/scripts/Language-Settings.ps1 index c5775a7ef9d0..cd461f312834 100644 --- a/eng/scripts/Language-Settings.ps1 +++ b/eng/scripts/Language-Settings.ps1 @@ -274,7 +274,7 @@ function SourcePackageHasComFolder($artifactNamePrefix, $packageDirectory) { $mvnResults = mvn ` dependency:copy ` -Dartifact="$packageArtifact" ` - -DoutputDirectory="$packageDirectory" + -DoutputDirectory="$packageDirectory" | Out-Null if ($LASTEXITCODE) { LogWarning "Could not download source artifact: $packageArtifact" @@ -309,7 +309,7 @@ function PackageDependenciesResolve($artifactNamePrefix, $packageDirectory) { $artifactDownloadOutput = mvn ` dependency:copy ` -Dartifact="$pomArtifactName" ` - -DoutputDirectory="$packageDirectory" + -DoutputDirectory="$packageDirectory" | Out-Null if ($LASTEXITCODE) { LogWarning "Could not download pom artifact: $pomArtifactName" @@ -325,7 +325,7 @@ function PackageDependenciesResolve($artifactNamePrefix, $packageDirectory) { -f $downloadedPomPath ` dependency:copy-dependencies ` -P '!azure-mgmt-sdk-test-jar' ` - -DoutputDirectory="$packageDirectory" + -DoutputDirectory="$packageDirectory" | Out-Null if ($LASTEXITCODE) { LogWarning "Could not resolve dependencies for: $pomArtifactName" @@ -336,7 +336,12 @@ function PackageDependenciesResolve($artifactNamePrefix, $packageDirectory) { return $true } -function ValidatePackage($groupId, $artifactId, $version, $workingDirectory) { +function ValidatePackage($groupId, $artifactId, $version) { + $workingDirectory = Join-Path ([System.IO.Path]::GetTempPath()) "validation" + if (!(Test-Path $workingDirectory)) { + New-Item -ItemType Directory -Force -Path $workingDirectory | Out-Null + } + $artifactNamePrefix = "${groupId}:${artifactId}:${version}" $packageDirectory = Join-Path ` @@ -348,7 +353,7 @@ function ValidatePackage($groupId, $artifactId, $version, $workingDirectory) { -and (PackageDependenciesResolve $artifactNamePrefix $packageDirectory) } -function Update-java-DocsMsPackages($DocsRepoLocation, $DocsMetadata) { +function Update-java-DocsMsPackages($DocsRepoLocation, $DocsMetadata, $DocValidationImageId) { Write-Host "Excluded packages:" foreach ($excludedPackage in $PackageExclusions.Keys) { Write-Host " $excludedPackage - $($PackageExclusions[$excludedPackage])" @@ -372,9 +377,6 @@ function Update-java-DocsMsPackages($DocsRepoLocation, $DocsMetadata) { function UpdateDocsMsPackages($DocConfigFile, $Mode, $DocsMetadata) { $packageConfig = Get-Content $DocConfigFile -Raw | ConvertFrom-Json - $workingDirectory = Join-Path ([System.IO.Path]::GetTempPath()) ([System.IO.Path]::GetRandomFileName()) - New-Item -ItemType Directory -Force -Path $workingDirectory | Out-Null - $packageOutputPath = 'docs-ref-autogen' if ($Mode -eq 'preview') { $packageOutputPath = 'preview/docs-ref-autogen' @@ -439,7 +441,7 @@ function UpdateDocsMsPackages($DocConfigFile, $Mode, $DocsMetadata) { # If upgrading the package, run basic sanity checks against the package if ($package.packageVersion -ne $packageVersion) { Write-Host "Validating new version detected for $packageName ($packageVersion)" - $validatePackageResult = ValidatePackage $package.packageGroupId $package.packageArtifactId $packageVersion $workingDirectory + $validatePackageResult = ValidatePackage $package.packageGroupId $package.packageArtifactId $packageVersion if (!$validatePackageResult) { LogWarning "Package is not valid: $packageName. Keeping old version." @@ -480,7 +482,7 @@ function UpdateDocsMsPackages($DocConfigFile, $Mode, $DocsMetadata) { } Write-Host "Validating new package $($packageGroupId):$($packageName):$($packageVersion)" - $validatePackageResult = ValidatePackage $packageGroupId $packageName $packageVersion $workingDirectory + $validatePackageResult = ValidatePackage $packageGroupId $packageName $packageVersion if (!$validatePackageResult) { LogWarning "Package is not valid: ${packageGroupId}:$packageName. Cannot onboard." continue @@ -610,4 +612,13 @@ function Get-java-DocsMsMetadataForPackage($PackageInfo) { PreviewReadMeLocation = 'docs-ref-services/preview' Suffix = '' } -} \ No newline at end of file +} + +function Validate-java-DocMsPackages ($PackageInfo, $DocValidationImageId) +{ + if (!(ValidatePackage $PackageInfo.Group $PackageInfo.Name $PackageInfo.Version)) + { + exit 1 + } + return +}