MyGet Blog

Package management made easier!

NAVIGATION - SEARCH

Support for feed names with dashes and underscores

An often requested feature for MyGet was support for feed names with dashes and/or underscores. With our 1.6 release we introduce just this: support for feed names with – and _ in their name.

Feed names with dashes and underscores

Many people asked us for this feature. The main scenario these users referred to was having feeds for development and production, having feeds per branch and so on with a recognizable prefix.

Since we deployed it in our staging environment, we’ve been using it continuously ourselves. Every support request that comes in and requires investigation is prefixed with “support-“. When we develop a new feature and test it on a given feed, we typically prefix those feeds with “dev-". I even saw a “chuck-norris-was-here” feed appearing during development. We hope you like this as much as we do!

Happy packaging!

Release notes for MyGet 1.6

Many users have asked for us to provide release notes for everything we put online. Since that’s a great idea we’ll start doing this with the current 1.6 release which has been deployed earlier this week. But before we dive into that, let’s give you some hints about our development process and versioning system.

Our development process and versioning system

If you look at the footer of our website, you’ll have seen the following for the past few weeks already:

image

That’s right: we’ve been on (parts of) version 1.6.x for the past few weeks already. The reason for that is we version after our sprints and do continuous deployment of most things we work on. This means that when we start deploying features for our v1.7.x sprint, we’ll already update the version number in the footer to that number yet we’ll provide release notes only at the end of our sprint. So while today, you may already see v1.7.x mentioned in our footer because we've already deployed some features from that sprint, the following release notes are valid at time of writing this post.

Release notes for MyGet 1.6

MyGet 1.6 was released on February 25, 2013.

Features

MyGet

  • Minimum length for usernames has been decreased to 3 characters (previously 6). Shorter usernames are now possible.
  • A new menu item under feed: "Feed Settings" will contain settings specific to how MyGet handles packages for a given feed.
  • Feed settings contains an option to enable/disable overwriting of packages on the feed
  • Feed settings contains an option to enable/disable validation on the package version number with regards to Semantic Versioning
  • Dashes and underscores in feed names are supported. Feeds can be named foo-prod for example.
  • Download feed as ZIP.
  • Package Sources are out of beta.
  • API key in package source configuration is now masked

MyGet Enterprise

  • Block e-mail addresses not belonging to the organization.
  • Users can be made administrator.
  • User removal (with the option of transfering their resources to another user).

MyGet Build Services

  • Copy build log to clipboard.
  • Specify build configuration and platform (Release/Debug and Any CPU/Mixed Platforms/...)
  • Support incremental build numbers.
  • Support configuring the build number using a template. Register version number as an environment variable.
  • Support building Windows Phone 8 projects.
  • Hotlink commit on GitHub/BitBucket from the build list.
  • Refresh build status automatically.
  • Support creating tools packages.
  • Hanging build detection.
  • Install psake on the build servers.

Bug Fixes

  • Copy to clipboard on feed details page did not work in Chrome version 24.0.1312.57 and up.
  • Feed statistics are not updated in some situations.
  • NuGet Package Explorer always shows prerelease packages in the feed list.
  • Build Services: building from protected SVN repositories isn't always working.
  • Build Services: GitHub API only returns 30 repositories.

Happy packaging!

We were down...

On 23 February 2013, we’ve been down for 8 hours. We received a monitoring alert (and some e-mails and tweets as well) at around 9:50 PM (CET) notifying us of this event. After looking into it, we discovered there was not much to do about this besides sit and wait… We do wish to apologize and clarify the events for this outage (our first since July 2012).

Windows Azure Storage outageThe root cause of this outage was a global outage of Windows Azure Storage. This service is one of the code building blocks of Windows Azure and has never in the past failed (that’s 4 years of no issues). This storage system works based on the HTTP protocol and has both http and https endpoints. Most applications built on top of Windows Azure, including the platform’s own building blocks, are using the https endpoints to prevent transport-level attacks, including MyGet. Unfortunately, most clusters of Windows Azure Storage were running an expired SSL certificate on this https endpoint, the reason for this global outage of Windows Azure and every application hosted on the platform, including MyGet and the official NuGet package source and every service directly depending on www.nuget.org.

MyGet runs in the Windows Azure Europe West region (Amsterdam), with a cold disaster recovery location in the Windows Azure Europe North region (Dublin). We can fail over to this location within hours if compute or storage in the main datacenter location fail. In case of a serious outage, we can restore a disaster recovery copy of our services in any Windows Azure region around the globe. Unfortunately, there’s nothing much we can do in case of a global outage…

Our status page can always be found at http://status.myget.org. For reference, here are our uptime numbers for the past year.

Name

Uptime
(avg.: 99.79%)

February 2013

98,44%

January 2013

100%

December 2012

99,99%

November 2012

99,94%

October 2012

99,99%

September 2012

99,92%

August 2012

99,98%

July 2012

99,56%

June 2012

99,94%

May 2012

100%

April 2012

99,69%

March 2012

99,99%

 

Again, we do apologize for the inconvenience caused and are debating around possible fallback scenarios in case a severe platform outage like this occurs again.

Happy packaging!