Delta-NHandige validaties in Azure Pipelines met Azure DevOps

Het buildproces is meestal de eerste plek waar alle code van verschillende ontwikkelaars geïntegreerd verwerkt wordt. Tijdens het buildproces vinden meestal diverse taken plaats met als einddoel een pakket software dat uitgerold/geïnstalleerd kan worden. Wanneer je in hogere frequentie versies van je software gaat uitleveren, wil je vangnetten inbouwen die ervoor zorgen dat er zo min mogelijk problemen/bugs naar de productieomgeving gaan. Azure DevOps voorziet daarin als het over Azure Pipelines gaat. In dit artikel bespreken we kort een aantal mogelijkheden voor vangnetten die beschikbaar zijn.

UnitTestUnit testen

Het lijkt voor de hand liggend, maar zo vanzelfsprekend zijn Unit Tests niet. Unit Testing is zeer krachtig omdat het snel is en dus voor een korte feedback loop naar de ontwikkelaar zorgt. Daarnaast is het mogelijk in korte tijd veel functionaliteit te testen. Ook kunnen Unit Tests al tijdens het ontwikkelen gedraaid worden, waardoor problemen vlot opgelost kunnen worden. Unit Tests van diverse frameworks (MSTest, XUnit, NUnit etc) kunnen als onderdeel van de automatische build gedraaid worden.

De extensie is standaard onderdeel van Azure DevOps en Azure DevOps Server.

WhiteSource BoltWhiteSource Bolt

WhiteSource Bolt is een tool die twee belangrijke zaken scant: Open Source vulnerabilities en Licenties. Open Source wordt veel gebruikt, denk aan zaken als Angular en React, jQuery, maar ook minder bekende (javascript, .NET etc) libraries. In deze libraries kunnen in verouderde versies vulnerabilities zitten, die in nieuwe versies opgelost zijn. WhiteSource Bolt detecteert deze en rapporteert erover als onderdeel van de Build. Ook licenties kunnen een risico vormen. Denk aan de GPL en AGPL licenties, waarbij het volgende geldt: je mag met de (Open Source) software doen wat je wilt, inclusief aanpassen en verkopen, mits je dat recht ook doorgeeft aan anderen en de auteur(s) van de software vermeldt. Concreet komt het voorgaande erop neer dat als men software die onder de GPL is gepubliceerd wil verspreiden, daar de broncode bij zal moeten worden gevoegd. Deze broncode mag dan weer verder worden verspreid onder de GPL. Iedereen kan ervoor kiezen zijn of haar programma onder de voorwaarden van deze licentie te publiceren (Bron: https://nl.wikipedia.org/wiki/GNU_General_Public_License).
In sommige gevallen kan dit natuurlijk een probleem vormen!

De extensie voor Azure DevOps en Azure DevOps server is hier te vinden: https://marketplace.visualstudio.com/items?itemName=whitesource.ws-bolt. Let wel: dit is een beperkte dienst waarbij er maximaal 5 scans per dag gedraaid kunnen worden. In de betaalde variant (die heet gewoon WhiteSource) is er geen beperking.

Microsoft Security Code AnalysisMicrosoft Security Code Analysis

Security wordt gelukkig door steeds meer bedrijven gezien als iets dat je vanaf de idee- en designfase meeneemt in je softwareproduct. Om daarin te ondersteunen stelt Microsoft de tooling beschikbaar die zij zelf gebruikt bij de bouw van haar eigen producten. Dit is momenteel nog in preview en dus nog niet voor iedereen te gebruiken, maar er is hierover meer te vinden op: https://secdevtools.azurewebsites.net/. Het komt erop neer dat er een aantal scantaken beschikbaar komt, waaronder scanners die kijken naar hardcoded credentials, malware en binaries (Binary static analysis). Wanneer je dit in je Build Pipeline inbouwt, krijg je al vroeg in het proces feedback over mogelijke beveiligingslekken/-problemen.

Smoke testSmoke test

Een smoke test wordt gebruikt om na installatie van een applicatie(landschap) te testen of het in de basis werkt. Voor veel applicaties is het al genoeg om een aantal http(s) calls te doen en te kijken of er een http-status 200 terugkomt. De smoke test taak die in de marketplace beschikbaar is (https://marketplace.visualstudio.com/items?itemName=miguelcruz.vsts-smoke-web-test-task) regelt dit op een hele eenvoudige manier. Het is een zorg minder wanneer de automatische deployment ook automatisch checkt of datgene wat gedeployed is ook daadwerkelijk functioneert.

Code Quality NDependCode Quality NDepend

NDepend voert statische code analyse uit en belangrijker, het controleert de hoeveelheid technical debt. Er worden ook vergelijkingen gemaakt met eerdere versies van de code, waardoor het mogelijk is om te controleren of het verbeterd is of niet. Via een dashboard in Azure DevOps en Azure DevOps Server kunnen deze inzichten bekeken worden. Statische code analyse is een krachtige methode om in een vroeg stadium mogelijke performance bottlenecks, securityleaks of andere problemen te vinden. NDepend heeft daarnaast een plugin voor Visual Studio, waardoor al tijdens het ontwikkelen technical debt al gemeten kan worden. Ze hebben een trial-versie beschikbaar in de marketplace: https://marketplace.visualstudio.com/items?itemName=ndepend.ndependextension. Meer informatie is te vinden op hun website: https://www.ndepend.com.

SonarQubeSonarQube

Een alternatief voor NDepend is SonarQube. Het grote verschil is dat er voor SonarQube een server nodig is. Deze kan in de cloud als SaaS-dienst afgenomen worden of er kan een eigen installatie gebruikt worden. SonarQube kan als gratis pakket afgenomen worden, maar heeft dan een aantal beperkingen (zie: https://www.sonarsource.com/plans-and-pricing/). Er zijn in de marketplace taken beschikbaar (https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) om de SonarQube analyse als onderdeel van de Build uit te voeren. Daarnaast is SonarLint als plugin beschikbaar (https://marketplace.visualstudio.com/items?itemName=SonarSource.SonarLintforVisualStudio2017) voor Visual Studio. Daardoor kan de ontwikkelaar binnen Visual Studio dezelfde static code rules toepassen als tijdens de SonarQube analyse.

Conclusie

Er zijn prachtige tools beschikbaar om meer vangnet in Azure Pipelines te creëren, zonder dat dat heel veel tijd kost. Wil je wat quick wins realiseren in je pipeline? Kijk dan naar deze extensies! Wil je meer weten over Azure Pipelines of één van de andere onderdelen van Azure DevOps? Neem dan vrijblijvend contact met mij op via onderstaand formulier.

Fokko Veegens, DevOps Consultant

Neem contact met mij op

Contactverzoek

  • Dit veld is bedoeld voor validatiedoeleinden en moet niet worden gewijzigd.