As ALM Rangers we have built and released a fair number of Azure DevOps extensions over the last couple of years. These extensions have been built and released in collaboration with the Azure DevOps Product Group. This is why all our extensions were released using the ‘Microsoft DevLabs’ publisher.
As you might have read earlier, the ALM | DevOps Rangers are now operating in a more independent capacity from the Azure DevOps Product Group. One of the things this means, is that we will move our extensions over to a new publisher. However, as it turned out, there is currently no way in the product to do this – so we have to find and execute an approach of our own.
In the rest of this blog I will share how we will go about moving our extensions to share our lessons learned with you. For a start, we will perform the actions below on one of our extensions, the Countdown Widgets. If there are no issues with this move, we will start moving more extensions over in the future.
Creating a new publisher and build & release pipelines
As a first step, we created a new publisher for our extensions. As you might expect, it bears our own name: ALM-DevOps Rangers (id: ALM-DevOpsRangers). After creating the publisher, we have created completely new build & release pipelines using Azure DevOps. They are both set up in the same way as we have shared before. We have three environments: alpha, beta and production, now sharing the same publisher but with the extension id’s post fixed by alpha or beta in those environments.
Fairly straightforward up to here. Now on to the hard parts.
Moving users over
The approach above just creates a new delivery pipeline of our extension to the Azure DevOps Marketplace. Of course it is far from ideal to have two extensions with the same name (Countdown Widget) listed in the marketplace. So from here on, we plan to do the following:
1. Create a new branch of master, called deprecation and merge only one final commit to this branch. This commit adds a deprecation notice and a link to upgrade instructions to the configuration pane of Countdown Widget.
2. We release the build of Countdown Widgets master branch to the Azure DevOps marketplace with the new publisher. This puts the new extension, from the new publisher into place, enabling new users to install the widget
3. We release the build of Countdown Widgets deprecation branch to the Azure DevOps marketplace with the new publisher. This puts the upgrade notice on screen for all existing users, enabling them to upgrade.
4. Finally, we ask the Product Group to delist the Countdown Widget by Microsoft DevLabs from the market place, so that no new users can no longer install the extension from the old publisher.
Moving over download counts, ratings and Q&A
The procedure above left us with two things: A new version of the extension in the market place for new users to pick up and an upgrade path for existing users. Unfortunately, this manual migration also meant that all ratings, comments and Q&A associated with the extension were lost. To fix this, we will collaborate with the product group to see if they can move these over from the old extension to the new one.
Although it is still not possible to have your existing extension moved to a new publisher, we hope to get our extension moved this way – going through a number of hoops. If all goes well, you will see the steps outlined above happening over the next few days.
If you have any questions, feel free to reach out to us using any of the regular channels.