What is a "Feed" in ProGet?
  • 23 May 2022
  • 4 Minutes to read
  • Dark
  • PDF

What is a "Feed" in ProGet?

  • Dark
  • PDF

Feeds in Proget

A feed is like a private 'app store', but for your own applications and components. They are used to store packages, container images, and other assets, and users can easily see what's available to download what they need. "Feed" is our catch-all term to describe registries, repositories, feeds, etc.

By setting up multiple feeds, you can not only separate packages by package format and development group, but also use package promotion to identify quality and compliant packages for production use. There are no limits for how many feeds you can create, and all feed types are available in both free and paid editions of ProGet.

You can control who can access which feeds and assign granular privileges for performing specific tasks on a feed. For example, you could allow everyone to view and download packages on all feeds, but only allow ".NET Developers" to publish packages to the "NuGet-Dev" feed.

Creating and Managing Feeds

To create a new feed, go to Feeds > Create New Feed. You can also manage feeds from the Feeds page or by going to the specific feed page and clicking the Manage Feed button.

Feed Name

All feeds have an "API Endpoint" URL that is used for API (programmatic) access, and a feed's name becomes a part of this endpoint URL. When naming a feed, you can only use URL-friendly characters. You can find this URL in the top-right corner of the Feed's browse page.

Renaming a feed will also change its API Endpoint URL. As of ProGet 5.2.19, you can create "Alternate Names" for a feeds by going to Manage Feed > Rename, then clicking the Set Alternate Names link in the warning dialog. Alternate feed names essentially provide multiple endpoint URLs for a feed, and are useful when renaming feeds to keep backwards compatibility with old names.

Feed Types & Usage

When you create a feed, the feed type is fixed. This type defines two things:

  • Package Format the feed will use; a NuGet feed, for example, will only ever store NuGet packages, and a npm feed will only ever store npm packages.
  • API used to programmatically access packages within that feed; for example, a Universal feed will only use the Universal Feed API, and a NuGet feed will only ever use the NuGet API.

Some feeds have additional options that impact what is shown in the web user interface, such as icons and navigable options.

  • NuGet package type: Chocolatey and PowerShellGet both use NuGet packages, and by changing the package type, it changes the entire appearance of the feed
  • Feed usage: this option is available in ProGet 5.3 and later, and the options may include:
    • Free/Open Source packages; cache and filter source packages from public galleries, scan for vulnerabilities, check licenses, etc. Note: At least one connector is required before any packages will be displayed.
    • Private/Internal packages; publish proprietary/private packages that you build for internal use in your organization
    • Validated/promoted packages; promote packages that meet internal quality standards and are appropriate for production usage
    • Mixed packages; host both third-party and packages you create

Feed usage controls which tabs and messages are displayed in the user interface. For example, "Private/Internal packages" won't display the license filtering options, as you wouldn't create license usage restrictions for your own packages.

Note that not all feeds have all of these Feed Usage options. Generally speaking, we don't recommend using mixed packages, as it will present all of the user interface options; most of them won't be relevant for packages you create (like license filtering or vulnerability scanning).

Deleting a Feed

A feed can either be deactivated or deleted. Deactivating a feed will make it invisible from most of the user interface, and inaccessible from API endpoints.

Deleting a feed will remove it entirely from the software. All package data indexed in the database will be deleted, as well as metadata not stored in the package itself, such as publish dates and download counts for each package.

Feed-level Features in ProGet

You can configure your feeds in ProGet with a number of options to get maximum value out of ProGet, including but not limited to:

  • Connectors allow ProGet feeds to include and curate packages from an external source (e.g., another ProGet feed or any other implementer of the package API for the feed type, like NuGet.org), to filter and curate them, and to aggregate packages from multiple sources into one feed. All versions of ProGet can use connectors, making ProGet an ideal private proxy for a public feed like NuGet. Connector filters are limited in free versions of ProGet, and connections between ProGet instances is a violation of the ProGet EULA.

  • Feed replication is a feature in ProGet Enterprise that allows you to replicate packages among different ProGet instances across the globe to allow different teams to share feeds without setting up complicated, global infrastructure.

  • Webhooks allow you to integrate ProGet with other tools and notify users, trigger automated workflows, or audit events like package creation and deletion. For example, Inedo's Slack channels include webhooks to let you know when new extensions, releases, and pre-releases are available to users.

  • Vulnerability Scanning and Blocking can automatically scan third-party packages and Docker container images against vulnerability databases

  • License Detection and Blocking can help you manage licensing agreements of third-party, open-source packages.

  • Live Usage Scanning for packages and for containers can connect to an external resource such as Otter or Kubernetes to collect and display how packages and Docker container images are used across your infrastructure.

  • Tracking package deployment to see where packages have been deployed.

  • View package consumers for DLL packages to see what other packages and applications are using a specific package version.

Was this article helpful?