Esempio n. 1
0
        private static async Task <(string branchName, string buildNumber)> TryGetRoslynBranchAndBuildNumberForReleaseAsync(
            VisualStudioVersion release,
            GitHttpClient vsGitClient)
        {
            GitRepository vsRepository = await GetVSRepositoryAsync(vsGitClient);

            var commit = new GitVersionDescriptor {
                VersionType = GitVersionType.Commit, Version = release.CommitSha
            };

            using var componentsJsonStream = await vsGitClient.GetItemContentAsync(
                      vsRepository.Id,
                      @".corext\Configs\dotnetcodeanalysis-components.json",
                      download : true,
                      versionDescriptor : commit);

            var componentsJsonContents = await new StreamReader(componentsJsonStream).ReadToEndAsync();
            var componentsJson         = JObject.Parse(componentsJsonContents);

            var languageServicesUrlAndManifestName = (string)componentsJson["Components"]["Microsoft.CodeAnalysis.LanguageServices"]["url"];

            var parts = languageServicesUrlAndManifestName.Split(';');

            if (parts.Length != 2)
            {
                return(default);
Esempio n. 2
0
        private static string?TryGetRoslynTagName(VisualStudioVersion release)
        {
            string tag = "Visual-Studio-";

            if (release.MainVersion.StartsWith("16."))
            {
                tag += "2019-";
            }
            else
            {
                // We won't worry about tagging earlier things than VS2019 releases for now
                return(null);
            }

            tag += "Version-" + release.MainVersion;

            if (release.PreviewVersion != null)
            {
                tag += "-Preview-" + release.PreviewVersion;
            }

            return(tag);
        }
Esempio n. 3
0
        private static async Task <RoslynBuildInformation?> TryGetRoslynBuildForReleaseAsync(VisualStudioVersion release, AzDOConnection vsConnection, AzDOConnection connection)
        {
            try
            {
                var(branchName, buildNumber) = await TryGetRoslynBranchAndBuildNumberForReleaseAsync(release, vsConnection.GitClient);

                if (string.IsNullOrEmpty(branchName) || string.IsNullOrEmpty(buildNumber))
                {
                    return(null);
                }

                var commitSha = await TryGetRoslynCommitShaFromBuildAsync(connection, buildNumber)
                                ?? await TryGetRoslynCommitShaFromNuspecAsync(vsConnection.NuGetClient, release, vsConnection.GitClient);

                if (string.IsNullOrEmpty(commitSha))
                {
                    return(null);
                }

                var buildId = connection.BuildDefinitionName + "_" + buildNumber;

                return(new RoslynBuildInformation(commitSha, branchName, buildId));
            }
            catch
            {
                return(null);
            }
        }
Esempio n. 4
0
        private static async Task <RoslynBuildInformation?> TryGetRoslynBuildForReleaseAsync(VisualStudioVersion release, GitHttpClient gitClient, BuildHttpClient buildClient)
        {
            var commit = new GitVersionDescriptor {
                VersionType = GitVersionType.Commit, Version = release.CommitSha
            };
            GitRepository vsRepository = await GetVSRepositoryAsync(gitClient);

            using var componentsJsonStream = await gitClient.GetItemContentAsync(
                      vsRepository.Id,
                      @".corext\Configs\dotnetcodeanalysis-components.json",
                      download : true,
                      versionDescriptor : commit);

            var fileContents   = await new StreamReader(componentsJsonStream).ReadToEndAsync();
            var componentsJson = JObject.Parse(fileContents);

            var languageServicesUrlAndManifestName = (string)componentsJson["Components"]["Microsoft.CodeAnalysis.LanguageServices"]["url"];

            var parts = languageServicesUrlAndManifestName.Split(';');

            if (parts.Length != 2)
            {
                return(null);
            }

            if (!parts[1].EndsWith(".vsman"))
            {
                return(null);
            }

            var buildNumber = new Uri(parts[0]).Segments.Last();

            var buildDefinition = (await buildClient.GetDefinitionsAsync(vsRepository.ProjectReference.Id, name: "Roslyn-Signed")).Single();
            var build           = (await buildClient.GetBuildsAsync(buildDefinition.Project.Id, definitions: new[] { buildDefinition.Id }, buildNumber: buildNumber)).SingleOrDefault();

            if (build == null)
            {
                return(null);
            }

            var buildId = buildDefinition.Name + "_" + build.BuildNumber;

            return(new RoslynBuildInformation(commitSha: build.SourceVersion, build.SourceBranch.Replace("refs/heads/", ""), buildId));
        }