SlideShare uma empresa Scribd logo
1 de 22
Team Foundation Server
   Build Automation

      Give me a Light, Build Light
            Mike Douglas
      mike@doitconsultants.com
     www.CodeSmartNotHard.com
    www.CodePlex.com/TeamDeploy
About Me
• Current Lead Developer / Analyst at Farm Credit
  Services of America
• Wide variety background in .NET
  – Web Services, Remoting, WCF, WinForms, ASP.NET,
    Biztalk, TFS, CSLA.NET, Code Generation
• Frameworks, Code Generation, and Agile Blog
  – www.CodeSmartNotHard.com
• Open Source Project for TFS Builds
  – www.CodePlex.com/TeamDeploy
• 3rd .NET User Group Presentation
Agenda
•   Build Automation – more than just build
•   Creating a build
•   What’s in a build – Proj, Targets, and Tasks
•   Creating a Custom Task
•   Team Deploy
Build Automation
• Should be part of a good configuration
  management process
• Our Goal – Deploy same MSI to test as
  production
  – Separate Environments
     • Development, Test, Staging, Production
  – Continuous and “Build and Deploy” Builds
  – Admin Install MSIs
  – ConfigFiles folder for multiple environments
ConfigFiles folder
Creating a Build
• Demo
What is in a build?
• TFSBuild.proj – XML for TeamBuild
• Targets – “Events” of the build, Before/After
  are overrideable for custom functionality.
• Tasks – built in or custom actions that perform
  a set piece of functionality.

Quick Demo
Build Targets
End to End Iteration

         Clean


      Get Source
                                     Build Break
                       Build Error
         Label


        Compile


       Run Tests


    Drop Build Files
Targets
• Commonly used ones
 Target Name               Description
 BeforeEndtoEndIteration   Runs tasks before EndToEndIteration target. Use this
                           to run something before the build starts.
                           Example: Turn street light yellow.
 AfterEndtoEndIteration    Runs tasks after EndToEndIteration target. Use this to
                           run something after the build successfully completes.
                           Example: Copy Binaries and Config Files to MSI,
                           Deploy MSI, Turn on Green Street Light
 BeforeTest                Called before tests are run.
                           Example: Update or Prepare database or spreadsheet
                           for Unit Tests
 AfterOnBuildBreak         Called after a work item is created when a build fails
                           Example: Turn on Red Street Light
Other Overridable Targets
Target Name                 Description
BuildNumberOverrideTarget   Used to override a target to customize a build number. The task you write must
                            create an ouptut property called BuildNumber
BeforeClean                 Called before clean is tried. Insert your task into this target to run pre-clean
                            custom target.
AfterClean                  Called after clean is completed.

BeforeGet                   Called before sources are retrieved from source control

AfterGet                    Called after sources are retrieved

BeforeLabel                 Called before sources are labeled.

AfterLabel                  Called after labeling is completed.

BeforeCompile               Called before compilation is completed.

AfterCompile                Called after compilation is completed.

AfterTest                   Called after testing is completed.

BeforeDropBuild             Called before saving the built binaries, build log files and test results to the build-
                            drop directory.
AfterDropBuild              Called after dropping the built binaries, build log files and test results to the
                            build-drop directory.
BeforeOnBuildBreak          Called before creating a work item on the build that fails
Tasks
• Built in tasks
   – About 45 built in tasks
   – Complete List
     http://msdn.microsoft.com/en-us/library/7z253716.aspx

• Custom tasks projects
   – SDC (over 300 tasks!)
     http://www.codeplex.com/sdctasks
   – Community Tasks (about 50 tasks)
     http://msbuildtasks.tigris.org/
   – Team Deploy (Dedicated to Deployments)
     http://www.codeplex.com/teamdeploy
Creating a custom task
• Microsoft.Build.Framework.ITask
• Microsoft.Build.Utilities.Task base class
     public override bool Execute()
         {
            DoSomething();

             return true;
         }
Creating a custom task (cont)
• Unit Tests – BuildEngine
[TestMethod]
    public void KillProcessExecute()
    {

        Process.Start(quot;notepad.exequot;);
        KillProcess task = new KillProcess();

        task.BuildEngine = new MockBuild();
        task.ProcessName = quot;notepad.exequot;;
        task.KillAppPathFilename = quot;c:pstoolspskill.exequot;;
        task.TargetMachine = Environment.MachineName;

        Assert.IsTrue(task.Execute(), quot;Execute Failedquot;);

    }
Create a custom task
• Demo
Team Deploy
• Today is the launch of 1.0.0!
• 273 Downloads!
• Set of Custom Tasks
  – Deploying MSIs
  – Controlling Devices like Lava Lamps and Street
    Lights
• DeviceController Application
• Guidance Document
Team Deploy Features
• Parallel MSI Deployments
• Unit Tests
• Code Analysis = Green
• No unknown programs need to run on target
  machines
• Utilizes strength and trust of PS Tools.
Team Deploy Architecture
Team Deploy Tasks
Task Name          Description
Install            Installs a MSI to a target machine
Uninstall          Uninstalls MSI on target machine by product code
KillProcess        Kills a process on a target machine
StartService       Starts are windows service
StopService        Stops a windows service (usually before uninstalling)
DeviceController   Use lava lamps or street lights to display status of builds
Deploy             Primary Task – Reads Deployment Script. The script contains the
                   list of target machines, MSIs to install, any kill processes, and
                   uninstalls.
Device Controller
• Calls the x10Communicator.exe (part of Team
  Deploy) to turn on and off devices
• StartTime and StopTime so device doesn’t
  turn on at night
• Device state is stored in Isolated Storage
• Start and Shutdown arguments to turn all
  devices either on or off.
Device Controller Parts
• X10 Firecracker
Team Deploy Demo
• Street Light Demo
Links
•   X10 Firecracker
•   SysInternals PSExec
•   http://www.CodePlex.com/TeamDeploy
•   http://www.CodeSmartNotHard.com
•   http://www.tfsbuild.com

Mais conteúdo relacionado

Destaque

TFS Build - Continuous Integration
TFS Build - Continuous IntegrationTFS Build - Continuous Integration
TFS Build - Continuous IntegrationEsteban Garcia
 
[Curitiba DEV DAY] - Novidades do TFS 2015
[Curitiba DEV DAY] -  Novidades do TFS 2015[Curitiba DEV DAY] -  Novidades do TFS 2015
[Curitiba DEV DAY] - Novidades do TFS 2015Leandro Prado
 
Introduction to Team Foundation Server (TFS) Online
Introduction to Team Foundation Server (TFS) OnlineIntroduction to Team Foundation Server (TFS) Online
Introduction to Team Foundation Server (TFS) OnlineDenis Voituron
 
Power shell desired state configuration for Devops and ALM practitioners
Power shell desired state configuration for Devops and ALM practitionersPower shell desired state configuration for Devops and ALM practitioners
Power shell desired state configuration for Devops and ALM practitionersWilly Marroquin (WillyDevNET)
 
Integrated Proposal (Vsts Sps Tfs) - MS stack
Integrated Proposal   (Vsts Sps Tfs) - MS stackIntegrated Proposal   (Vsts Sps Tfs) - MS stack
Integrated Proposal (Vsts Sps Tfs) - MS stackBijoy Viswanadhan
 
What's new in ALM using Visual Studio 2013 and TFS 2013
What's new in ALM using Visual Studio 2013 and TFS 2013What's new in ALM using Visual Studio 2013 and TFS 2013
What's new in ALM using Visual Studio 2013 and TFS 2013Microsoft Visual Studio
 
Alm with tfs 2013
Alm with tfs 2013Alm with tfs 2013
Alm with tfs 2013MSDEVMTL
 
TFS 2015 Upgrade Tips & Tricks
TFS 2015 Upgrade Tips & TricksTFS 2015 Upgrade Tips & Tricks
TFS 2015 Upgrade Tips & TricksInCycleSoftware
 
Visual Studio Code 拡張の勘所
Visual Studio Code 拡張の勘所Visual Studio Code 拡張の勘所
Visual Studio Code 拡張の勘所Masaki Takeda
 
Install, configure and customize TFS 2013
Install, configure and customize TFS 2013Install, configure and customize TFS 2013
Install, configure and customize TFS 2013Davide Benvegnù
 
Release management with TFS 2013
Release management with TFS 2013Release management with TFS 2013
Release management with TFS 2013Davide Benvegnù
 
Team Foundation Server - Source Control
Team Foundation Server - Source ControlTeam Foundation Server - Source Control
Team Foundation Server - Source ControlDhirendra Singh
 
Team Foundation Server Version Control
Team Foundation Server Version ControlTeam Foundation Server Version Control
Team Foundation Server Version ControlSteve Lange
 
Lean & Agile DevOps with VSTS and TFS 2015
Lean & Agile DevOps with VSTS and TFS 2015Lean & Agile DevOps with VSTS and TFS 2015
Lean & Agile DevOps with VSTS and TFS 2015Clint Edmonson
 
Agile project management with visual studio tfs 2013 - My presentation at Reg...
Agile project management with visual studio tfs 2013 - My presentation at Reg...Agile project management with visual studio tfs 2013 - My presentation at Reg...
Agile project management with visual studio tfs 2013 - My presentation at Reg...Om Prakash Bang
 

Destaque (16)

TFS Build - Continuous Integration
TFS Build - Continuous IntegrationTFS Build - Continuous Integration
TFS Build - Continuous Integration
 
[Curitiba DEV DAY] - Novidades do TFS 2015
[Curitiba DEV DAY] -  Novidades do TFS 2015[Curitiba DEV DAY] -  Novidades do TFS 2015
[Curitiba DEV DAY] - Novidades do TFS 2015
 
Introduction to Team Foundation Server (TFS) Online
Introduction to Team Foundation Server (TFS) OnlineIntroduction to Team Foundation Server (TFS) Online
Introduction to Team Foundation Server (TFS) Online
 
Power shell desired state configuration for Devops and ALM practitioners
Power shell desired state configuration for Devops and ALM practitionersPower shell desired state configuration for Devops and ALM practitioners
Power shell desired state configuration for Devops and ALM practitioners
 
Integrated Proposal (Vsts Sps Tfs) - MS stack
Integrated Proposal   (Vsts Sps Tfs) - MS stackIntegrated Proposal   (Vsts Sps Tfs) - MS stack
Integrated Proposal (Vsts Sps Tfs) - MS stack
 
CI with TFS
CI with TFSCI with TFS
CI with TFS
 
What's new in ALM using Visual Studio 2013 and TFS 2013
What's new in ALM using Visual Studio 2013 and TFS 2013What's new in ALM using Visual Studio 2013 and TFS 2013
What's new in ALM using Visual Studio 2013 and TFS 2013
 
Alm with tfs 2013
Alm with tfs 2013Alm with tfs 2013
Alm with tfs 2013
 
TFS 2015 Upgrade Tips & Tricks
TFS 2015 Upgrade Tips & TricksTFS 2015 Upgrade Tips & Tricks
TFS 2015 Upgrade Tips & Tricks
 
Visual Studio Code 拡張の勘所
Visual Studio Code 拡張の勘所Visual Studio Code 拡張の勘所
Visual Studio Code 拡張の勘所
 
Install, configure and customize TFS 2013
Install, configure and customize TFS 2013Install, configure and customize TFS 2013
Install, configure and customize TFS 2013
 
Release management with TFS 2013
Release management with TFS 2013Release management with TFS 2013
Release management with TFS 2013
 
Team Foundation Server - Source Control
Team Foundation Server - Source ControlTeam Foundation Server - Source Control
Team Foundation Server - Source Control
 
Team Foundation Server Version Control
Team Foundation Server Version ControlTeam Foundation Server Version Control
Team Foundation Server Version Control
 
Lean & Agile DevOps with VSTS and TFS 2015
Lean & Agile DevOps with VSTS and TFS 2015Lean & Agile DevOps with VSTS and TFS 2015
Lean & Agile DevOps with VSTS and TFS 2015
 
Agile project management with visual studio tfs 2013 - My presentation at Reg...
Agile project management with visual studio tfs 2013 - My presentation at Reg...Agile project management with visual studio tfs 2013 - My presentation at Reg...
Agile project management with visual studio tfs 2013 - My presentation at Reg...
 

Último

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Último (20)

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Team Foundation Server Build Automation

  • 1. Team Foundation Server Build Automation Give me a Light, Build Light Mike Douglas mike@doitconsultants.com www.CodeSmartNotHard.com www.CodePlex.com/TeamDeploy
  • 2. About Me • Current Lead Developer / Analyst at Farm Credit Services of America • Wide variety background in .NET – Web Services, Remoting, WCF, WinForms, ASP.NET, Biztalk, TFS, CSLA.NET, Code Generation • Frameworks, Code Generation, and Agile Blog – www.CodeSmartNotHard.com • Open Source Project for TFS Builds – www.CodePlex.com/TeamDeploy • 3rd .NET User Group Presentation
  • 3. Agenda • Build Automation – more than just build • Creating a build • What’s in a build – Proj, Targets, and Tasks • Creating a Custom Task • Team Deploy
  • 4. Build Automation • Should be part of a good configuration management process • Our Goal – Deploy same MSI to test as production – Separate Environments • Development, Test, Staging, Production – Continuous and “Build and Deploy” Builds – Admin Install MSIs – ConfigFiles folder for multiple environments
  • 7. What is in a build? • TFSBuild.proj – XML for TeamBuild • Targets – “Events” of the build, Before/After are overrideable for custom functionality. • Tasks – built in or custom actions that perform a set piece of functionality. Quick Demo
  • 8. Build Targets End to End Iteration Clean Get Source Build Break Build Error Label Compile Run Tests Drop Build Files
  • 9. Targets • Commonly used ones Target Name Description BeforeEndtoEndIteration Runs tasks before EndToEndIteration target. Use this to run something before the build starts. Example: Turn street light yellow. AfterEndtoEndIteration Runs tasks after EndToEndIteration target. Use this to run something after the build successfully completes. Example: Copy Binaries and Config Files to MSI, Deploy MSI, Turn on Green Street Light BeforeTest Called before tests are run. Example: Update or Prepare database or spreadsheet for Unit Tests AfterOnBuildBreak Called after a work item is created when a build fails Example: Turn on Red Street Light
  • 10. Other Overridable Targets Target Name Description BuildNumberOverrideTarget Used to override a target to customize a build number. The task you write must create an ouptut property called BuildNumber BeforeClean Called before clean is tried. Insert your task into this target to run pre-clean custom target. AfterClean Called after clean is completed. BeforeGet Called before sources are retrieved from source control AfterGet Called after sources are retrieved BeforeLabel Called before sources are labeled. AfterLabel Called after labeling is completed. BeforeCompile Called before compilation is completed. AfterCompile Called after compilation is completed. AfterTest Called after testing is completed. BeforeDropBuild Called before saving the built binaries, build log files and test results to the build- drop directory. AfterDropBuild Called after dropping the built binaries, build log files and test results to the build-drop directory. BeforeOnBuildBreak Called before creating a work item on the build that fails
  • 11. Tasks • Built in tasks – About 45 built in tasks – Complete List http://msdn.microsoft.com/en-us/library/7z253716.aspx • Custom tasks projects – SDC (over 300 tasks!) http://www.codeplex.com/sdctasks – Community Tasks (about 50 tasks) http://msbuildtasks.tigris.org/ – Team Deploy (Dedicated to Deployments) http://www.codeplex.com/teamdeploy
  • 12. Creating a custom task • Microsoft.Build.Framework.ITask • Microsoft.Build.Utilities.Task base class public override bool Execute() { DoSomething(); return true; }
  • 13. Creating a custom task (cont) • Unit Tests – BuildEngine [TestMethod] public void KillProcessExecute() { Process.Start(quot;notepad.exequot;); KillProcess task = new KillProcess(); task.BuildEngine = new MockBuild(); task.ProcessName = quot;notepad.exequot;; task.KillAppPathFilename = quot;c:pstoolspskill.exequot;; task.TargetMachine = Environment.MachineName; Assert.IsTrue(task.Execute(), quot;Execute Failedquot;); }
  • 14. Create a custom task • Demo
  • 15. Team Deploy • Today is the launch of 1.0.0! • 273 Downloads! • Set of Custom Tasks – Deploying MSIs – Controlling Devices like Lava Lamps and Street Lights • DeviceController Application • Guidance Document
  • 16. Team Deploy Features • Parallel MSI Deployments • Unit Tests • Code Analysis = Green • No unknown programs need to run on target machines • Utilizes strength and trust of PS Tools.
  • 18. Team Deploy Tasks Task Name Description Install Installs a MSI to a target machine Uninstall Uninstalls MSI on target machine by product code KillProcess Kills a process on a target machine StartService Starts are windows service StopService Stops a windows service (usually before uninstalling) DeviceController Use lava lamps or street lights to display status of builds Deploy Primary Task – Reads Deployment Script. The script contains the list of target machines, MSIs to install, any kill processes, and uninstalls.
  • 19. Device Controller • Calls the x10Communicator.exe (part of Team Deploy) to turn on and off devices • StartTime and StopTime so device doesn’t turn on at night • Device state is stored in Isolated Storage • Start and Shutdown arguments to turn all devices either on or off.
  • 20. Device Controller Parts • X10 Firecracker
  • 21. Team Deploy Demo • Street Light Demo
  • 22. Links • X10 Firecracker • SysInternals PSExec • http://www.CodePlex.com/TeamDeploy • http://www.CodeSmartNotHard.com • http://www.tfsbuild.com