builds with a side of cake - codestock 2016

15
Builds with a side of Jamie Phillips Web: http://phillipsj.net Twitter: @phillipsj73 Github: phillipsj

Upload: jamie-phillips

Post on 15-Apr-2017

314 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Builds with a side of Cake - CodeStock 2016

Builds with a side ofJamie Phillips Web: http://phillipsj.netTwitter: @phillipsj73Github: phillipsj

Page 2: Builds with a side of Cake - CodeStock 2016

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/

Page 3: Builds with a side of Cake - CodeStock 2016
Page 4: Builds with a side of Cake - CodeStock 2016

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>

Page 5: Builds with a side of Cake - CodeStock 2016

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

Page 6: Builds with a side of Cake - CodeStock 2016

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"

Page 7: Builds with a side of Cake - CodeStock 2016

CAKE

var target = Argument("target", "Default");

Task("Default").Does(() =>

{ Information("Hello World!");

});

RunTarget(target);

Page 8: Builds with a side of Cake - CodeStock 2016

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

Page 9: Builds with a side of Cake - CodeStock 2016

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

Page 10: Builds with a side of Cake - CodeStock 2016

TOOLS

Chocolatey GitVersionMSTest NSIS NuGetDNUDotCoverMSBuild Fixie

GitReleaseNotesGitTools

NUnit ILMergeOctopus DeployOpenCoverRoundhouse

GitReleaseManager

SignTool WiXXBuild

TextTransformxUnitReportGeneratorDupFinder

InspectCodeSpecFlowGitLink

plist

SwaggerReSharper

Squirrel*

Vagrant

WyamVsce

XamarinXCode

YAMLXdtTransform*

PowershellTopShelfStrongNameToolWebDeploy

Unity

MagicChunks

IIS

Orchard*

Page 11: Builds with a side of Cake - CodeStock 2016

SOMETHING MISSING?

Page 12: Builds with a side of Cake - CodeStock 2016

HOW DO YOU US IT?

• Web Apps• Desktop Apps• Libraries• Electron Apps

Page 13: Builds with a side of Cake - CodeStock 2016

EXAMPLES

Page 14: Builds with a side of Cake - CodeStock 2016

SOME OF OUR PLUGINS

• Cake.XdtTransform• Cake.Orchard• Cake.Squirrel• Cake.AzureStorage

Page 15: Builds with a side of Cake - CodeStock 2016

QUESTIONS