SlideShare a Scribd company logo
Improving the SharePoint
Development Process with
Continuous Integration
Robert Hiskey
SPS NJ 2014
About Me
Portals & Collaboration Consultant
@ Slalom Consulting
Web Developer
Working with SharePoint since
2008
User Experience and Project
Management @HollywoodHiskey
http://www.linkedin.com/in/roberthiskey
robert.hiskey@slalom.com
Improving the SharePoint Development Process with Continuous Integration
Agenda
Overview of Continuous Integration (CI)
Foundations of CI
CI Process Components
Project Setup
Build Configuration
Unit Testing
Demo
Continuous Integration
What is it, why use it, and when is it most effective?
What is Continuous Integration?
A complete process that includes:
Task management
Source control
Unit testing
Automated builds
Automated deployments
Stable test environments
Reporting/communication
What are the benefits?
Organization/prioritization of work
Increased development efficiency
Improved quality
Reduced overhead
More frequent test cycles
Trusted test results
When can CI be leveraged?
On any development project (at least partially)
Indicators that you should be using a CI process:
Multiple developers
Medium/Long-term projects
Frequent QA/UAT builds
Complex codebases
CI Foundations
Task management, source control, and deployment
scheduling.
Task Management
Implementing other aspects of CI without a good system for managing work might
only make things worse!
Important to know:
What changes were included in the latest build?
Which new features were included in the last deployment?
What (and who) caused the build to fail?!
Best Practice: Every check-in should be associated with a clear, granular item/task.
Source Control
When part of a CI process, source control is more than just a code repository
Design and configure the source control system to match the needs of each project
Branches and labels
File locking
Check-in process
Build triggers are set for individual branches
Best Practice: Each branch should represent a release (not a server!)
Deployment Scheduling
Frequent deployments are essential to the CI process, but it’s possible to be too agile
Multiple factors help determine the ideal schedule:
Number of test environments
Sprint duration
Testing process and duration
Best Practice: “True” CI for Integration environments, regularly scheduled deployments
for Staging environments.
CI Components
Implementing a CI process from scratch.
Project Setup
Create a team project
Explanation of Process Templates
Add work items and tasks
Open project in Visual Studio
Build Configuration
Start from the Builds tab in Team Explorer view
Create a new build definition!
Trigger (Build Triggers Explained)
Build Controller
Process
Best Practice: Make build outcome dependent on unit tests.
Unit Testing
Unit testing of .NET code is straightforward, out of the box
JavaScript unit testing can also be integrated with a build using additional tools
Qunit – JavaScript unit testing framework
Chutzpah – JavaScript test runner with Visual Studio extension
Integrating Chutzpah with TFS
Automated Deployment
Configure a build definition to execute a command upon successful completion
PowerShell!
SharePoint 2010 with Windows PowerShell Remoting Step by Step
What about SharePoint Online?
 SharePoint Online Management Shell
 Client-side SharePoint PowerShell
Complexity of automation varies by solution
Simple WSP deployment, or do specific features need to be activated?
Should the same deployment steps occur every time?
For some projects, automated builds (without deployment) may be enough
Thank you!
Please submit a speaker evaluation (forms at front).
Let’s talk at SharePint!
Harvest Moon Brewery
392 George Street
New Brunswick, NJ 08901
Twitter: @HollywoodHiskey
E-mail: robert.hiskey@slalom.com

More Related Content

Improving the SharePoint Development Process with Continuous Integration

  • 1. Improving the SharePoint Development Process with Continuous Integration Robert Hiskey SPS NJ 2014
  • 2. About Me Portals & Collaboration Consultant @ Slalom Consulting Web Developer Working with SharePoint since 2008 User Experience and Project Management @HollywoodHiskey http://www.linkedin.com/in/roberthiskey robert.hiskey@slalom.com
  • 4. Agenda Overview of Continuous Integration (CI) Foundations of CI CI Process Components Project Setup Build Configuration Unit Testing Demo
  • 5. Continuous Integration What is it, why use it, and when is it most effective?
  • 6. What is Continuous Integration? A complete process that includes: Task management Source control Unit testing Automated builds Automated deployments Stable test environments Reporting/communication
  • 7. What are the benefits? Organization/prioritization of work Increased development efficiency Improved quality Reduced overhead More frequent test cycles Trusted test results
  • 8. When can CI be leveraged? On any development project (at least partially) Indicators that you should be using a CI process: Multiple developers Medium/Long-term projects Frequent QA/UAT builds Complex codebases
  • 9. CI Foundations Task management, source control, and deployment scheduling.
  • 10. Task Management Implementing other aspects of CI without a good system for managing work might only make things worse! Important to know: What changes were included in the latest build? Which new features were included in the last deployment? What (and who) caused the build to fail?! Best Practice: Every check-in should be associated with a clear, granular item/task.
  • 11. Source Control When part of a CI process, source control is more than just a code repository Design and configure the source control system to match the needs of each project Branches and labels File locking Check-in process Build triggers are set for individual branches Best Practice: Each branch should represent a release (not a server!)
  • 12. Deployment Scheduling Frequent deployments are essential to the CI process, but it’s possible to be too agile Multiple factors help determine the ideal schedule: Number of test environments Sprint duration Testing process and duration Best Practice: “True” CI for Integration environments, regularly scheduled deployments for Staging environments.
  • 13. CI Components Implementing a CI process from scratch.
  • 14. Project Setup Create a team project Explanation of Process Templates Add work items and tasks Open project in Visual Studio
  • 15. Build Configuration Start from the Builds tab in Team Explorer view Create a new build definition! Trigger (Build Triggers Explained) Build Controller Process Best Practice: Make build outcome dependent on unit tests.
  • 16. Unit Testing Unit testing of .NET code is straightforward, out of the box JavaScript unit testing can also be integrated with a build using additional tools Qunit – JavaScript unit testing framework Chutzpah – JavaScript test runner with Visual Studio extension Integrating Chutzpah with TFS
  • 17. Automated Deployment Configure a build definition to execute a command upon successful completion PowerShell! SharePoint 2010 with Windows PowerShell Remoting Step by Step What about SharePoint Online?  SharePoint Online Management Shell  Client-side SharePoint PowerShell Complexity of automation varies by solution Simple WSP deployment, or do specific features need to be activated? Should the same deployment steps occur every time? For some projects, automated builds (without deployment) may be enough
  • 18. Thank you! Please submit a speaker evaluation (forms at front). Let’s talk at SharePint! Harvest Moon Brewery 392 George Street New Brunswick, NJ 08901 Twitter: @HollywoodHiskey E-mail: robert.hiskey@slalom.com