every single item, not for batches (such as sprint) • To focus on quick feedback • Automate repeatable tasks • To look for places where little human work is not happening or value is added
complexity) • Build is for giving feedback about your stuff • Deployment is… complicated stuff • Build should happen repeatedly on a clean computer(1) • Once both are quick (<1 minute), consider combining
for slow builds • Source Repo is for Source, removing all heavy, big dependencies • Use popular package management tools: NuGet, Bower, CocoaPods, etc • And let is do the caching, not your CI tool • Demand your vendor to deliver packages in the right format!
an intimate relation with your if-statements • Rewriting same functionality usually quicker than editing (and more fun) • Keep your projects(VS, Eclipse, etc) small, tidy and to the point • Use a distributed SCM (Git, Mercurial, BitKeeper) • Use 1 repository per component / project • And yes, now architecture becomes subordinate of the project goal… • Script your boilerplate work, such as project and build creation • For Reusability or ‘generic components’ use the chosen dependency framework
to 1 action per step so feedback is distinct • Use Gated CI if your build tooling supports this • Consider what sort of feedback you want: • Immediate: Code Analyzers (IDE, Runtime) • Instant: Compile & Unit Test (Check-in Build) • Trend-like / Daily: Static Analysis, Breaking changes
code once • Create packages for integrating components into the large solution • Separate (integration) test components from the real components • Consider Canary Build principles for picking up new releases • Popular package frameworks allow annotations such as 'prerelease'
engine is heavy and puts on all sorts of dependencies • Federated Experience Manager does support 80% of the Marketing features • Item Web API for Content (who uses inline editing anyway ;-)) • Generally the industry moves to Browser based & JavaScript • One-page websites • SDL & Adobe dropped their Render Engine support • Remember Google Analytics & Google Webmaster tools? All JavaScript… • Enough alternatives which can run on cheap hosting (NancyFx, ASPNETv5)
feature Create Pull Request Build is kicked off Merge Check Green lights? Merge to Master & Close Pull Request Build of Master triggered Push to NuGet Artifact Server with prerelease flag Deployment Pipeline Triggered
Docker are a very good way to isolate your application • Quick setup for integration runs (clean MongoDB boots in seconds) • Reduces hardware needs heavily • Note: Sitecore support will come available over time with Docker containers on Windows Core 2016. You just won't find IIS support there.
misused as CD tools • Focus of Octopus, GoCD is on release & scaling • Ability to define manual steps, which you can automate later • PowerShell and Bash scale better than your custom C# console app
not have anything installed • How clean the server is, there might be unexpected left-overs • Don't assume anything: • Always check if ALL prerequisites are available • Always clean folders, files, log queues, etc, before you start any I/O operation