public IResultFromExtension <WorkItemLink[]> Map(OctopusBuildInformation buildInformation)
        {
            if (!IsEnabled)
            {
                return(ResultFromExtension <WorkItemLink[]> .ExtensionDisabled());
            }

            if (string.IsNullOrEmpty(store.GetJiraUsername()) ||
                string.IsNullOrEmpty(store.GetJiraPassword()?.Value))
            {
                return(FailureWithLog("Username/password not configured"));
            }

            var baseUrl = store.GetBaseUrl();

            if (string.IsNullOrWhiteSpace(baseUrl))
            {
                return(FailureWithLog("No BaseUrl configured"));
            }

            var releaseNotePrefix = store.GetReleaseNotePrefix();
            var workItemIds       = commentParser.ParseWorkItemIds(buildInformation).Distinct().ToArray();

            if (workItemIds.Length == 0)
            {
                return(ResultFromExtension <WorkItemLink[]> .Success(Array.Empty <WorkItemLink>()));
            }

            return(TryConvertWorkItemLinks(workItemIds, releaseNotePrefix, baseUrl));
        }
        public IResultFromExtension <WorkItemLink[]> Map(OctopusBuildInformation buildInformation)
        {
            // For ADO, we should ignore anything that wasn't built by ADO because we get work items from the build
            if (!IsEnabled)
            {
                return(ResultFromExtension <WorkItemLink[]> .ExtensionDisabled());
            }
            if (buildInformation?.BuildEnvironment != "Azure DevOps" ||
                string.IsNullOrWhiteSpace(buildInformation?.BuildUrl))
            {
                return(ResultFromExtension <WorkItemLink[]> .Success(Array.Empty <WorkItemLink>()));
            }

            return(client.GetBuildWorkItemLinks(AdoBuildUrls.ParseBrowserUrl(buildInformation.BuildUrl)));
        }
Ejemplo n.º 3
0
        public IResultFromExtension <WorkItemLink[]> Map(OctopusBuildInformation buildInformation)
        {
            if (!IsEnabled)
            {
                return(ResultFromExtension <WorkItemLink[]> .ExtensionDisabled());
            }

            var baseUrl = store.GetBaseUrl();

            if (string.IsNullOrWhiteSpace(baseUrl))
            {
                return(ResultFromExtension <WorkItemLink[]> .Failed("Base Url is not configured"));
            }
            if (buildInformation.VcsRoot == null)
            {
                return(ResultFromExtension <WorkItemLink[]> .Failed("No VCS root configured"));
            }

            const string pathComponentIndicatingAzureDevOpsVcs = @"/_git/";

            if (buildInformation.VcsRoot.Contains(pathComponentIndicatingAzureDevOpsVcs))
            {
                systemLog.WarnFormat("The VCS Root '{0}' indicates this build information is Azure DevOps related so GitHub comment references will be ignored", buildInformation.VcsRoot);
                return(ResultFromExtension <WorkItemLink[]> .Success(new WorkItemLink[0]));
            }

            var releaseNotePrefix  = store.GetReleaseNotePrefix();
            var workItemReferences = commentParser.ParseWorkItemReferences(buildInformation);

            return(ResultFromExtension <WorkItemLink[]> .Success(workItemReferences.Select(wir => new WorkItemLink
            {
                Id = wir.IssueNumber,
                Description = GetReleaseNote(buildInformation.VcsRoot, wir.IssueNumber, wir.LinkData, releaseNotePrefix),
                LinkUrl = NormalizeLinkData(baseUrl, buildInformation.VcsRoot, wir.LinkData),
                Source = GitHubConfigurationStore.CommentParser
            })
                                                                 .Distinct()
                                                                 .ToArray()));
        }
        public OctopusPackageVersionBuildInformationMappedResource Push(string packageId, string version, OctopusBuildInformation octopusMetadata, OverwriteMode overwriteMode)
        {
            if (string.IsNullOrWhiteSpace(packageId))
            {
                throw new ArgumentException("A package Id must be supplied", nameof(packageId));
            }
            if (string.IsNullOrWhiteSpace(version))
            {
                throw new ArgumentException("A version must be supplied", nameof(version));
            }

            if (!repository.HasLink("BuildInformation"))
            {
                throw new OperationNotSupportedByOctopusServerException(
                          OctopusBuildInformation.BuildInformationRequiresOctopusVersionMessage,
                          OctopusBuildInformation.BuildInformationRequiresOctopusVersion);
            }
            var link = repository.Link("BuildInformation");

            var resource = new OctopusPackageVersionBuildInformationResource
            {
                PackageId = packageId,
                Version   = version,
                OctopusBuildInformation = octopusMetadata,
            };

            return(repository.Client.Post <OctopusPackageVersionBuildInformationResource, OctopusPackageVersionBuildInformationMappedResource>(link, resource, new { overwriteMode = overwriteMode }));
        }
 public OctopusPackageVersionBuildInformationMappedResource Push(string packageId, string version, OctopusBuildInformation octopusMetadata)
 {
     return(Push(packageId, version, octopusMetadata, OverwriteMode.FailIfExists));
 }
Ejemplo n.º 6
0
 public Task <OctopusPackageVersionBuildInformationMappedResource> Push(string packageId, string version, OctopusBuildInformation octopusMetadata, bool replaceExisting)
 {
     return(Push(packageId, version, octopusMetadata, replaceExisting ? OverwriteMode.OverwriteExisting : OverwriteMode.FailIfExists));
 }
Ejemplo n.º 7
0
 public WorkItemReference[] ParseWorkItemReferences(OctopusBuildInformation buildInformation)
 {
     return(buildInformation.Commits.SelectMany(c => ParseReferences(c.Comment))
            .ToArray());
 }