Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CAKE - Buildscript für C# Entwickler

CAKE - Buildscript für C# Entwickler

CAKE (C# Make) ist ein Build-Skript DSL, die in C# geschrieben ist und somit von jedem C# Entwickler verstanden wird.

Eugen Richter

February 13, 2018
Tweet

Other Decks in Programming

Transcript

  1. WebDucer 13.02.18 3 Warum Scripte? • Skripte? Was ist mit

    TFS? – Build-Definition in VCS sichern (zusammen mit passenden Code) – Gleicher Build auf CI-Server und lokal – Einfacher Wechsel des CI-Servers (zum Beispiel von TFS zu Gitlab CI)
  2. WebDucer 13.02.18 4 Mögliche Kandidaten • FAKE - F# Make

    • PSake - PowerShell Make • MSBuild • NAnt • Rake - Ruby Make
  3. WebDucer 13.02.18 5 Warum CAKE (C# Make)? • C# als

    Sprache (jeder C# Entwickler kann den Skript lesen und anpassen) • Viele .Net-bezogene Erweiterungen vorhanden • Eigene Erweiterung (in .Net) möglich • Lauffähig unter Windows, macOS, Linux (.Net Core / Mono kompatibel) • Tools / Erweiterungen über NuGet
  4. WebDucer 13.02.18 6 Löschen von Build-Ordnern // // Cleanup all

    folders relevant for build // Task("_cleanup") .Does(() => { CleanDirectories("./**/obj"); CleanDirectories("./**/bin"); });
  5. WebDucer 13.02.18 7 Wiederherstellen der NuGet Packages // // Restore

    all NuGet packages for solution // Task("_restore") .Does(() => { var solutionName = "RECY.sln"; NuGetRestore(solutionName); });
  6. WebDucer 13.02.18 8 Erstellen von Solutions / Projekten // //

    Build unit tests // Task("_buildSolutions") .Does(() => { var solutionFiles = GetFiles("./**/*.sln"); var outputPath = MakeAbsolute("./GlobalBuildOutput"); foreach(var solution in solutionFiles){ MSBuild(solution, buildSettings => { buildSettings .SetConfiguration("Release") .WithTarget("Build") .WithProperty("OutputPath", pathEscape(outputPath)); }); } });
  7. WebDucer 13.02.18 9 Abhängigkeiten von Schritten definieren // // Execute

    only unit tests // Task("Test") .IsDependentOn("_cleanup") .IsDependentOn("_restore") .IsDependentOn("_buildTests") .IsDependentOn("_runTests");
  8. WebDucer 13.02.18 10 Addons / Tools einbinden // Tools #tool

    "nuget:?package=NUnit.ConsoleRunner&version=3.7.0" // Addins #addin "nuget:?package=Cake.HockeyApp&version=0.7.1"
  9. WebDucer 13.02.18 11 Ausführen des Scriptes // Windows PS> build.ps1

    -target "Test" // macOS / Linux $ ./build.sh --target="Test"