Team Foundation Server Build Automation

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Team Foundation Server Build Automation - Presentation Transcript

    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
    5. ConfigFiles folder
    6. Creating a Build • Demo
    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(\"notepad.exe\"); KillProcess task = new KillProcess(); task.BuildEngine = new MockBuild(); task.ProcessName = \"notepad.exe\"; task.KillAppPathFilename = \"c:\\\\pstools\\\\pskill.exe\"; task.TargetMachine = Environment.MachineName; Assert.IsTrue(task.Execute(), \"Execute Failed\"); }
    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.
    17. Team Deploy Architecture
    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

    + mikedouglasmikedouglas, 7 months ago

    custom

    1525 views, 0 favs, 0 embeds more stats

    Extend the functionality of Team Build creating cus more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1525
      • 1525 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 17
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories