- 03 Aug 2022
- 7 Minutes to read
Upgrading to ProGet 2022
- Updated on 03 Aug 2022
- 7 Minutes to read
ProGet 2022 is a major update, and this article provides information about what will change, the impact to your instance, and how to mitigate risk during upgrade.
Planning for Your Upgrade
ProGet 2022 is a major upgrade, and many of the changes were additive features (available as "preview" features in ProGet 6.0), platform updates (library upgrades, etc.), and UI changes.
There are some key things to keep in mind before upgrading:
- Replication has updated/refactored, and you may need to migrate configuration
- Package Consumers has been replaced with Projects and Releases, and you may want to migrate data
- Custom-built extensions need to be recompiled
- Hybrid user directories were replaced, and you will need to manually delete old entries
- The platform (.NET 4.5.2) was upgraded to .NET 6, which may mean you need to update hosting configuration and directories. A few customers have also reported performance problems, which we are continuing to investigate.
You can also rollback to ProGet 6.0 if there are issues without restoring your database.
Upgrading from ProGet 5.3
If you're upgrading from ProGet 5.3, upgrading to ProGet 2022 should be relatively easy.
There were some API Keys changes in ProGet 6.0, and some users reported that some API Key needing to edited or deleted/recreated to fix permissions issues. Otherwise, no major features were removed or changed, and the upgrade should be relatively easy.
Upgrading from ProGet 5.2
If you're upgrading from ProGet 5.2, you will need convert all "quirks" feeds before upgrading. Rolling back will also require restoring your database.
While we recommend upgrading directly to ProGet 2022 from ProGet 5.2 (and skipping 6.0 and 5.3), there were some substantial changes to the database made in ProGet 5.3. Make sure to read the Upgrading to ProGet 5.3 notes to learn what changed.
Upgrading from ProGet 5.1 or Earlier
If you're upgrading from ProGet 5.1 or earlier, you should upgrade to ProGet 5.2 first.
New Features in ProGet 2022
Updated Feature: Replication Improvements
For ProGet 2022, we developed a new user interface for replication and improved some of the underlying replication code to make it easier to troubleshoot and diagnose. This was developed as a "preview feature" in ProGet 6.0, and you may already have enabled it.
If you didn't enable the "preview feature" in ProGet 6.0, then replication will not work until you've performed a one-time data migration. This takes seconds, and can be done under the "Replication" tab.
In addition to an improved user experience, the main differences are:
- Create a single "replication configuration" that uses multiple feeds; in previous versions, feed replication was configured on a per-feed basis
- Use API Keys that can be changed without editing replication configuration; in previous versions, each feed required its own security token, and API Keys were not used
- See "incoming" and "outgoing" replications status on a single dashboard; this was very limited in previous versions, and was often confusing to follow
See Feed Replication (6.0 and Earlier) to learn more about the differences.
Because the replication changes were implemented side-by-side, you can test the replication changes in ProGet 6.0 by enabling the "preview features" in the latest maintenance version of ProGet 6.0. You can also switch back to using the non-preview behavior.
After you've upgraded to ProGet 2022, you can rollback to ProGet 6.0 if there are issues, and then switch back to the old behavior from within ProGet.
New Feature: ProGet Enterprise for Edge Computing
This is a new edition of ProGet that is supported via a new license key in ProGet v2022, and is specialized for Content Distribution for Edge Computing.
Compared to ProGet Enterprise, the main benefit is scaling at 5+ edge nodes (instances):
• Licensing (pricing) model that makes scaling to hundreds of nodes feasible
• Dashboard on “hub” instances to give visibility into edge nodes
• Simplified setup for the edge nodes (no license key required)
• Working with our team to better improve the product/experience to fit your needs
There is no risk mitigation required, and many of the code changes/additions were introduced as a preview feature throughout ProGet 6.0.
New Feature: SAML & Security Management Overhaul
We've added some more flexibility for logging-in to ProGet 2022 and made it lot easier to manage security. This was developed as a "preview feature" in ProGet 6.0, and you may already have enabled it:
- Improved UI for managing security and users
- Allow multiple user directories to be searched at once
- Integrate with SAML providers like Azure and PingID
- Import/export Permissions and Built-in Users
- Enable multiple login options at once: Built-in Username/passwords, Windows Authentication, SAML Authentication
These changes involved changing some of the login/authentication code, which may lead to bugs/regressions where users cannot log-in or a connected systems (build/CI server) reports authentication errors.
In addition, if you're using the Hybrid User Directory (which allowed you to query multiple user directories), those user directories will become enabled, and you will see an error on the User Directories page if you had one configured. You can safely delete this directory.
Because the security changes were implemented side-by-side, you can test the feature changes in ProGet 6.0 by enabling the "preview features" in the latest maintenance version of ProGet 6.0. You can also switch back to using the non-preview behavior.
In addition, be prepared to run the locked out troubleshooting in the event you are locked out after upgrade. You will be able to restore security after that. If that doesn't work, you can rollback to ProGet 6.0.
New Feature: Software Composition Analysis (SCA)
The "Vulnerabilities" and "Licenses" links in the top navigation have been moved under the new "Reporting & SCA" link. Under this link is also Projects and Releases, which will help you identify which of your applications have unwanted licenses or vulnerabilities.
There is no risk mitigation required, as this is a new feature with minimal impact on existing features.
Package Consumer Data Migration
This feature is designed to completely replace the existing Package Consumers (Usage Tracking) feature, but it's implemented side-by-side.
If you've used the Package Consumers (Usage Tracking) feature in an earlier version of ProGet, then Software Composition Analysis (SCA) features will be disabled until you migrate the data.
Package Consumers will be completely removed in ProGet 2023.
Custom Extensions Changes
ProGet 2022 targets
Inedo.SDK-2.0, and you'll need to rebuild any custom extensions you've created. Note that this version of the SDK targets .NET6.
Previous versions of ProGet targeted different versions of Inedo SDK 1.x.This means that you'll need to update the
Inedo.SDK NuGet package reference in your project to Inedo-SDK 2.0. See creating an extension documentation to learn more about how to do this.
Platform Changes (.NET6)
The platform that ProGet uses was upgraded from .NET 4.5.2 to .NET 6.
This shouldn't require you to make any changes, as the Inedo Hub will handle them during installation. You do not need to install the .NET6 Web Hosting Package for IIS, as it's automatically bundled in the ProGet application.
We have removed the Web folder and the web application is now included in the Service directory. If you have multiple sites in IIS, you will need to update IIS to point to the Service directory now.
A few customers have reported errors like: "Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached."
They all had very high usage (hundreds of requests per second), multiple connectors, but no load balancing. During peak usage:
- ProGet 6.0 and earlier would experience long requests and (upwards of a minute) that eventually error with timeout
- ProGet 2022 is faster, and times out much quicker
While load-balancing would help, we believe the performance change is a result of "shifting bottlenecks" from ASP.NET Framework's request throttling to the ADO.NET’s database connection pooling.
We are still investigating the best way to handle this, but for the time being you can set the behavior back to ASP.NET Framework's default: IIS > ProGet WebSite > Advanced Settings > Limits, and set "Maximum Concurrent Connections" to 20.
We are planning a code change that will introduce a configurable request limit.
You can perform the upgrade from the Inedo Hub. Like with all upgrades, you should make sure your installation is backed-up.
While you can upgrade from ProGet 5.0 and later to ProGet 2022 (i.e. there is no need to install intermediate versions), you can only rollback to ProGet 6.0 without restoring your database.
You can rollback using the Inedo Hub.
You can rollback to any version of ProGet 6.0 without restoring the database.
While there are database schema changes, they are all backwards-compatible, which means you can safely rollback your ProGet installation if there's a showstopper bug, and then upgrade later.