10 juli 2019

TECHNISCH ARTIKEL: CAKE BUILD SYSTEM

Cake (C# Make) is een automation-tool die gebruikmaakt van de C# -taal voor het maken van taken. Onder andere voor het compileren van code, het kopiëren van bestanden en mappen, het uitvoeren van unit tests, het comprimeren van bestanden en het bouwen van NuGet-pakketten voor .NET en .NET Core applicaties.

Het doel

Continuous Integration (CI) is een zeer belangrijk onderdeel voor het leveren van kwaliteitssoftware. CI houdt in dat alle ontwikkelaars in een team hun wijzigingen gedurende de hele ontwikkelingscyclus samenvoegen naar een centrale plaats. Terwijl ontwikkelaars code blijven samenvoegen met de hoofdtak, wordt verwacht dat elke samenvoeging een geautomatiseerde build genereert. Die wordt uitgevoerd nadat alle geautomatiseerde tests zijn uitgevoerd. Het idee achter Continuous Integration is ervoor te zorgen dat ontwikkelaars de geteste code met vertrouwen kunnen implementeren. In essentie betekend dit dat met behulp van geautomatiseerde tests eventuele regressiefouten eerder in de ontwikkelingscyclus worden ontdekt. Het gewenste resultaat is dat iedereen in het team met voldoende rechten om een nieuwe release te implementeren en op elk gewenst moment. Om dit te bereiken, moet het team streven naar het elimineren van de meeste handmatige taken, waardoor ontwikkelaars productiever worden.

Waarom Cake gebruiken?

Integratie met tools voor bouwen en implementatie.

  • Verhoogt de teamproductiviteit.
  • Gebruikt dezelfde taal (C#) en gebruik maken van platform om scripts te schrijven.
  • Integreert goed met CI-servers en vermindert de complexiteit.
  • Werkt volledig op .NET Framework en .NET Core.
  • Bouwt bovenop Roslyn en Mono.
  • Gebruikt een Dependency Based Model.
  • Cross-platform.
  • Gedetailleerde documentatie cakebuild.net/docs

  • Dependency-tracking Model

    Taken in een bouwproces moeten in een specifieke volgorde plaatsvinden. In plaats van een script met sequentiële taken te schrijven, definieer je afhankelijkheden. Taak C hangt bijvoorbeeld af van taak B, die op zijn beurt afhankelijk is van taak A. Door het model "Dependency Based Programming" te volgen, kun je een taak kiezen. Het script is in staat zijn om de volgende stappen te achterhalen.

    Volgens de Cake-documentatie heb je alleen de volgende drie bestanden nodig:
    1. build.ps1 and build.sh (bootstrapper bestanden)
    2. build.cake (script)
    3. tools/packages.config (configuratie bestanden)

    Conclusies


    Problemen ontstaan wanneer ontwikkelaars aangepaste stappen in de CI / CD-tool overmatig cake gebruiken in plaats van een build-script. TeamCity maakt het erg handig om meerdere stappen samen te stellen, parameters door te geven en build-sjablonen te maken. Gegeven voldoende tijd en complexiteit, kunnen deze stappen een niet te testen "programma" worden dat alleen wordt uitgevoerd wanneer de software wordt gebouwd en geïmplementeerd.

    Er zijn een hoop ingebouwde taken en de Cake-documentatie is echt goed. Het verwijderen van de build-stappen uit het build-systeem en het veranderen in code heeft twee belangrijke voordelen:
    1. Overal bouwen: als je eenmaal een build-script hebt, zou je het overal moeten kunnen uitvoeren en bouwen. U vertrouwt niet langer op de build-server en zijn build-stappen die specifiek zijn voor dat build-systeem.
    2. Bronbeheer: aangezien uw build nu in code is, kan deze naast uw toepassing in bronbeheer worden gebruikt. Dit betekent dat als je de bron hebt, je het build-script hebt.

    Meer weten over het toepassen van
    Cake? Contacteer ronald@netrom.nl
    of bel naar +31 (0)76 542 0740.