Publish localization resources to the OSS dependency feed (#12364)

## Fixes

No linked issue.

## PR Type

- [ ] Bugfix
- [ ] Feature
- [ ] Code style update (formatting, renaming)
- [ ] Refactoring (no functional changes, no API changes)
- [x] Build related changes
- [ ] Documentation content changes
- [ ] Other (please describe):

## Description

Make newly generated localization resource packages available to OSS
builds by publishing them to the OSS dependency feed before proposing
localization updates.

### Current Behavior

The localization pipeline does not publish its generated resource
package to the OSS dependency feed. A localization update can therefore
reference a package version that OSS builds cannot restore.

### New Behavior

Publish the same generated package and version to the shine-oss
`WinUI-Dependencies` feed, using the existing cross-organization
authentication pattern. Preserve existing publication behavior and stop
before proposing localization updates if OSS publication fails.

Update the localization documentation to describe dual-feed publishing
and its access requirements.

## Customer Impact

Enables OSS builds to restore newly published localization resources.
This is a build-infrastructure change with no runtime or public API
changes.

## Regression Potential

- [x] Low risk — isolated change, limited scope
- [ ] Medium risk — touches shared components or public APIs
- [ ] High risk — architectural or breaking API change

The publishing identity must have permission to publish to the OSS
dependency feed. Authentication or publication failures will block
localization updates rather than propose an unavailable package version.

## How Has This Been Tested?

- [x] I have performed a self-review of my own code
- [ ] I have added tests to cover my changes
- [ ] Existing tests pass locally

Local YAML and configuration checks confirm that both publication steps
target the same package/version, existing steps remain unchanged, and
OSS publication precedes localization updates.

Live pipeline publication and OSS restore validation are pending.

## Screenshots (if appropriate)

Not applicable; no visual changes.

Co-authored-by: Test User <test@example.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 83aa42a4-855c-4597-bf2e-e6e9239adbc3
This commit is contained in:
authored and GitHub committed 2026-10-22 21:08:11 +05:30
1 parent 4bcbff6d6b
commit 5e5dc36a16
2 files changed
+25 -1

No files matched your search

@@ -99,6 +99,25 @@ steps:
packagesToPush: '${{ parameters.nupkgDir }}\Microsoft.Internal.WinUILocalizationResources.${{ parameters.packageVersion }}.nupkg'
packageParentPath: '${{ parameters.nupkgDir }}'
- task: NuGetToolInstaller@1
displayName: 'Ensure NuGet is available for shine-oss publishing'
- task: NuGetAuthenticate@1
displayName: 'Authenticate to shine-oss feed'
inputs:
azureDevOpsServiceConnection: ShineOSS-AzureDevOps-Push
feedUrl: https://pkgs.dev.azure.com/shine-oss/microsoft-ui-xaml/_packaging/WinUI-Dependencies/nuget/v3/index.json
- task: CmdLine@2
displayName: 'NuGet-Localization-Resources push to shine-oss WinUI-Dependencies feed'
inputs:
script: >-
nuget.exe push "${{ parameters.nupkgDir }}\Microsoft.Internal.WinUILocalizationResources.${{ parameters.packageVersion }}.nupkg"
-Source "https://pkgs.dev.azure.com/shine-oss/microsoft-ui-xaml/_packaging/WinUI-Dependencies/nuget/v3/index.json"
-ApiKey AzureArtifacts
-NonInteractive
-SkipDuplicate
# Check for changes and create a new branch if required
- powershell: |
& "$env:Build_SourcesDirectory\build\PipelineScripts\ApplyLocalizationUpdates.ps1" `
+6 -1
View File
@@ -43,7 +43,9 @@ If you want to manually schedule a pipeline run, use the following steps:
No need to run build here.
+ Touchdown task takes .mui & .resw files and uploads to Touchdown service
+ Touchdown task retrieves currently localized files being stored in Touchdown
3. Currently available localized resource files get placed into a nuget package and uploaded to the internal dependency feed.
3. Currently available localized resource files get placed into a `Microsoft.Internal.WinUILocalizationResources` NuGet package.
The same package version is uploaded to both the internal dependency feed and the shine-oss `WinUI-Dependencies` feed
before the pipeline proposes localization updates, so OSS builds can restore the updated version.
1. The place holder files without localized data get immediately created with successful run. However, it takes couple of days
for Touchdown to localize new strings. Once files are generated, the next localization pipeline run will pick up the changes.
4. The pipeline will automatically detect when there are changes to localization files and create a Pull Request titled 'Localization Update YYYYMMDD'.
@@ -55,6 +57,9 @@ If you want to manually schedule a pipeline run, use the following steps:
is automatically updated in `packages.config` for the `WinUILocalizationResources`
package.
* Updates to .resw files are checked-in as part of the PR the pipeline opens
* Publishing to shine-oss requires the cross-organization service connection to be authorized for the localization pipeline.
Its identity must have Feed Publisher (Contributor) permission on `WinUI-Dependencies`.
An authentication or publishing failure stops the pipeline before it proposes a package-version update.
## Responsibility & Requirements