Tuesday, June 21, 2016

VSTS - SSH, Docker and Tokens

Another month, another update for Visual Studio Team Services! (To be honest, there have been 2 updates in June :) )
This is my favourite 3 new features:

SSH clients can connect to Git repos

Team Services Git repos now support SSH connections. This makes it easy for many development tools, build systems, and other services to connect, especially if you develop on Mac or Linux. You can get the SSH clone URL for your repo from the Clone button on the web, and also manage SSH keys on your profile page.


SSH has been enabled on all existing accounts. For the next sprint, SSH won't be enabled on new accounts until a few hours after the account is created. That restriction will go away shortly.

Docker integration for build and release management

Take advantage of the VS Team Services cloud-based build capabilities to build your Docker images and upload them to the Docker Hub as part of your continuous integration flow. Then, deploy those images to a number of Docker hosts as part of Release Management. The Marketplace extension adds all the service endpoint types and tasks necessary for you to work with Docker from VS Team Services.



Release – Passing oauth tokens to scripts

You might often need to run custom PS scripts in Release Management, which invoke REST APIs to create work items or query for more information about a build. You can now check an option in the environment to make a Visual Studio team Services OAuth token available to such scripts.


Here is a simple example on how to get a build definition:
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/definitions/$($env:SYSTEM_DEFINITIONID)?api-version=2.0" Write-Host "URL: $url" $definition = Invoke-RestMethod -Uri $url -Headers @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" } Write-Host "Definition = $($definition | ConvertTo-Json -Depth 1000)"

Wednesday, May 11, 2016

VSTS - New features for Build & Release

Microsoft has published a new feature set for Visual Studio Team Services which brings some very interesting new things to the tool.

Build and release summaries

There are two new bits of information that will show up on the build and release summaries. 
First, you’ll notice that console logs are now available in the Test pivot. Console logs are published as test result attachments and can be previewed in the Tests tab in the Build summary and Release summary panes.


Second, it’s very common to need to understand and identify test cases or containers that take the most time to run. You can now find this information by sorting the Duration column in the Tests tab in the Build/Release summary panes. In addition to the duration of individual tests, you can also look at aggregate duration of test containers or test runs by grouping by the respective pivots.


Release Management improvements

This release brings with it quite a few Release Management (RM) improvements. Let’s walk through the new capabilities…
First, Release Management now supports linking repositories (both Git and Team Foundation Version Control) as artifact sources directly to a release definition, enabling you to consume resources in your repos without having to publish build artifacts with the same files. Note: There is no support yet for auto-triggering new releases when a commit is made into these repositories, but that work is in flight, so stay tuned.



Additionally, you’ll find these new features:
  • Copy, Export, Import. A new extension has been published in the Marketplace that lets you copy, import, and export release definitions.
  • Schedule Based Deployment Condition. You can now configure a condition on an environment to pick up the successful deployments (or the latest one) from another environment and promote them at the selected time. This capability allows you to have time-based deployments that happen on a repeatable schedule. Chose the Deployment Condition tab in your environment to configure the schedule.
  • Release Management REST APIs. You can now use the REST APIs for Release Management service. They are published at: https://www.visualstudio.com/en-us/integrate/api/overview. Most of these APIs work with the on-premises releases of RM features in TFS 2015 Update 2 as well (changes between TFS and Team Services versions are indicated in the API docs). 
  • Simplified Release Definition Wizard. The wizard to create release definitions has been simplified. You can enter most of the inputs to setup a definition with a single environment in this wizard. They have also simplified the process for adding more environments into a definition or to clone an environment. 
  • New Job Execution Variables. Below are a set of variables now available that let you access information about artifact sources when executing deployment jobs. These variables are available in the format: RELEASEARTIFACTS_. represents the artifact source that is included in the release definition. You can find the name of the alias in the Artifacts tab of a release definition. 
    DEFINITIONID BUILDNUMBER BUILDID REPOSITORY_NAME SOURCEBRANCH SOURCEBRANCHNAME SOURCEVERSION BUILDURI REQUESTEDFORID REPOSITORY_PROVIDER REQUESTEDFOR TYPE
    Note: For scripts, replace the underscore with a period.

Friday, April 29, 2016

About Xamarin build with VSTS Hosted Agents

Last friday (22/04/2016), during an event organized by DotNetToscana, I had a talk about the build of Xamarin apps with Visual Studio Team Services' Hosted Agetn 

To make the build works, I had to add two tasks to manage the Xamarin License to the build definitoin: one to activate the license and another one to deactivate it after the build operation. 

There is a small (and big at same time) news about these two tasks: they are no more required now. 
Indeed, with the most recend update of the VSTS platform, the Hosted Build Agents have already an internal Xamarin license which is automatically activated when they have to perform some build opreations against Xamarin projects. 

So, to sum up, if you have or want to create a Xamarin build definition (and use VSTS Hosted Agent) now you don't have to add the license activation and deactivation tasks anymore. 

Have a good build :)


Tuesday, April 5, 2016

Introducing BugGuardian.MVC and BugGuardian.WebForms

Today I'm very excited to announce that I have released two additional modules for BugGuardian.

For who doesn't know it, BugGuardian is a library that allows to easily create a Bug or a Task work item on your Visual Studio Team Services account or on your on-premises Team Foundation Server 2015 in the case your application throws an Unhandled Exception.

To better support the integration of this library with web projects, today I'm announcing the availability of BugGuardian.MVC and BugGuardian.WebForms.

BugGuardian.MVC (GitHub, NuGet) is an extension for BugGuardian specifically written to support Asp.net MVC applications. 
It adds an Action Filter to your application to let you automatically intercept all the exceptions.

BugGuardian.WebForms (GitHub, NuGet), instead, is an extension for BugGuardian specifically written to support Asp.net WebForms applications.

They are based on the new BugGuardian version 1.3.0 and they support projects written with the .Net Framework v4.0 and above.

As it is for BugGuardian, these two additional libraries are OSS so feel free to see their code on GitHub.

If you encounter any issue using these libraries, please let me know through the GitHub Issues pages and I'll fix the problem as soon as possible!

Again, I want to thanks my friend and fellow MVP Marco Minerva (@marcominerva, GitHub) for the support and the suggestions.

Thursday, August 20, 2015

Welcome BugGuardian

Someone of you has maybe noticed the I did only few post in the last months. This happened because of two main reasons.

The first one is, as some of you already know, I moved in another country far away from home, with a completely different culture and language, to start a new adventure. This inevitably took a lot of time from the already small amount of spare time I have.

The second reason I wasn't so active here, that is also the reason of this post, is that I worked on a new project that I have released today: BugGuardian.

What is BugGuardian
BugGuardian is an Open Source library, written in C# like Shared Project, that allows to easily create a Bug work item on your Visual Studio Online account or on your on-premises Team Foundation Server 2015 in the case your application throws an Unhandled Exception.
It can also be invoked manually in try/catch blocks to keep track of handled exceptions.

It supports applications written with the .Net Framework v4.0 and above, and it can be used on every kind of project, including:
  • Asp.net
  • Asp.net MVC
  • WPF
  • Windows 8 / 8.1 Apps
  • Windows Phone 8 / 8.1 Apps
  • Universal App
  • Universal Windows Platform Apps (Windows 10)
  • and so on...

As I mentioned, it is OSS so you can find the sources on GitHub.

To let you install and use it without having to build the sources by your own, I have published it on NuGet. Just search for BugGuardian in the Package Manager GUI or run the following command in the Package Manager Console:
Install-Package DBTek.BugGuardian

Usage, support and Feedback
Refer to the project documentation to find examples about how to use this library. You can also find some code samples in the TestApps folder.

Anyway, just to make an example and to show it's really simple to use, this is the code you need to manage an exception and to open a Bug on your VSO / TFS:

using (var creator = new DBTek.BugGuardian.Creator())
{
    creator.AddBug(myException);
}

If you encounter any issue using this library, please let me know through the Issues page and I'll fix the problem as soon as possible!

I'm waiting for your feedback :)


I want to thank you my friend and fellow MVP Marco Minerva (@marcominerva) for the support, the patience and the Code Review.