ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
Build Tools vs CI Servers Comparison
1. Builds with a
side of
Jamie Phillips
Web: http://phillipsj.net
Twitter: @phillipsj73
Github: phillipsj
2. BUILD TOOLS VS CI SERVERS
• Build runs the same regardless of CI server used. Can easily port your
build from TeamCity to Jenkins.
• Builds run the same locally as they do on the CI server
• Part of source control
• Separation of Concerns --
https://lostechies.com/derekgreer/2016/02/28/separation-of-concerns-
application-builds-continuous-integration/
3.
4. MSBUILD
<Project DefaultTargets="Compile“ xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name = "Compile">
<!-- Run the Visual C# compilation using input files of type CSFile -->
<CSC Sources = "@(CSFile)“ OutputAssembly = "$(appname).exe">
<!-- Set the OutputAssembly attribute of the CSC task to the name of the executable file that is
created -->
<Output TaskParameter = "OutputAssembly“ ItemName = "EXEFile" />
</CSC>
<!-- Log the file name of the output file -->
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
5. ALBACORE
require 'albacore'
require 'albacore/tasks/versionizer' require 'albacore/ext/teamcity'
Albacore::Tasks::Versionizer.new :versioning
desc 'Perform fast build (warn: doesn't d/l deps)'
build :quick_build do |b|
b.logging = 'detailed'
b.sln = 'src/MyProj.sln'
end
6. FAKE
#r "tools/FAKE/tools/FakeLib.dll" // include Fake lib
open Fake
Target "Test" (fun _ ->
trace "Testing stuff..."
)
Target "Deploy" (fun _ ->
trace "Heavy deploy action"
)
"Test" // define the dependencies
==> "Deploy"
Run "Deploy"
8. WHAT IS CAKE?
• Cake (C# Make) is a cross platform build automation system with a C#
DSL to do things like compiling code, copy files/folders, running unit
tests, compress files and build NuGet packages.
• http://cakebuild.net
9. WHY CAKE?
• C#
• Consistent across environments
• Build server agnostic
• Great Plugin System -- Addins
• .NET at your finger tips
• No other runtime dependencies
• Repeatable
• Reduced learning curve
Make the point that we already do so many languages, while it is great to learn another, it could lower the bus factor going with a different language that isn’t used by whole team.
Also allows all devs to participate in build.