Inedo Community Forums Forums
    • Recent
    • Tags
    • Popular
    • Login

    Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.

    If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!

    ProGet SCA: SBOM export does not work + UI issue

    Scheduled Pinned Locked Moved Support
    10 Posts 2 Posters 43 Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J Offline
      jw
      last edited by

      Stumbled across two issues during SCA testing and a question related to SBOM export:

      1. SBOM export does not work

      Clicking on "Export SBOM" and choosing either JSON or XML both leads to a popup with the following error message:

      The webpage at https://x.x.x.x/0x44/ProGet.WebApplication/Inedo.ProGet.WebApplication.Pages.Projects.Builds.ExportSbomPage/ExportSbom?projectId=5&buildNumber=3.0.0-beta.2024-03-04.9999&format=xml might be temporarily down or it may have moved permanently to a new web address.
      

      Exception in the Diagostics Center:

      An error occurred in the web application: Value cannot be null. (Parameter 'key')
      
      URL: https://x.x.x.x/0x44/ProGet.WebApplication/Inedo.ProGet.WebApplication.Pages.Projects.Builds.ExportSbomPage/ExportSbom?projectId=5&buildNumber=3.0.0&format=json
      Referrer: https://x.x.x.x/projects/builds/export-sbom?projectBuildId=6
      User: xxxxxxxxx
      User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
      Stack trace: at System.Collections.Generic.Dictionary`2.FindValue(TKey key)
      at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
      at Inedo.ProGet.Projects.BomUtil.Munge(Bom bom, IEnumerable`1 originalBoms)
      at Inedo.ProGet.Projects.BomUtil.ExportBuild(Int32 projectId, String buildNumber)
      at Inedo.ProGet.Projects.BomUtil.ExportBuildJsonAsync(Int32 projectId, String buildNumber, Stream output)
      at Inedo.ProGet.Projects.BomUtil.ExportAsync(AhHttpContext context)
      at Inedo.Web.AhWebMiddleware.InvokeAsync(HttpContext context)
      

      2. Question about SBOM export

      When uploading a SBOM as JSON and then using the "Export SBOM" functionality and selecting JSON again, what happens during export?

      Is the uploaded JSON returned exactly (identical file hash) like it was uploaded, or is there some "processing" in-between, e.g. it is run through CycloneDX Models/APIs and the exported SBOM is a new output which might have different package orders, etc.?

      3. Build version numbers are cut off on the projects page

      6e6066d2-24dd-45b9-a6b6-7c87ee66fbd2-image.png

      stevedennisS 1 Reply Last reply Reply Quote 0
      • stevedennisS Offline
        stevedennis inedo-engineer @jw
        last edited by

        Hi @jw,

        [1] Based on the stack trace, I think the issue is that one of the SBOM documents you uploaded has a Component with a null/missing Purl field. Obviously this should error, but that's what the error must be looking at the code. If you can confirm it, that'd be great.

        [2] ProGet is considered the "source of truth", so a new SBOM document will be generated based on the build packages. That SBOM will then be augmented with some information in the original SBOM(s), such as component "Pedigree", "Description ", etc.

        [3] Thanks, we'll try to play with CSS to improve this down the line.

        Thanks,
        Steve

        J 1 Reply Last reply Reply Quote 0
        • J Offline
          jw @stevedennis
          last edited by

          [1] Based on the stack trace, I think the issue is that one of the SBOM documents you uploaded has a Component with a null/missing Purl field. Obviously this should error, but that's what the error must be looking at the code. If you can confirm it, that'd be great.

          Yes, we are adding components with type Application that represent parts of our product into the SBOM via CycloneDX libraries. As these do not come from a package manager, they do not have a purl.

          According to the spec that should be ok.
          https://cyclonedx.org/docs/1.5/json/#components_items_purl

          [2] ProGet is considered the "source of truth", so a new SBOM document will be generated based on the build packages. That SBOM will then be augmented with some information in the original SBOM(s), such as component "Pedigree", "Description ", etc.

          Good to know, thank you.

          stevedennisS 1 Reply Last reply Reply Quote 0
          • stevedennisS Offline
            stevedennis inedo-engineer @jw
            last edited by

            @jw thanks for clarifying! We'll get the error fixed, but these would not show up in the export, since they are not a build package then

            1 Reply Last reply Reply Quote 0
            • J Offline
              jw
              last edited by

              @stevedennis

              Was the 3rd point addressed yet? I tried clearing the browser cache, but it still looks like this for me in 2024.7:

              e48cf70d-07ea-4f28-848a-5454e4e188fe-image.png

              stevedennisS 1 Reply Last reply Reply Quote 0
              • stevedennisS Offline
                stevedennis inedo-engineer @jw
                last edited by

                @jw this was not addressed; the "build pipelines" are fairly primitive ProGet 2024, and we plan to review it as a whole as we get more feedback from users

                If you click on "all builds" that might be the view you are expecting

                1 Reply Last reply Reply Quote 0
                • J Offline
                  jw
                  last edited by

                  In this case, allow me to sneak in my feedback instead. ;)

                  At the moment we are not planning to use the "build pipelines" feature at all. So from our point of view, it would be good if there was a way to opt-out of it.

                  For this page that would basically mean the previous behavior: When one clicks on a project and the "build pipelines" feature is disabled, it would directly navigate to the "all builds" page like before.

                  stevedennisS 1 Reply Last reply Reply Quote 0
                  • stevedennisS Offline
                    stevedennis inedo-engineer @jw
                    last edited by

                    Hi @jw,

                    We'd love to learn more - why not?

                    We envisioned that there would be lots and lots of builds in the Build stage (i.e. created by a CI server), and the ones released might got to a stage like Production.

                    Thanks

                    1 Reply Last reply Reply Quote 0
                    • J Offline
                      jw
                      last edited by

                      Our leading system, when it comes to deciding what state a build is in, is our build server. So, it does not really make sense for us to maintain this state in another system.

                      Also, similar to you guys, we are a product-based business, so we need to assume that all our stables releases are in production somewhere at any time.

                      In ProGet we just want to see how issues with our dependencies (license, vulnerabilities) are changing over time. To keep down the "CI beta build spam", we will either use the archiving feature or maybe even clean out old beta builds since it makes no sense to keep tracking those.

                      stevedennisS 1 Reply Last reply Reply Quote 0
                      • stevedennisS Offline
                        stevedennis inedo-engineer @jw
                        last edited by

                        @jw thanks for clarifying!

                        The pipelines in ProGet are not really meant to track status. The main reason for the build stages is to control automatic archival, issue creation, and notifications. For example, your stable releases might stay in a "Released" stage indefinitely.

                        We also had (in the preview feature) threre build statues: Active, Archived, Released. We don't use Released currently, but definitely something we may bring back. You don't want to delete a Released build, but you would probably want to delete an Archived build.

                        Anyway, I'd check out the pgutil builds promote command - that way you can keep your "archival rules" in ProGet.

                        1 Reply Last reply Reply Quote 0

                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                        With your input, this post could be even better 💗

                        Register Login
                        • 1 / 1
                        • First post
                          Last post
                        Inedo Website Home • Support Home • Code of Conduct • Forums Guide • Documentation