Skip to content

AnalogCommitter/AngularLint

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jenkins Unit Testing und Linting

Einführung

Jenkins ermöglicht es, bestimmte Befehle mithilfe von Jobs auszuführen. In diesem Referat möchten wir dies anhand von einem Lint-Job und einem UnitTest-Job (Asp-Net Rest-Api) erklären.

Live Demo

Genereller Aufbau

Um den Test Report der Unit Tests im Dashboard zu sehen, brauchen Sie das XUnit plugin.

Für die Angular Lint Ergebnisse wird das Warnings Next Generations Plugin installiert.

Zunächst legen wir ein neues Projekt an. Klicken Sie dazu auf "Element anlegen".

Geben Sie einen Namen ein und wählen Sie "Free Style Softwareprojekt bauen" Klicken Sie OK.

Bei Source-Code-Management: Wählen Sie "Git" und geben Sie ihre Repository URL und den Branch an.

Wir benutzen den HTTPS Link, weil wir Jenkins auf dem LocalHost laufen lassen

Bei Buildverfahren: Wählen Sie "Windows Batch-Datei ausführen"

Unit Testing Führen Sie hier das oben angegebene shellscript-file aus, welches die Unittests in einem Docker-Container ausführt.

DockerFile

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["Formula1.Core/Formula1.Core.csproj", "Formula1.Core/"]
COPY ["Formula1.CoreTest/Formula1.CoreTest.csproj", "Formula1.CoreTest/"]
COPY ["Utils/Utils.csproj", "Utils/"]
RUN dotnet restore "Formula1.Core/Formula1.Core.csproj"
COPY . .
RUN dotnet build
RUN dotnet test --logger "trx;LogFileName=unittestResults.xml";exit 0

Beachten Sie die letzte Zeile im Dockerfile:

"RUN dotnet test --logger "trx;LogFileName=unittestResults.xml";exit 0"

mit dotnet test werden die Tests ausgeführt

mit --logger "trx;LogFileName=unittestResults.xml" werden die Testergebnisse im File "unittestResults.xml" gespeichert

mit exit 0 wird sicher gestellt, dass das Build erfolgreich ist, auch wenn nicht alle Tests erfolgreich sind.

run-tests-docker.sh

cd Formula1
docker build -t formula1 . 
docker rm formula1-tests 
docker run --name formula1-tests formula1 
docker cp formula1-tests:/src/Formula1.CoreTest/TestResults/unittestResults.xml . 

Bei Post-Build-Aktionen: Wählen Sie "Publish xUnit test result report", dann bei Report Type "MSTest-Version N/A (default)", und geben Sie bei Includes Pattern "**\unittestResults.xml" ein

oder

Linting Geben Sie den Command

npm run lint --format pmd > result.xml
tr -d '\n' < result.xml > results.xml
sed -i -r -n -e "/<pmd version=\"tslint\">/,${p}" results.xml

ein.

Bei Postbuild Actions wählen Sie TSLint aus und geben Ihr Output-File an.

Speichern Sie die Konfigurationen.

Clicken Sie auf "Jetzt bauen".

Sobald es abgeschlossen ist, klicken Sie auf den Build.

Hier sehen Sie, ob der Build erfolgreich war oder nicht:

So sieht dann das Dashboard des Plugins (klicken auf "TSLint Warnings") aus:

Wenn Sie auf "Testergebnis" klicken, sehen Sie, welche Tests erfolgreich waren und welche nicht. (Wenn der "Testergebnis" Tab nicht da ist, aktualisieren Sie die Seite.)