Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The following sample task illustrates how to add custom build step messages to the build process.
using System;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Build.Proxy;
using System.Threading;
// This sample references Microsoft.Build.Framework.dll, Microsoft.Build.Utilities.dll,
// Microsoft.TeamFoundation.Build.Common.dll, Microsoft.TeamFoundation.Client.dll,
// System.dll, System.Web.Services.dll
namespace TeamBuildSampleTasks
{
public class SampleTaskWithCustomBuildStep : Task
{
private string m_teamFoundationUrl;
private string m_buildNumber;
private string m_teamProject;
[Required]
public string TeamFoundationUrl
{
get { return m_teamFoundationUrl; }
set { m_teamFoundationUrl = value; }
}
[Required]
public string BuildNumber
{
get { return m_buildNumber; }
set { m_buildNumber = value; }
}
[Required]
public string TeamProject
{
get { return m_teamProject; }
set { m_teamProject = value; }
}
public override bool Execute()
{
// Create TeamBuild BuildStore web service.
TeamFoundationServer tfs = new TeamFoundationServer(m_teamFoundationUrl);
BuildStore bs = (BuildStore)(tfs.GetService(typeof(BuildStore)));
// buildUri is used later on to identify the build
string buildUri = bs.GetBuildUri(m_teamProject, m_buildNumber);
// This string is used internally in TeamBuild to identify the message.
string buildStepName = "Sleep Messages";
string buildStepMsg = "Build Step: Sleep and get random result";
// Add the build step message to the build process and this will show up in the build report
// now the status set to 'in progress'
bs.AddBuildStep(buildUri, buildStepName, buildStepMsg);
// Do task actions here. My sample does nothing but goes to a sound sleep and gets a random result :)
Thread.Sleep(10000);
bool result = GetRandomResult();
//update the build step message with pass/fail information
if(result)
bs.UpdateBuildStep(buildUri, buildStepName, DateTime.Now, BuildStepStatus.Succeeded);
else
bs.UpdateBuildStep(buildUri, buildStepName, DateTime.Now, BuildStepStatus.Failed);
// Log the result into build log file
Log.LogMessage("SampleTaskWithCustomBuildStep completed, result: " + result);
return true;
}
private bool GetRandomResult()
{
return ((1==new Random().Next() % 2) ? true : false);
}
}
}
Comments
- Anonymous
June 12, 2009
PingBack from http://insomniacuresite.info/story.php?id=7618