I recently open sourced a set of build tasks on GitHub and used this as an opportunity to test out Microsoft’s release tools for VSTS extensions.

The release tools come with several new tasks that can streamline the extension release process:

  • Extension Version
    • helps you look up the current version of your extension and can increment it as needed
  • Package
    • if you are deploying to TFS
  • Publish
    • if you are sending it straight to the marketplace
  • Install
    • if you are exporting your Release/Build definition and want to make sure that third party extensions required are installed
  • Share
    • (VSTS only) enables you to share an existing extension that you own with a new account during build/release
    • You can also use this task to re-share the extension with a list of accounts that may have declined or removed your invitation before your latest update

While working with the extension I had the following objective:

  • Use continuous integration and deployment to release my extension quickly and efficiently
  • Increment minor version automatically to avoid the hassle
  • Package and publish to the marketplace whenever there is a change

I put the following build process into place in VSTS :

  • get the sources from GitHub whenever there is an update
  • stage the sources for release

We could include a JSON validation step here to make sure all files in the VSTS extension are valid. This would prevent us from kicking off releases that are only going to fail at the “publish” stage and save valuable queue and build/release time.

…and the following release process:

 

  • task #1
    • query the current extension version
    • increase it by one
    • write the new extension version into the variable “Extension.Version”
  • task #2
    • write out “Extension.Version” to check if the increase worked properly
  • task #3
    • use tfx to package the extension
    • publish the extension to the marketplace

 

 

One thought on “Publishing TFS/VSTS extensions with Visual Studio Team Build/Release

Comments are closed.