Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes for publishing symbols. #31

Merged
merged 1 commit into from
Aug 24, 2020

Conversation

jefgen
Copy link
Member

@jefgen jefgen commented Aug 21, 2020

Summary

It turns out that Nuget.org doesn't support "Nuget Symbol Packages" for native binaries at all.

They only support symbols for "managed" code (ie: C# or dotnet). If you try to upload a .snupkg that
contains native/C++ .pdb files in it, then it is rejected.

This means that we can't use Nuget.org for publish symbols at all, and instead need to find alternative methods.

Unfortunately, it turns that in order to publish symbols to the public https://symweb symbol server you need to
setup and maintain a corp-email-enabled domain service account, setup appropriate key storage in Azure Key Vault,
and then request special permission to publish using a PAT to push the symbols. This adds a ton of overhead.

In order to provide symbols but try to reduce the amount of overhead, we can upload the symbols to the GitHub
release page for a given MS-ICU version -- which does allows uploading any arbitrary zip files.

In the Nuget package nuspec we can then provide a direct link to the GitHub release page, so a user doesn't need
to hunt around on a wiki page to find the right symbols for a particular version. (Thanks to Axel for this idea).

This will let us provide debugging symbols for the Nuget packages (for both Windows and Linux) and the user only
has to click the link in the Nuget package description to find the downloads.


However, as an added bonus, it turns out that we can publish the Windows symbols to MSCodeHub -- which actually has its own symbols server.

This means that for Windows users, they can add the following to their debugger symbol path:

https://mscodehub.artifacts.visualstudio.com/defaultcollection/_apis/symbol/symsrv

And then the correct symbols for any version will be resolved automatically. :)

This means that we can provide symbols two ways:

  • For both Windows and Linux symbols:
    • On the GitHub release download page (with a direct link in the Nuget package).
  • For just Windows symbols:
    • Using MSCodeHub's symbol server.

PR Checklist

  • I have verified that my change is specific to this fork and cannot be made upstream.
  • I am making a maintenance related change.
  • I am making a change that is related to usage internal to Microsoft.
  • I am making a change that is related to the Windows OS build of ICU.
  • CLA signed. If not, please see here to sign the CLA.

@jefgen jefgen requested review from axelandrejs, daniel-ju and a team August 21, 2020 19:42
@jefgen jefgen merged commit d67fd9f into master Aug 24, 2020
@jefgen jefgen deleted the user/jefgen/test-symbols-publishing branch August 24, 2020 21:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants