From cc14f9b0713b7f3271eeb8d918b91746822899f8 Mon Sep 17 00:00:00 2001 From: LBHTKarki Date: Fri, 18 Jul 2025 16:05:53 +0100 Subject: [PATCH 1/6] add test coverage config --- ContractsApi.Tests/ContractsApi.Tests.csproj | 8 ++++++++ ContractsApi.Tests/Dockerfile | 11 ++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ContractsApi.Tests/ContractsApi.Tests.csproj b/ContractsApi.Tests/ContractsApi.Tests.csproj index ec278a0..f8b96a9 100644 --- a/ContractsApi.Tests/ContractsApi.Tests.csproj +++ b/ContractsApi.Tests/ContractsApi.Tests.csproj @@ -15,6 +15,14 @@ + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + diff --git a/ContractsApi.Tests/Dockerfile b/ContractsApi.Tests/Dockerfile index 308d713..ca5aabe 100644 --- a/ContractsApi.Tests/Dockerfile +++ b/ContractsApi.Tests/Dockerfile @@ -20,9 +20,13 @@ RUN apt-get update && apt-get install -y openjdk-17-jdk # && apk add --no-cache openjdk-17-jdk RUN dotnet tool install --global dotnet-sonarscanner + +# Install report generator +RUN dotnet tool install --global dotnet-reportgenerator-globaltool --version 5.2.0 + ENV PATH="$PATH:/root/.dotnet/tools" -RUN dotnet sonarscanner begin /k:"LBHackney-IT_contracts-api" /o:"lbhackney-it" /d:sonar.host.url=https://sonarcloud.io /d:sonar.login="${SONAR_TOKEN}" +RUN dotnet sonarscanner begin /k:"LBHackney-IT_contracts-api" /o:"lbhackney-it" /d:sonar.host.url=https://sonarcloud.io /d:sonar.login="${SONAR_TOKEN}" /d:sonar.coverageReportPaths="coverage/SonarQube.xml" /d:sonar.dotnet.excludeTestProjects=true /d:sonar.exclusions="**/*.js, **/*.ts, **/*.css" # Copy csproj and nuget config and restore as distinct layers COPY ./ContractsApi.sln ./ @@ -39,6 +43,7 @@ COPY . . RUN dotnet build -c Release -o out ContractsApi/ContractsApi.csproj RUN dotnet build -c debug -o out ContractsApi.Tests/ContractsApi.Tests.csproj -CMD dotnet test +CMD dotnet test ./ContractsApi.Tests/ContractsApi.Tests.csproj --no-build --collect:"XPlat Code Coverage" --results-directory ./coverage \ + && reportgenerator "-reports:./coverage/*/coverage.cobertura.xml" "-targetdir:coverage" "-reporttypes:SonarQube" "-verbosity:Off" \ + && (dotnet sonarscanner end /d:sonar.login="${SONAR_TOKEN}" > /dev/null) -RUN dotnet sonarscanner end /d:sonar.login="${SONAR_TOKEN}" From 5201dda43592add2f5c7c1ea674b3c676eaef778 Mon Sep 17 00:00:00 2001 From: LBHTKarki Date: Fri, 18 Jul 2025 16:19:38 +0100 Subject: [PATCH 2/6] tweak test docker --- ContractsApi.Tests/Dockerfile | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/ContractsApi.Tests/Dockerfile b/ContractsApi.Tests/Dockerfile index ca5aabe..e35ed28 100644 --- a/ContractsApi.Tests/Dockerfile +++ b/ContractsApi.Tests/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/sdk:8.0 +FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine # disable microsoft telematry ENV DOTNET_CLI_TELEMETRY_OPTOUT='true' @@ -12,13 +12,8 @@ ENV SONAR_TOKEN=$SONAR_TOKEN WORKDIR /app # Install and run sonar cloud scanner -# RUN apt-get update && apt-get install -y openjdk17 RUN apt-get update && apt-get install -y openjdk-17-jdk -# RUN apk update \ -# && apk upgrade --no-cache \ -# && apk add --no-cache openjdk-17-jdk - RUN dotnet tool install --global dotnet-sonarscanner # Install report generator @@ -40,10 +35,9 @@ RUN dotnet restore ./ContractsApi.Tests/ContractsApi.Tests.csproj # Copy everything else and build COPY . . -RUN dotnet build -c Release -o out ContractsApi/ContractsApi.csproj -RUN dotnet build -c debug -o out ContractsApi.Tests/ContractsApi.Tests.csproj +RUN dotnet build ./ContractsApi/ContractsApi.csproj --no-restore --no-dependencies +RUN dotnet build ./ContractsApi.Tests/ContractsApi.Tests.csproj --no-restore CMD dotnet test ./ContractsApi.Tests/ContractsApi.Tests.csproj --no-build --collect:"XPlat Code Coverage" --results-directory ./coverage \ && reportgenerator "-reports:./coverage/*/coverage.cobertura.xml" "-targetdir:coverage" "-reporttypes:SonarQube" "-verbosity:Off" \ && (dotnet sonarscanner end /d:sonar.login="${SONAR_TOKEN}" > /dev/null) - From e394f9eba1ace2b9c3d6f4a9b3ba092643518927 Mon Sep 17 00:00:00 2001 From: LBHTKarki Date: Fri, 18 Jul 2025 16:21:58 +0100 Subject: [PATCH 3/6] revert dotnet image --- ContractsApi.Tests/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ContractsApi.Tests/Dockerfile b/ContractsApi.Tests/Dockerfile index e35ed28..2f079fa 100644 --- a/ContractsApi.Tests/Dockerfile +++ b/ContractsApi.Tests/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine +FROM mcr.microsoft.com/dotnet/sdk:8.0 # disable microsoft telematry ENV DOTNET_CLI_TELEMETRY_OPTOUT='true' From ce7303b820ea81025dff226b8b3fa55f38bfc7e4 Mon Sep 17 00:00:00 2001 From: LBHTKarki Date: Fri, 18 Jul 2025 16:33:43 +0100 Subject: [PATCH 4/6] tidy up dockerfile --- ContractsApi.Tests/Dockerfile | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/ContractsApi.Tests/Dockerfile b/ContractsApi.Tests/Dockerfile index 2f079fa..8bd865c 100644 --- a/ContractsApi.Tests/Dockerfile +++ b/ContractsApi.Tests/Dockerfile @@ -12,16 +12,22 @@ ENV SONAR_TOKEN=$SONAR_TOKEN WORKDIR /app # Install and run sonar cloud scanner -RUN apt-get update && apt-get install -y openjdk-17-jdk - -RUN dotnet tool install --global dotnet-sonarscanner - +RUN apt-get update && apt-get install -y openjdk-17-jdk && apt-get clean \ +# install sonar scanner +&& dotnet tool install --global dotnet-sonarscanner \ # Install report generator -RUN dotnet tool install --global dotnet-reportgenerator-globaltool --version 5.2.0 +&& dotnet tool install --global dotnet-reportgenerator-globaltool --version 5.2.0 ENV PATH="$PATH:/root/.dotnet/tools" -RUN dotnet sonarscanner begin /k:"LBHackney-IT_contracts-api" /o:"lbhackney-it" /d:sonar.host.url=https://sonarcloud.io /d:sonar.login="${SONAR_TOKEN}" /d:sonar.coverageReportPaths="coverage/SonarQube.xml" /d:sonar.dotnet.excludeTestProjects=true /d:sonar.exclusions="**/*.js, **/*.ts, **/*.css" +RUN dotnet sonarscanner begin \ +/k:"LBHackney-IT_contracts-api" \ +/o:"lbhackney-it" \ +/d:sonar.host.url=https://sonarcloud.io \ +/d:sonar.login="${SONAR_TOKEN}" \ +/d:sonar.coverageReportPaths="coverage/SonarQube.xml" \ +/d:sonar.dotnet.excludeTestProjects=true \ +/d:sonar.exclusions="**/*.js, **/*.ts, **/*.css" # Copy csproj and nuget config and restore as distinct layers COPY ./ContractsApi.sln ./ @@ -29,14 +35,14 @@ COPY ./ContractsApi/ContractsApi.csproj ./ContractsApi/ COPY ./ContractsApi.Tests/ContractsApi.Tests.csproj ./ContractsApi.Tests/ COPY /NuGet.Config /root/.nuget/NuGet/NuGet.Config -RUN dotnet restore ./ContractsApi/ContractsApi.csproj -RUN dotnet restore ./ContractsApi.Tests/ContractsApi.Tests.csproj +RUN dotnet restore ./ContractsApi/ContractsApi.csproj \ +&& dotnet restore ./ContractsApi.Tests/ContractsApi.Tests.csproj # Copy everything else and build COPY . . -RUN dotnet build ./ContractsApi/ContractsApi.csproj --no-restore --no-dependencies -RUN dotnet build ./ContractsApi.Tests/ContractsApi.Tests.csproj --no-restore +RUN dotnet build ./ContractsApi/ContractsApi.csproj --no-restore --no-dependencies \ +&& dotnet build ./ContractsApi.Tests/ContractsApi.Tests.csproj --no-restore CMD dotnet test ./ContractsApi.Tests/ContractsApi.Tests.csproj --no-build --collect:"XPlat Code Coverage" --results-directory ./coverage \ && reportgenerator "-reports:./coverage/*/coverage.cobertura.xml" "-targetdir:coverage" "-reporttypes:SonarQube" "-verbosity:Off" \ From d0d9fe62c4ccedac064931b59ad75a2e945d68e5 Mon Sep 17 00:00:00 2001 From: Liudvikas Taluntis <43747286+Duslerke@users.noreply.github.com> Date: Thu, 26 Feb 2026 13:22:12 +0000 Subject: [PATCH 5/6] Bump JWT core to 1.87.0 for Cognito support. --- ContractsApi.Tests/ContractsApi.Tests.csproj | 2 +- ContractsApi/ContractsApi.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ContractsApi.Tests/ContractsApi.Tests.csproj b/ContractsApi.Tests/ContractsApi.Tests.csproj index f8b96a9..7a4bdfc 100644 --- a/ContractsApi.Tests/ContractsApi.Tests.csproj +++ b/ContractsApi.Tests/ContractsApi.Tests.csproj @@ -26,7 +26,7 @@ - + diff --git a/ContractsApi/ContractsApi.csproj b/ContractsApi/ContractsApi.csproj index 192caab..75337cb 100644 --- a/ContractsApi/ContractsApi.csproj +++ b/ContractsApi/ContractsApi.csproj @@ -24,7 +24,7 @@ - + From a3a72b491c05b4b2ce12920d3c41be9f4fa537b2 Mon Sep 17 00:00:00 2001 From: Liudvikas Taluntis <43747286+Duslerke@users.noreply.github.com> Date: Thu, 26 Feb 2026 13:41:03 +0000 Subject: [PATCH 6/6] Fix Sonar Scanner's "Missing Blob" error caused by CircleCI's checkout default settings copying only the latest snapshot of code w/o any git history. --- .circleci/config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 06d607e..daa8952 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -147,7 +147,8 @@ jobs: build-and-test: executor: docker-python steps: - - checkout + - checkout: + method: full - setup_remote_docker - sonarcloud/scan - run: