FinalBuilder 3 bekeken
Een paar weken geleden werkte ik aan een opdracht voor het maken van een ASP.NET applicatie. De ontwikkelstraat bij de klant bestond uit drie servers: twee om te testen en een voor productie. Daarnaast had ik nog een eigen server, waarop ik buiten mijn ontwikkelmachine test.
De klant wilde tussentijd mijn progressie kunnen zien en na het uitleveren van de basisversie kwam er nog een aantal uitbreidingen.
Toen ik zo vaak moest deployen op zoveel verschillende servers, kreeg ik al snel de behoefte om het hele proces te automatiseren. Het is nu eenmaal niet handig als je elke keer in een bepaalde volgorde moet uitchecken, builden, obfuscaten, controleren of zaken in de GAC staan, kijken of ASP.NET nog wel goed draait onder ISS, FTP’en in de juiste directories, etc.
En zeker aan het einde van een werkdag wil er nog wel eens wat vergeten worden. Op deze wijze is het risico dat de klant bij het opstarten van de applicatie al allerlei fouten krijgt te zien aanzienlijk, en dat draagt niet bij aan het vertrouwen.
FinalBuilder is een automated build en release management tool, die het makkelijk maakt om het complete build proces te definiëren, onderhouden en herhalen
Een batchfile zou een oplossing kunnen zijn. Alleen kost dat veel tijd en is het erg foutgevoelig. Van elke stap in het buildproces zou ik de commandline versie van de desbetreffende tools aan moeten roepen met de juiste parameters, en die ik moet uitzoeken.
Daarnaast is een batchfile moeilijk te debuggen, kan ik fouten niet netjes afvangen en wordt er standaard geen log bijgehouden.
Met FinalBuilder kan dit soort dingen echter wel, en nog veel meer. FinalBuilder is een automated build en release management tool, die het makkelijk maakt om het complete build proces te definieren, onderhouden en herhalen.
Actions
FinalBuilder heeft een uitgebreide lijst van actions. Een action is een bepaalde taak die je uitvoert tijdens het builden. Het zijn wrappers rond bestaande applicaties, ze sturen een applicatie aan via de commandline of COM interface.
De plugin interface is beschikbaar voor de community, zodat je zelf ook actions kunt maken of extra actions kunt downloaden die niet standaard bijgeleverd zijn.
De vele actions staan in categorieën op het scherm. Ze ondersteunen het deployment proces van begin tot einde.
Bijna alle Version Control Systems worden ondersteund.

Voor het builden van project(en) zijn de compilers ook beschikbaar in een handige action-vorm.

Voor het uiteindelijke uitleveren zijn er de categorieën internet en CD/DVD burning (voor de laatste: alleen in de Pro-versie). Daarnaast worden bijna alle installbuilders ondersteund.

En er valt nog veel meer te doen. Allerlei compressieformaten worden ondersteund, er kan een vraag gesteld worden en aan de hand van het antwoord kunnen verschillende acties worden uitgevoerd.
SQL server en ADO worden direct ondersteund om database checks en wijzigingen door te voeren (alleen in de Pro-versie). XML files kunnen worden gelezen en gemanipuleerd en er worden helpfile generatoren en testtools ondersteund (alleen in de Pro-versie) En registry/inifile settings kunnen worden uitgelezen, en ook weggeschreven.
Voor .NET zijn er onder meer wrappers rond GACUTIL, SN, TLPIMP, REGASM en worden er verschillende obfuscators ondersteund. Ook handig is de action: “Run ASPNET_REGIIS.EXE”.
De actions kunnen vanuit de Action categorieën naar een visueel actionscript gesleept worden. Als je dit doet, verschijnt er een dialoog, waarop je meerdere tabbladen hebt. Het eerste tabblad, genaamd properties, bevat instellingen die iedere action heeft. En daarop volgende tabbladen bevatten specifieke zaken voor deze action.

Er is ook een action inspector, die de eigenschappen laat zien van de geselecteerde actie en die laat wijzigen.

Om de overzichtelijkheid te bewaren kunnen de actions in actiongroups gegroepeerd worden. Deze actiongroups kan je conditioneel uitvoeren (zie hieronder) en alle actions die erin staan kunnen in een keer aan- of uitgezet worden.

Er bestaat een handige validate actions functie, waarmee je alle acties kunt valideren. Onder meer wordt er gekeken of alle directory- en file-referenties geldig zijn.
Een variabele kun je eenvoudig een waarde geven door middel van de “set variable” action
Variabelen
Variabelen worden ook ondersteund. Een variabele kun je eenvoudig een waarde geven door middel van de “set variable” action, maar je kunt variabelen ook uitlezen uit de registry of ini-files en veel actions ondersteunen ook variabelen.

Variabelen worden ook ondersteund in actions. In een veld van een action kan je %VariabeleNaam% gebruiken.

Vervolgens kunnen aan de hand van de waardes van variabelen in het script beslissingen worden genomen.
Variabelen kunnen in 1 keer gelezen/ weggeschreven worden van/naar een ini file.
Herkenbare structuren
Er worden voor ontwikkelaars herkenbare structuren gebruikt zoals try-catch, try-finally, if-then-else, while en switch/case. Ook kan je een exception raisen/throwen.
Elke action heeft 3 events: BeforeAction, AfterAction en OnStatusMessage. Deze events kunnen door middel van VBScript of JavaScript geprogrammeerd worden. In het script kunnen variabelen gebruikt worden waaraan eerder een waarde is gegeven.

Ook debugging wordt ondersteund met breakpoints en watches.
Scheduler
Met de scheduler kun je automatisch buildscripts uitvoeren. Hiervoor wordt de Windows scheduler gebruikt. Zo worden dagelijkse builds een fluitje van een cent.

Van de build kun je live het log volgen of deze later bekijken.

Conclusie
FinalBuilder is een complete oplossing voor het automatiseren van het build-proces. Finalbuilder bespaart veel tijd in vergelijking met het handmatig builden en het builden met een batchfile. De debug-technieken zijn onmisbaar als je met een complex buildp-roces te maken hebt. Het werken met variabelen maken een flexibel build-proces mogelijk, zodat er slechts een script nodig is om bijvoorbeeld op een test en productieserver uit te leveren.