コード例 #1
0
        public List <VersionBomComponentView> GetBomEntries(ProjectVersionView projectVersionView)
        {
            string componentsUrl = MetadataResponseService.GetLink(projectVersionView, ApiLinks.COMPONENTS_LINK);
            List <VersionBomComponentView> allItems = GetAllItems <VersionBomComponentView>(componentsUrl);

            return(allItems);
        }
コード例 #2
0
        public PolicyStatus GetPolicyStatus(ProjectVersionView projectVersionView)
        {
            VersionBomPolicyStatusView policyView = GetVersionBomPolicyStatusView(projectVersionView);
            PolicyStatus policyStatus             = new PolicyStatus(policyView);

            return(policyStatus);
        }
コード例 #3
0
        public VersionBomPolicyStatusView GetPolicies()
        {
            ProjectView                project        = ProjectDataService.GetProjectView(HubProjectName);
            ProjectVersionView         projectVersion = ProjectDataService.GetMostRecentVersion(project);
            VersionBomPolicyStatusView policyStatus   = PolicyDataService.GetVersionBomPolicyStatusView(projectVersion);

            return(policyStatus);
        }
コード例 #4
0
        public void ExecuteTask()
        {
            if (IsExcluded())
            {
                Log.LogMessage("Project {0} excluded from task", HubProjectName);
            }
            else
            {
                // Creates output directory if it doesn't already exist
                Directory.CreateDirectory(OutputDirectory);

                // Define output files
                string bdioFilePath     = $"{OutputDirectory}/{HubProjectName}.jsonld";
                string flatListFilePath = $"{OutputDirectory}/{HubProjectName}_flat.txt";

                // Execute task functionality
                if (CreateFlatDependencyList)
                {
                    string[] externalIds = CreateFlatList().ToArray();
                    File.WriteAllLines(flatListFilePath, externalIds, Encoding.UTF8);
                }

                if (CreateHubBdio)
                {
                    BdioContent bdioContent = BuildBOM();
                    File.WriteAllText(bdioFilePath, bdioContent.ToString());
                }

                if (DeployHubBdio)
                {
                    string      bdio        = File.ReadAllText(bdioFilePath);
                    BdioContent bdioContent = BdioContent.Parse(bdio);
                    DeployBdioDataService.Deploy(bdioContent);
                }

                // Only wait for scan if we have to
                if (DeployHubBdio && (CheckPolicies || CreateHubBdio || WaitForDeployment))
                {
                    WaitForHub();
                }

                if (CreateHubReport)
                {
                    ProjectView        projectView        = ProjectDataService.GetProjectView(HubProjectName);
                    ProjectVersionView projectVersionView = ProjectDataService.GetMostRecentVersion(projectView);
                    ReportData         reportData         = RiskReportDataService.GetReportData(projectView, projectVersionView);
                    RiskReportDataService.WriteToRiskReport(reportData, OutputDirectory);
                }

                if (CheckPolicies)
                {
                    PolicyStatus policyStatus = new PolicyStatus(GetPolicies());
                    LogPolicyViolations(policyStatus);
                }
            }
        }
コード例 #5
0
        public VersionBomPolicyStatusView GetVersionBomPolicyStatusView(ProjectVersionView projectVersionView)
        {
            string     policyStatusUrl = MetadataResponseService.GetLink(projectVersionView, ApiLinks.POLICY_STATUS_LINK);
            HubRequest request         = new HubRequest(RestConnection);

            request.SetUriFromString(policyStatusUrl);
            VersionBomPolicyStatusView response = request.ExecuteGetForResponse <VersionBomPolicyStatusView>();

            return(response);
        }
コード例 #6
0
        public ProjectVersionView GetMostRecentVersion(ProjectView projectView)
        {
            List <ProjectVersionView> versions = GetPagedProjectVersionView(projectView).Items;
            ProjectVersionView        recent   = null;

            if (versions != null && versions.Count > 0)
            {
                recent = versions[0]; // Assuming sorted by updatedAt asc
            }
            return(recent);
        }
コード例 #7
0
        private List <ScanSummaryView> GetPendingScans(String projectName, String projectVersion)
        {
            List <ScanSummaryView> pendingScans = new List <ScanSummaryView>();

            try
            {
                ProjectView        projectItem        = projectDataService.GetProjectView(projectName);
                ProjectVersionView projectVersionItem = projectVersionDataService.GetProjectVersion(projectItem, projectVersion);
                string             projectVersionUrl  = projectVersionItem.Metadata.Href;

                List <CodeLocationView> allCodeLocations      = codeLocationDataService.GetAllCodeLocationsForCodeLocationType(CodeLocationTypeEnum.BOM_IMPORT);
                List <string>           allScanSummariesLinks = new List <string>();
                foreach (CodeLocationView codeLocationItem in allCodeLocations)
                {
                    string mappedProjectVersionUrl = codeLocationItem.MappedProjectVersion;
                    if (projectVersionUrl.Equals(mappedProjectVersionUrl))
                    {
                        string scanSummariesLink = MetadataResponseService.GetLink(codeLocationItem, ApiLinks.SCANS_LINK);
                        allScanSummariesLinks.Add(scanSummariesLink);
                    }
                }

                List <ScanSummaryView> allScanSummaries = new List <ScanSummaryView>();
                foreach (string scanSummaryLink in allScanSummariesLinks)
                {
                    allScanSummaries.AddRange(scanSummaryDataService.GetAllItems <ScanSummaryView>(scanSummaryLink));
                }

                pendingScans = new List <ScanSummaryView>();
                foreach (ScanSummaryView scanSummaryItem in allScanSummaries)
                {
                    if (IsPending(scanSummaryItem.Status))
                    {
                        pendingScans.Add(scanSummaryItem);
                    }
                }
            }
            catch (Exception ex)
            {
                pendingScans = new List <ScanSummaryView>();
                // ignore, since we might not have found a project or version, etc
                // so just keep waiting until the timeout
            }

            return(pendingScans);
        }
コード例 #8
0
        public ReportData GetReportData(ProjectView projectView, ProjectVersionView projectVersionView)
        {
            ReportData reportData = new ReportData()
            {
                ProjectName       = projectView.Name,
                ProjectURL        = GetReportProjectUrl(projectView.Metadata.Href),
                ProjectVersion    = projectVersionView.VersionName,
                ProjectVersionURL = GetReportVersionUrl(projectVersionView.Metadata.Href, false),
                Phase             = projectVersionView.Phase.ToString(),
                Distribution      = projectVersionView.Distribution.ToString(),
            };
            List <BomComponent> components = new List <BomComponent>();

            List <VersionBomComponentView> bomEntries = AggregateBomDataService.GetBomEntries(projectVersionView);

            foreach (VersionBomComponentView bomEntry in bomEntries)
            {
                BomComponent component;
                try
                {
                    component = CreateBomComponentFromBomComponentView(bomEntry);
                    components.Add(component);
                }
                catch (Exception ex)
                {
                    throw new BlackDuckIntegrationException("Error getting BOM Component.", ex);
                }

                string componentPolicyStatusURL = null;
                if (!String.IsNullOrWhiteSpace(bomEntry.ComponentVersion))
                {
                    componentPolicyStatusURL = GetComponentPolicyUrl(projectVersionView.Metadata.Href, bomEntry.ComponentVersion);
                }
                else
                {
                    componentPolicyStatusURL = GetComponentPolicyUrl(projectVersionView.Metadata.Href, bomEntry.Component);
                }

                CheckPolicyStatusForComponent(componentPolicyStatusURL, component);
            }

            reportData.SetComponents(components);
            return(reportData);
        }