diff --git a/eng/common/pipelines/templates/jobs/npm-publish.yml b/eng/common/pipelines/templates/jobs/npm-publish.yml index 74d733744c9d..e435a213c9eb 100644 --- a/eng/common/pipelines/templates/jobs/npm-publish.yml +++ b/eng/common/pipelines/templates/jobs/npm-publish.yml @@ -70,20 +70,9 @@ jobs: - ${{ if eq(parameters.Registry, 'https://registry.npmjs.org/') }}: - - task: PowerShell@2 - displayName: 'Delete repo .npmrc' - condition: and(succeeded(), ne(variables['SkipPublishing'], 'true')) - inputs: - targetType: inline - script: | - $npmrcPath = "$(System.DefaultWorkingDirectory)/.npmrc" - if (Test-Path $npmrcPath) { - Remove-Item -Path $npmrcPath -Force - Write-Host "Deleted $npmrcPath to use default npmjs registry." - } else { - Write-Host "No repo .npmrc found at $npmrcPath." - } - pwsh: true + - template: /eng/common/pipelines/templates/steps/reset-npmrc.yml + parameters: + Registry: ${{ parameters.Registry }} - task: EsrpRelease@9 displayName: 'Publish ${{ parameters.ArtifactName }} via ESRP' diff --git a/eng/common/pipelines/templates/steps/reset-npmrc.yml b/eng/common/pipelines/templates/steps/reset-npmrc.yml new file mode 100644 index 000000000000..45977de6def3 --- /dev/null +++ b/eng/common/pipelines/templates/steps/reset-npmrc.yml @@ -0,0 +1,32 @@ +parameters: + Registry: 'https://registry.npmjs.org/' + +steps: + - task: PowerShell@2 + displayName: 'Set project npm registry' + inputs: + targetType: inline + script: | + $ErrorActionPreference = 'Stop' + + Write-Host "Registry before update:" + npm config get registry --location=project + if ($LASTEXITCODE -ne 0) { + throw "Failed to read current project npm registry." + } + + npm config set registry "${{ parameters.Registry }}" --location=project + if ($LASTEXITCODE -ne 0) { + throw "Failed to set project npm registry to '${{ parameters.Registry }}'." + } + + Write-Host "Registry after update:" + $updatedRegistry = npm config get registry --location=project + if ($LASTEXITCODE -ne 0) { + throw "Failed to read updated project npm registry." + } + + if ($updatedRegistry.Trim() -ne "${{ parameters.Registry }}") { + throw "Project npm registry mismatch. Expected '${{ parameters.Registry }}' but got '$updatedRegistry'." + } + pwsh: true