Created
April 3, 2023 19:58
-
-
Save karlospn/42719369968b32b5c9bfad7a6a7dd062 to your computer and use it in GitHub Desktop.
Revisions
-
karlospn created this gist
Apr 3, 2023 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,105 @@ FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build-env WORKDIR /app # Agument for PR ARG IS_PR # Argument for the PAT ARG AZDO_PAT # Arguments for setting the Sonarqube Token and the Project Key ARG SONAR_TOKEN ARG SONAR_BRANCH_NAME ARG SONAR_PRJ_KEY ARG SONAR_PR_KEY ARG SONAR_PR_INSTANCE ARG SONAR_PR_PROJECT ARG SONAR_PR_REPOSITORY ARG SONAR_PR_BRANCH ARG SONAR_PR_BASE # Setting the Sonarqube Organization and Uri ENV SONAR_ORG "karlospn" ENV SONAR_HOST "https://sonarcloud.io/" ## Install Java, because the sonarscanner needs it. RUN mkdir /usr/share/man/man1/ RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y openjdk-11-jre ## Install sonarscanner RUN dotnet tool install --global dotnet-sonarscanner --version 5.3.1 ## Install report generator RUN dotnet tool install --global dotnet-reportgenerator-globaltool --version 4.8.12 ## Set the dotnet tools folder in the PATH env variable ENV PATH="${PATH}:/root/.dotnet/tools" # Start scanner RUN if [ "$IS_PR" = "true" ] ; then \ dotnet sonarscanner begin \ /o:"$SONAR_ORG" \ /k:"$SONAR_PRJ_KEY" \ /d:sonar.host.url="$SONAR_HOST" \ /d:sonar.login="$SONAR_TOKEN" \ /d:sonar.coverageReportPaths="coverage/SonarQube.xml" \ /d:sonar.pullrequest.provider="vsts" \ /d:sonar.pullrequest.key="$SONAR_PR_KEY" \ /d:sonar.pullrequest.vsts.instanceUrl="$SONAR_PR_INSTANCE" \ /d:sonar.pullrequest.vsts.project="$SONAR_PR_PROJECT" \ /d:sonar.pullrequest.vsts.repository="$SONAR_PR_REPOSITORY" \ /d:sonar.pullrequest.base="$SONAR_PR_BASE" \ /d:sonar.pullrequest.branch="$SONAR_PR_BRANCH" \ /d:sonar.verbose=true \ /d:sonar.qualitygate.wait=true; \ else \ dotnet sonarscanner begin \ /o:"$SONAR_ORG" \ /k:"$SONAR_PRJ_KEY" \ /d:sonar.host.url="$SONAR_HOST" \ /d:sonar.login="$SONAR_TOKEN" \ /d:sonar.coverageReportPaths="coverage/SonarQube.xml" \ /d:sonar.branch.name="$SONAR_BRANCH_NAME" \ /d:sonar.qualitygate.wait=true; \ fi # Copy everything and restore sln COPY . ./ RUN dotnet restore -s "https://api.nuget.org/v3/index.json" \ --runtime linux-x64 # Build RUN dotnet build "./src/CompanyPrefix.ApplicationName.WebApi/CompanyPrefix.ApplicationName.WebApi.csproj" \ -c Release \ --runtime linux-x64 \ --no-restore \ /p:PublishSingleFile=true # Test RUN dotnet test "./test/CompanyPrefix.ApplicationName.Library.Impl.UnitTest/CompanyPrefix.ApplicationName.Library.Impl.UnitTest.csproj" \ --collect:"XPlat Code Coverage" \ --results-directory ./coverage # Create the code coverage file in sonarqube format using the cobertura file generated from the dotnet test command RUN reportgenerator "-reports:./coverage/*/coverage.cobertura.xml" "-targetdir:coverage" "-reporttypes:SonarQube" # Publish the app RUN dotnet publish "./src/CompanyPrefix.ApplicationName.WebApi/CompanyPrefix.ApplicationName.WebApi.csproj" \ -c Release \ -o /app/publish \ --no-restore \ --no-build \ --self-contained true \ --runtime linux-x64 \ /p:PublishSingleFile=true \ /p:PublishTrimmed=true ## Stop scanner RUN dotnet sonarscanner end /d:sonar.login="$SONAR_TOKEN" # Build runtime image mcr.microsoft.com/dotnet/runtime-deps:5.0-buster-slim WORKDIR /app COPY --from=build-env /app/publish . ENTRYPOINT ["./CompanyPrefix.ApplicationName.WebApi"]