From 2bf9ebf81ec93ebf35a225db01381f9159a30f61 Mon Sep 17 00:00:00 2001 From: dave Date: Sat, 9 Mar 2024 15:42:34 +0100 Subject: [PATCH] Add Ci --- .drone.yml | 51 +++++++++++------------- src/HeartTrackAPI/Dockerfile | 36 +++++++++++++++++ src/HeartTrackAPI/HeartTrackAPI.csproj | 2 +- src/HeartTrackAPI/Program.cs | 5 +-- src/HeartTrackAPI/Request/PageRequest.cs | 4 -- 5 files changed, 63 insertions(+), 35 deletions(-) create mode 100644 src/HeartTrackAPI/Dockerfile diff --git a/.drone.yml b/.drone.yml index 63d7943..d0a64c1 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5,10 +5,10 @@ name: HeartTrack-API trigger: branch: - WORK-CD + - WORK-WEB-API event: - push - steps: - name: build image: mcr.microsoft.com/dotnet/sdk:8.0 @@ -16,31 +16,28 @@ steps: - cd src/ - dotnet restore HeartTrack.sln - dotnet build HeartTrack.sln -c Release --no-restore - - name: code-analysis - image: hub.codefirst.iut.uca.fr/marc.chevaldonne/codefirst-dronesonarplugin-dotnet8 - secrets: [ SECRET_SONAR_LOGIN ] + - dotnet publish HeartTrack.sln -c Release --no-restore -o CI_PROJECT_DIR/build/release + + - name: docker-build-and-push + image: plugins/docker settings: - sonar_host: https://codefirst.iut.uca.fr/sonar/ - sonar_token: - from_secret: SECRET_SONAR_LOGIN - project_key: HeartTrack-API - coverage_exclusions: "Tests/**" - commands: - - cd src/ - - dotnet restore HeartTrack.sln - - dotnet sonarscanner begin /k:HeartTrack-API /d:sonar.host.url=$${PLUGIN_SONAR_HOST} /d:sonar.login=$${PLUGIN_SONAR_TOKEN} /d:sonar.coverage.exclusions="Tests/**" - - dotnet build HeartTrack.sln -c Release --no-restore - - dotnet test HeartTrack.sln --logger trx --no-restore /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura --collect "XPlat Code Coverage" - - reportgenerator -reports:"**/coverage.cobertura.xml" -reporttypes:SonarQube -targetdir:"coveragereport" - - dotnet publish HeartTrack.sln -c Release --no-restore -o $CI_PROJECT_DIR/build/release - - dotnet sonarscanner end /d:sonar.login=$${PLUGIN_SONAR_TOKEN} + dockerfile: src/HeartTrackAPI/Dockerfile + context: src/ + registry: hub.codefirst.iut.uca.fr + repo: hub.codefirst.iut.uca.fr/david.d_almeida/api + username: + from_secret: SECRET_REGISTRY_USERNAME + password: + from_secret: SECRET_REGISTRY_PASSWORD + depends_on: [ build ] - - name: generate-and-deploy-docs - image: hub.codefirst.iut.uca.fr/maxime.batista/codefirst-docdeployer - failure: ignore - commands: - - /entrypoint.sh -l docs/doxygen -t doxygen - when: - event: - - push - depends_on: [ build ] \ No newline at end of file + - name: deploy-container + image: hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dockerproxy-clientdrone:latest + environment: + IMAGENAME: hub.codefirst.iut.uca.fr/david.d_almeida/api:latest + CONTAINERNAME: api + CODEFIRST_CLIENTDRONE_ENV_PORT: 8080 + ADMINS: davidd_almeida,kevinmonteiro,antoineperederii,paullevrault + COMMAND: create + OVERWRITE: true + depends_on: [ docker-build-and-push ] \ No newline at end of file diff --git a/src/HeartTrackAPI/Dockerfile b/src/HeartTrackAPI/Dockerfile new file mode 100644 index 0000000..c8f3264 --- /dev/null +++ b/src/HeartTrackAPI/Dockerfile @@ -0,0 +1,36 @@ +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base +USER $APP_UID +WORKDIR /app +EXPOSE 8080 +EXPOSE 8081 + +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["HeartTrackAPI/HeartTrackAPI.csproj", "HeartTrackAPI/"] +COPY ["StubbedContextLib/StubbedContextLib.csproj", "StubbedContextLib/"] +COPY ["Shared/Shared.csproj", "Shared/"] +COPY ["Entities/Entities.csproj", "Entities/"] +COPY ["Dto/Dto.csproj", "Dto/"] +COPY ["ApiMappeur/ApiMappeur.csproj", "ApiMappeur/"] +COPY ["DbContextLib/DbContextLib.csproj", "DbContextLib/"] +COPY ["Model/Model.csproj", "Model/"] +COPY ["Model2Entities/Model2Entities.csproj", "Model2Entities/"] +COPY ["StubAPI/StubAPI.csproj", "StubAPI/"] +COPY ["StubbedContextLib/StubbedContextLib.csproj", "StubbedContextLib/"] + +RUN dotnet restore "HeartTrackAPI/HeartTrackAPI.csproj" +COPY . . +WORKDIR "/src/HeartTrackAPI" +RUN ls +RUN dotnet build "HeartTrackAPI.csproj" -c $BUILD_CONFIGURATION -o /app/build + +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "HeartTrackAPI.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +RUN ls +ENTRYPOINT ["dotnet", "HeartTrackAPI.dll"] \ No newline at end of file diff --git a/src/HeartTrackAPI/HeartTrackAPI.csproj b/src/HeartTrackAPI/HeartTrackAPI.csproj index f24f646..c572e11 100644 --- a/src/HeartTrackAPI/HeartTrackAPI.csproj +++ b/src/HeartTrackAPI/HeartTrackAPI.csproj @@ -21,7 +21,7 @@ - + ..\..\..\..\..\.nuget\packages\newtonsoft.json\13.0.1\lib\netstandard2.0\Newtonsoft.Json.dll diff --git a/src/HeartTrackAPI/Program.cs b/src/HeartTrackAPI/Program.cs index b396e74..b43dfbe 100644 --- a/src/HeartTrackAPI/Program.cs +++ b/src/HeartTrackAPI/Program.cs @@ -14,11 +14,10 @@ builder.Services.AddSingleton(); var app = builder.Build(); // Configure the HTTP request pipeline. -if (app.Environment.IsDevelopment()) -{ + app.UseSwagger(); app.UseSwaggerUI(); -} + app.UseHttpsRedirection(); diff --git a/src/HeartTrackAPI/Request/PageRequest.cs b/src/HeartTrackAPI/Request/PageRequest.cs index bc04934..9fad40d 100644 --- a/src/HeartTrackAPI/Request/PageRequest.cs +++ b/src/HeartTrackAPI/Request/PageRequest.cs @@ -1,7 +1,3 @@ -using System.Text.Json.Serialization; -using Newtonsoft.Json.Converters; -using Shared; - namespace HeartTrackAPI.Request; public class PageRequest