From 5dc570725b71f607fbeda1cd81eef1618f6d27cd Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Sun, 10 Mar 2024 12:36:08 +0100 Subject: [PATCH 01/65] Prueba release --- .../CleanArchitecture.API/Dockerfile | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 CleanArchitecture/CleanArchitecture.API/Dockerfile diff --git a/CleanArchitecture/CleanArchitecture.API/Dockerfile b/CleanArchitecture/CleanArchitecture.API/Dockerfile new file mode 100644 index 0000000..ffdea21 --- /dev/null +++ b/CleanArchitecture/CleanArchitecture.API/Dockerfile @@ -0,0 +1,28 @@ +#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. + +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base +USER app +WORKDIR /app +EXPOSE 8080 + +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["CleanArchitecture.API/CleanArchitecture.API.csproj", "CleanArchitecture.API/"] +COPY ["CleanArchitecture.Application/CleanArchitecture.Application.csproj", "CleanArchitecture.Application/"] +COPY ["CleanArchitecture.Domain/CleanArchitecture.Domain.csproj", "CleanArchitecture.Domain/"] +COPY ["CleanArchitecture.Data/CleanArchitecture.Infrastructure.csproj", "CleanArchitecture.Data/"] +COPY ["CleanArchitecture.Identity/CleanArchitecture.Identity.csproj", "CleanArchitecture.Identity/"] +RUN dotnet restore "./CleanArchitecture.API/CleanArchitecture.API.csproj" +COPY . . +WORKDIR "/src/CleanArchitecture.API" +RUN dotnet build "./CleanArchitecture.API.csproj" -c $BUILD_CONFIGURATION -o /app/build + +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "./CleanArchitecture.API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "CleanArchitecture.API.dll"] \ No newline at end of file From 8206ef05e4fe9e0d42c8089b2b8dee13ac5b27e2 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Sun, 10 Mar 2024 12:40:35 +0100 Subject: [PATCH 02/65] test subida --- CleanArchitecture/.dockerignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/.dockerignore b/CleanArchitecture/.dockerignore index 4d72b4f..b4995e7 100644 --- a/CleanArchitecture/.dockerignore +++ b/CleanArchitecture/.dockerignore @@ -27,4 +27,4 @@ README.md !.git/HEAD !.git/config !.git/packed-refs -!.git/refs/heads/** \ No newline at end of file +!.git/refs/heads/** From bd534ef790b03bc90eed519ce4c5b9ec6a4d87f8 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Sun, 10 Mar 2024 12:45:19 +0100 Subject: [PATCH 03/65] intengo subida 2 --- CleanArchitecture/.dockerignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/.dockerignore b/CleanArchitecture/.dockerignore index b4995e7..4d72b4f 100644 --- a/CleanArchitecture/.dockerignore +++ b/CleanArchitecture/.dockerignore @@ -27,4 +27,4 @@ README.md !.git/HEAD !.git/config !.git/packed-refs -!.git/refs/heads/** +!.git/refs/heads/** \ No newline at end of file From e630b09fde74b0f9b1dc69cec987d725dd9c5989 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Sun, 10 Mar 2024 12:48:04 +0100 Subject: [PATCH 04/65] intento subida 3 --- CleanArchitecture/.dockerignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/.dockerignore b/CleanArchitecture/.dockerignore index 4d72b4f..b4995e7 100644 --- a/CleanArchitecture/.dockerignore +++ b/CleanArchitecture/.dockerignore @@ -27,4 +27,4 @@ README.md !.git/HEAD !.git/config !.git/packed-refs -!.git/refs/heads/** \ No newline at end of file +!.git/refs/heads/** From f4b4067df7bc88da0885005871416aabe7372eb6 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Sun, 10 Mar 2024 12:49:37 +0100 Subject: [PATCH 05/65] intento subida 4 --- CleanArchitecture/.dockerignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/.dockerignore b/CleanArchitecture/.dockerignore index b4995e7..4d72b4f 100644 --- a/CleanArchitecture/.dockerignore +++ b/CleanArchitecture/.dockerignore @@ -27,4 +27,4 @@ README.md !.git/HEAD !.git/config !.git/packed-refs -!.git/refs/heads/** +!.git/refs/heads/** \ No newline at end of file From fd7a34e9a1729fc6c0effa464aa48e3f4f0b0b93 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Sun, 10 Mar 2024 12:50:27 +0100 Subject: [PATCH 06/65] intento subida 5 --- CleanArchitecture/.dockerignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/.dockerignore b/CleanArchitecture/.dockerignore index 4d72b4f..b4995e7 100644 --- a/CleanArchitecture/.dockerignore +++ b/CleanArchitecture/.dockerignore @@ -27,4 +27,4 @@ README.md !.git/HEAD !.git/config !.git/packed-refs -!.git/refs/heads/** \ No newline at end of file +!.git/refs/heads/** From 942393b1401b29ddcc3381bf88586bddfdd8c2a9 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Sun, 10 Mar 2024 23:20:21 +0100 Subject: [PATCH 07/65] test --- CleanArchitecture/CleanArchitecture.API/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CleanArchitecture/CleanArchitecture.API/Dockerfile b/CleanArchitecture/CleanArchitecture.API/Dockerfile index ffdea21..55c78e5 100644 --- a/CleanArchitecture/CleanArchitecture.API/Dockerfile +++ b/CleanArchitecture/CleanArchitecture.API/Dockerfile @@ -3,7 +3,7 @@ FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base USER app WORKDIR /app -EXPOSE 8080 +EXPOSE 80 FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build ARG BUILD_CONFIGURATION=Release @@ -25,4 +25,4 @@ RUN dotnet publish "./CleanArchitecture.API.csproj" -c $BUILD_CONFIGURATION -o / FROM base AS final WORKDIR /app COPY --from=publish /app/publish . -ENTRYPOINT ["dotnet", "CleanArchitecture.API.dll"] \ No newline at end of file +ENTRYPOINT ["dotnet", "CleanArchitecture.API.dll"] From 33d596bdbe29535471610b2505b74dd5f80d46d4 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Sun, 10 Mar 2024 23:36:39 +0100 Subject: [PATCH 08/65] Prueba ejecucion pruebas unitarias --- CleanArchitecture/CleanArchitecture.API/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/CleanArchitecture.API/Dockerfile b/CleanArchitecture/CleanArchitecture.API/Dockerfile index 55c78e5..9c69599 100644 --- a/CleanArchitecture/CleanArchitecture.API/Dockerfile +++ b/CleanArchitecture/CleanArchitecture.API/Dockerfile @@ -25,4 +25,4 @@ RUN dotnet publish "./CleanArchitecture.API.csproj" -c $BUILD_CONFIGURATION -o / FROM base AS final WORKDIR /app COPY --from=publish /app/publish . -ENTRYPOINT ["dotnet", "CleanArchitecture.API.dll"] +ENTRYPOINT ["dotnet", "CleanArchitecture.API.dll"] \ No newline at end of file From e290173fc3a09b17171b2114d1bc855ae9dffdba Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 18:31:16 +0100 Subject: [PATCH 09/65] seguimos con los tests con jenkins --- .../Controllers/TestController.cs | 25 +++++++++++++++ .../CleanArchitecture.API/Dockerfile | 5 +++ .../appsettings.Development.json | 3 +- .../appsettings.Production.json | 3 +- .../CleanArchitecture.API/appsettings.json | 3 +- CleanArchitecture/Dockerfile | 17 +++++----- .../Jenkinsfiles/Pro.Jenkinsfile | 32 +++++++++++++++++++ 7 files changed, 77 insertions(+), 11 deletions(-) create mode 100644 CleanArchitecture/CleanArchitecture.API/Controllers/TestController.cs create mode 100644 CleanArchitecture/Jenkinsfiles/Pro.Jenkinsfile diff --git a/CleanArchitecture/CleanArchitecture.API/Controllers/TestController.cs b/CleanArchitecture/CleanArchitecture.API/Controllers/TestController.cs new file mode 100644 index 0000000..6b1ff2e --- /dev/null +++ b/CleanArchitecture/CleanArchitecture.API/Controllers/TestController.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace CleanArchitecture.API.Controllers +{ + [Route("api/v1/[controller]")] + [ApiController] + public class TestController : ControllerBase + { + private readonly IConfiguration _configuration; + public TestController(IConfiguration configuration) + { + + _configuration = configuration; + + } + + + [HttpGet] + public IActionResult Get() + { + return Ok(new { configuration = _configuration["Environment"] }); + } + } +} diff --git a/CleanArchitecture/CleanArchitecture.API/Dockerfile b/CleanArchitecture/CleanArchitecture.API/Dockerfile index 9c69599..6395483 100644 --- a/CleanArchitecture/CleanArchitecture.API/Dockerfile +++ b/CleanArchitecture/CleanArchitecture.API/Dockerfile @@ -5,6 +5,11 @@ USER app WORKDIR /app EXPOSE 80 +#seteo de variables de entorno +ARG ENVIRONMENT=dev +ENV ASPNETCORE_ENVIRONMENT=${ENVIRONMENT} +ENV ASPNETCORE_URLS=http://+:80 + FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build ARG BUILD_CONFIGURATION=Release WORKDIR /src diff --git a/CleanArchitecture/CleanArchitecture.API/appsettings.Development.json b/CleanArchitecture/CleanArchitecture.API/appsettings.Development.json index 950bd10..bd1c22f 100644 --- a/CleanArchitecture/CleanArchitecture.API/appsettings.Development.json +++ b/CleanArchitecture/CleanArchitecture.API/appsettings.Development.json @@ -20,5 +20,6 @@ "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*" + "AllowedHosts": "*", + "Environment": "Development" } diff --git a/CleanArchitecture/CleanArchitecture.API/appsettings.Production.json b/CleanArchitecture/CleanArchitecture.API/appsettings.Production.json index 5d068b6..395c09d 100644 --- a/CleanArchitecture/CleanArchitecture.API/appsettings.Production.json +++ b/CleanArchitecture/CleanArchitecture.API/appsettings.Production.json @@ -20,5 +20,6 @@ "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*" + "AllowedHosts": "*", + "Environment": "Production" } diff --git a/CleanArchitecture/CleanArchitecture.API/appsettings.json b/CleanArchitecture/CleanArchitecture.API/appsettings.json index 6e29d67..f682b5f 100644 --- a/CleanArchitecture/CleanArchitecture.API/appsettings.json +++ b/CleanArchitecture/CleanArchitecture.API/appsettings.json @@ -21,5 +21,6 @@ "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*" + "AllowedHosts": "*", + "Environment": "Development" } diff --git a/CleanArchitecture/Dockerfile b/CleanArchitecture/Dockerfile index 2aff743..9f70daa 100644 --- a/CleanArchitecture/Dockerfile +++ b/CleanArchitecture/Dockerfile @@ -5,14 +5,14 @@ USER app WORKDIR /app EXPOSE 80 -ARG ENVIRONMENT Production -ENV ASPNETCORE_ENVIRONMENT Production -ENV ASPNETCORE_HTTP_PORTS 80 - +ARG ENVIRONMENT=dev +ENV ASPNETCORE_ENVIRONMENT=${ENVIRONMENT} +ENV ASPNETCORE_URLS=http://+:80 FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build - ARG BUILD_CONFIGURATION=Release + + WORKDIR /src COPY ["CleanArchitecture.API/CleanArchitecture.API.csproj", "CleanArchitecture.API/"] COPY ["CleanArchitecture.Application/CleanArchitecture.Application.csproj", "CleanArchitecture.Application/"] @@ -22,12 +22,13 @@ COPY ["CleanArchitecture.Identity/CleanArchitecture.Identity.csproj", "CleanArch RUN dotnet restore "./CleanArchitecture.API/CleanArchitecture.API.csproj" COPY . . WORKDIR "/src/CleanArchitecture.API" -RUN dotnet build "./CleanArchitecture.API.csproj" -c Release -o /app/build +RUN dotnet build "./CleanArchitecture.API.csproj" -c $BUILD_CONFIGURATION -o /app/build FROM build AS publish -RUN dotnet publish "./CleanArchitecture.API.csproj" -c Release -o /app/publish /p:UseAppHost=false +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "./CleanArchitecture.API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app COPY --from=publish /app/publish . -ENTRYPOINT ["dotnet", "CleanArchitecture.API.dll"] +ENTRYPOINT ["dotnet", "CleanArchitecture.API.dll"] \ No newline at end of file diff --git a/CleanArchitecture/Jenkinsfiles/Pro.Jenkinsfile b/CleanArchitecture/Jenkinsfiles/Pro.Jenkinsfile new file mode 100644 index 0000000..4d146b1 --- /dev/null +++ b/CleanArchitecture/Jenkinsfiles/Pro.Jenkinsfile @@ -0,0 +1,32 @@ +pipeline { + + agent any + + envirnment { + DOCKER_REGISTRY_URL = credentials('docker-registry-url') + DOCKER_REGISTRY_USER = credentials('docker-registry-user') + DOCKER_REGISTRY_PASSWORD = credentials('docker-registry-password') + ASP_ENVIRONMENT = 'Production' + } + + stages { + + stage ('Checkout') { + steps { + checkout scm + } + } + + stage ('Build') { + steps { + script { + def version = "0.0.${env.BUILD_NUMBER}" + + echo 'docker build -t $DOCKER_REGISTRY_URL/$clean-architecture-backend:${version} .' + } + } + } + + } + +} \ No newline at end of file From 1fd8811dc786874bdfc611197b16f304fab881f9 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 18:32:35 +0100 Subject: [PATCH 10/65] =) --- CleanArchitecture/Pro.Jenkinsfile | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 CleanArchitecture/Pro.Jenkinsfile diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile new file mode 100644 index 0000000..112048b --- /dev/null +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -0,0 +1,32 @@ +pipeline { + + agent any + + environment { + DOCKER_REGISTRY_URL = credentials('docker-registry-url') + DOCKER_REGISTRY_USER = credentials('docker-registry-user') + DOCKER_REGISTRY_PASSWORD = credentials('docker-registry-password') + ASP_ENVIRONMENT = 'Production' + } + + stages { + + stage ('Checkout') { + steps { + checkout scm + } + } + + stage ('Build') { + steps { + script { + def version = "0.0.${env.BUILD_NUMBER}" + + echo 'docker build -t $DOCKER_REGISTRY_URL/$clean-architecture-backend:${version} .' + } + } + } + + } + +} \ No newline at end of file From 868b4918bf873977f54235fcd9971c9c8e5c1ccd Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 18:33:49 +0100 Subject: [PATCH 11/65] subida --- CleanArchitecture/Pro.Jenkinsfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 112048b..e5ec7b9 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -29,4 +29,5 @@ pipeline { } -} \ No newline at end of file +} + From 8108b0be2cc1bd1080507ffbd4ffc4e0379c0590 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 18:36:26 +0100 Subject: [PATCH 12/65] gfd --- .../Jenkinsfiles/Pro.Jenkinsfile | 32 ------------------- 1 file changed, 32 deletions(-) delete mode 100644 CleanArchitecture/Jenkinsfiles/Pro.Jenkinsfile diff --git a/CleanArchitecture/Jenkinsfiles/Pro.Jenkinsfile b/CleanArchitecture/Jenkinsfiles/Pro.Jenkinsfile deleted file mode 100644 index 4d146b1..0000000 --- a/CleanArchitecture/Jenkinsfiles/Pro.Jenkinsfile +++ /dev/null @@ -1,32 +0,0 @@ -pipeline { - - agent any - - envirnment { - DOCKER_REGISTRY_URL = credentials('docker-registry-url') - DOCKER_REGISTRY_USER = credentials('docker-registry-user') - DOCKER_REGISTRY_PASSWORD = credentials('docker-registry-password') - ASP_ENVIRONMENT = 'Production' - } - - stages { - - stage ('Checkout') { - steps { - checkout scm - } - } - - stage ('Build') { - steps { - script { - def version = "0.0.${env.BUILD_NUMBER}" - - echo 'docker build -t $DOCKER_REGISTRY_URL/$clean-architecture-backend:${version} .' - } - } - } - - } - -} \ No newline at end of file From db4bba445657dbbdb062139e6d67955375151ecd Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 18:40:25 +0100 Subject: [PATCH 13/65] ' por " --- CleanArchitecture/Pro.Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index e5ec7b9..21587b9 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -22,7 +22,7 @@ pipeline { script { def version = "0.0.${env.BUILD_NUMBER}" - echo 'docker build -t $DOCKER_REGISTRY_URL/$clean-architecture-backend:${version} .' + echo "docker build -t $DOCKER_REGISTRY_URL/clean-architecture-backend:${version} ." } } } From 6fc82a45ffd37972093d2ee66fbaaf2f53320dd0 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 18:45:19 +0100 Subject: [PATCH 14/65] subida con test que falla --- .../Queries/GetVideosListQueryHandlerXUnitTests.cs | 2 +- CleanArchitecture/CleanArchitecture.sln | 7 ++++++- CleanArchitecture/Pro.Jenkinsfile | 10 +++++++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/CleanArchitecture/CleanArchitecture.Application.UnitTests/Features/Video/Queries/GetVideosListQueryHandlerXUnitTests.cs b/CleanArchitecture/CleanArchitecture.Application.UnitTests/Features/Video/Queries/GetVideosListQueryHandlerXUnitTests.cs index c10534c..1fb47a6 100644 --- a/CleanArchitecture/CleanArchitecture.Application.UnitTests/Features/Video/Queries/GetVideosListQueryHandlerXUnitTests.cs +++ b/CleanArchitecture/CleanArchitecture.Application.UnitTests/Features/Video/Queries/GetVideosListQueryHandlerXUnitTests.cs @@ -37,7 +37,7 @@ namespace CleanArchitecture.Application.UnitTests.Features.Video.Queries var result = await handler.Handle(request, CancellationToken.None); result.ShouldBeOfType>(); - result.Count.ShouldBe(1); + result.Count.ShouldBe(8); } } } diff --git a/CleanArchitecture/CleanArchitecture.sln b/CleanArchitecture/CleanArchitecture.sln index 842b34c..2c2e2d0 100644 --- a/CleanArchitecture/CleanArchitecture.sln +++ b/CleanArchitecture/CleanArchitecture.sln @@ -25,7 +25,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CleanArchitecture.Applicati EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CleanArchitecture.Identity", "CleanArchitecture.Identity\CleanArchitecture.Identity.csproj", "{2D1CFE96-C41D-4EFC-9DBA-10249988D9FF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CleanArchitecture.Application.UnitTests", "CleanArchitecture.Application.UnitTests\CleanArchitecture.Application.UnitTests.csproj", "{CF5179BD-2D75-4CEF-BE42-EFC20EEE6021}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CleanArchitecture.Application.UnitTests", "CleanArchitecture.Application.UnitTests\CleanArchitecture.Application.UnitTests.csproj", "{CF5179BD-2D75-4CEF-BE42-EFC20EEE6021}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "JenkinsFiles", "JenkinsFiles", "{75B368EE-F27E-476E-9406-C555CEA42B1C}" + ProjectSection(SolutionItems) = preProject + Pro.Jenkinsfile = Pro.Jenkinsfile + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 21587b9..471be09 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -10,6 +10,14 @@ pipeline { } stages { + + stage ('Unit Tests') { + steps { + script { + sh 'dotnet test ./CleanArchitecture/CleanArchitecture.Application.UnitTests' + } + } + } stage ('Checkout') { steps { @@ -27,7 +35,7 @@ pipeline { } } - } + } //stages } From a0c6da36debf7d5c3fb28b8da8acaf90467f1035 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 18:46:28 +0100 Subject: [PATCH 15/65] subida con tests que no fallan --- .../Video/Queries/GetVideosListQueryHandlerXUnitTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/CleanArchitecture.Application.UnitTests/Features/Video/Queries/GetVideosListQueryHandlerXUnitTests.cs b/CleanArchitecture/CleanArchitecture.Application.UnitTests/Features/Video/Queries/GetVideosListQueryHandlerXUnitTests.cs index 1fb47a6..c10534c 100644 --- a/CleanArchitecture/CleanArchitecture.Application.UnitTests/Features/Video/Queries/GetVideosListQueryHandlerXUnitTests.cs +++ b/CleanArchitecture/CleanArchitecture.Application.UnitTests/Features/Video/Queries/GetVideosListQueryHandlerXUnitTests.cs @@ -37,7 +37,7 @@ namespace CleanArchitecture.Application.UnitTests.Features.Video.Queries var result = await handler.Handle(request, CancellationToken.None); result.ShouldBeOfType>(); - result.Count.ShouldBe(8); + result.Count.ShouldBe(1); } } } From 04f0b3d37680c8cd0ee94f2c15e16da5bbba4d0c Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 18:57:02 +0100 Subject: [PATCH 16/65] prueba build y push de docker desde jenkinsfile --- CleanArchitecture/Pro.Jenkinsfile | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 471be09..0774f2a 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -25,15 +25,24 @@ pipeline { } } - stage ('Build') { - steps { - script { - def version = "0.0.${env.BUILD_NUMBER}" - - echo "docker build -t $DOCKER_REGISTRY_URL/clean-architecture-backend:${version} ." - } - } - } + stage ('Build and Push') { + steps { + script { + def version = "0.0.${env.BUILD_NUMBER}" + // Inicia sesión en el Docker Registry + sh "echo ${env.DOCKER_REGISTRY_PASSWORD} | docker login ${env.DOCKER_REGISTRY_URL} -u ${env.DOCKER_REGISTRY_USER} --password-stdin" + + // Construye la imagen Docker con el argumento de build para el entorno y etiquétala + sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${env.DOCKER_REGISTRY_URL}/clean-architecture-backend:${version} ." + + // Sube la imagen al Docker Registry + sh "docker push ${env.DOCKER_REGISTRY_URL}/clean-architecture-backend:${version}" + + // Cierra sesión en el Docker Registry + sh "docker logout ${env.DOCKER_REGISTRY_URL}" + } + } + } } //stages From d0b551b68693eeeaacff65f07acd061a987e63d9 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:03:31 +0100 Subject: [PATCH 17/65] prueba para debug --- CleanArchitecture/Pro.Jenkinsfile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 0774f2a..a262ff4 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -3,9 +3,12 @@ pipeline { agent any environment { - DOCKER_REGISTRY_URL = credentials('docker-registry-url') - DOCKER_REGISTRY_USER = credentials('docker-registry-user') - DOCKER_REGISTRY_PASSWORD = credentials('docker-registry-password') + //DOCKER_REGISTRY_URL = credentials('docker-registry-url') + //DOCKER_REGISTRY_USER = credentials('docker-registry-user') + //DOCKER_REGISTRY_PASSWORD = credentials('docker-registry-password') + DOCKER_REGISTRY_URL = https://dockerregistry.alexdev.es + DOCKER_REGISTRY_USER = alejandro + DOCKER_REGISTRY_PASSWORD = KhACw2yCBFbA$K7N ASP_ENVIRONMENT = 'Production' } From 0559ae7f765e782c4408d93f2622e75cc754cf0e Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:05:39 +0100 Subject: [PATCH 18/65] asd --- CleanArchitecture/Pro.Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index a262ff4..07cc069 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -6,9 +6,9 @@ pipeline { //DOCKER_REGISTRY_URL = credentials('docker-registry-url') //DOCKER_REGISTRY_USER = credentials('docker-registry-user') //DOCKER_REGISTRY_PASSWORD = credentials('docker-registry-password') - DOCKER_REGISTRY_URL = https://dockerregistry.alexdev.es - DOCKER_REGISTRY_USER = alejandro - DOCKER_REGISTRY_PASSWORD = KhACw2yCBFbA$K7N + DOCKER_REGISTRY_URL = 'https://dockerregistry.alexdev.es' + DOCKER_REGISTRY_USER = 'alejandro' + DOCKER_REGISTRY_PASSWORD = 'KhACw2yCBFbA$K7N' ASP_ENVIRONMENT = 'Production' } From 0d4c7673d9b0668e5bc7b9c7ab73261aad8aefb0 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:10:50 +0100 Subject: [PATCH 19/65] qwe --- CleanArchitecture/Pro.Jenkinsfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 07cc069..d096479 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -33,7 +33,8 @@ pipeline { script { def version = "0.0.${env.BUILD_NUMBER}" // Inicia sesión en el Docker Registry - sh "echo ${env.DOCKER_REGISTRY_PASSWORD} | docker login ${env.DOCKER_REGISTRY_URL} -u ${env.DOCKER_REGISTRY_USER} --password-stdin" + echo "docker login ${env.DOCKER_REGISTRY_URL} -u ${env.DOCKER_REGISTRY_USER} -p ${DOCKER_REGISTRY_PASSWORD}" + sh "docker login ${env.DOCKER_REGISTRY_URL} -u ${env.DOCKER_REGISTRY_USER} -p ${DOCKER_REGISTRY_PASSWORD}" // Construye la imagen Docker con el argumento de build para el entorno y etiquétala sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${env.DOCKER_REGISTRY_URL}/clean-architecture-backend:${version} ." From 2e565c5df9f2e76153582926ced202259ef3a60b Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:12:33 +0100 Subject: [PATCH 20/65] sdf --- CleanArchitecture/Pro.Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index d096479..17631b5 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -6,7 +6,7 @@ pipeline { //DOCKER_REGISTRY_URL = credentials('docker-registry-url') //DOCKER_REGISTRY_USER = credentials('docker-registry-user') //DOCKER_REGISTRY_PASSWORD = credentials('docker-registry-password') - DOCKER_REGISTRY_URL = 'https://dockerregistry.alexdev.es' + DOCKER_REGISTRY_URL = 'dockerregistry.alexdev.es' DOCKER_REGISTRY_USER = 'alejandro' DOCKER_REGISTRY_PASSWORD = 'KhACw2yCBFbA$K7N' ASP_ENVIRONMENT = 'Production' From 09cbf8a976eedd210b11096e731934cb6e74d35f Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:16:38 +0100 Subject: [PATCH 21/65] testttt --- CleanArchitecture/Pro.Jenkinsfile | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 17631b5..a6cac7f 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -3,12 +3,10 @@ pipeline { agent any environment { - //DOCKER_REGISTRY_URL = credentials('docker-registry-url') + DOCKER_REGISTRY_URL = credentials('docker-registry-url') //DOCKER_REGISTRY_USER = credentials('docker-registry-user') //DOCKER_REGISTRY_PASSWORD = credentials('docker-registry-password') - DOCKER_REGISTRY_URL = 'dockerregistry.alexdev.es' - DOCKER_REGISTRY_USER = 'alejandro' - DOCKER_REGISTRY_PASSWORD = 'KhACw2yCBFbA$K7N' + ASP_ENVIRONMENT = 'Production' } @@ -28,22 +26,17 @@ pipeline { } } - stage ('Build and Push') { + stage ('Push to Docker Registry') { steps { script { def version = "0.0.${env.BUILD_NUMBER}" - // Inicia sesión en el Docker Registry - echo "docker login ${env.DOCKER_REGISTRY_URL} -u ${env.DOCKER_REGISTRY_USER} -p ${DOCKER_REGISTRY_PASSWORD}" - sh "docker login ${env.DOCKER_REGISTRY_URL} -u ${env.DOCKER_REGISTRY_USER} -p ${DOCKER_REGISTRY_PASSWORD}" - - // Construye la imagen Docker con el argumento de build para el entorno y etiquétala - sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${env.DOCKER_REGISTRY_URL}/clean-architecture-backend:${version} ." - - // Sube la imagen al Docker Registry - sh "docker push ${env.DOCKER_REGISTRY_URL}/clean-architecture-backend:${version}" - - // Cierra sesión en el Docker Registry - sh "docker logout ${env.DOCKER_REGISTRY_URL}" + // Utiliza las credenciales de Docker para subir la imagen + docker.withRegistry(${DOCKER_REGISTRY_URL}, 'dockerregistryalexdev') { + // Etiqueta la imagen para Docker Registry + sh "docker tag clean-architecture-backend:${version} dockerregistry.alexdev.es/clean-architecture-backend:${version}" + // Sube la imagen a Docker Registry + sh "docker push dockerregistry.alexdev.es/clean-architecture-backend:${version}" + } } } } From e085398970de239a07ffe81d719130e03663d929 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:19:58 +0100 Subject: [PATCH 22/65] ert --- CleanArchitecture/Pro.Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index a6cac7f..a49bbc9 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -31,7 +31,7 @@ pipeline { script { def version = "0.0.${env.BUILD_NUMBER}" // Utiliza las credenciales de Docker para subir la imagen - docker.withRegistry(${DOCKER_REGISTRY_URL}, 'dockerregistryalexdev') { + docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { // Etiqueta la imagen para Docker Registry sh "docker tag clean-architecture-backend:${version} dockerregistry.alexdev.es/clean-architecture-backend:${version}" // Sube la imagen a Docker Registry From d3453430d8b5a7100409e86c6497d9a0b9143b6f Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:25:20 +0100 Subject: [PATCH 23/65] nueva subida tras darle permisos al usuario jenkins en el grupo docker sudo usermod -aG docker jenkins sudo systemctl restart jenkins sudo systemctl restart docker --- CleanArchitecture/Pro.Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index a49bbc9..a6cac7f 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -31,7 +31,7 @@ pipeline { script { def version = "0.0.${env.BUILD_NUMBER}" // Utiliza las credenciales de Docker para subir la imagen - docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { + docker.withRegistry(${DOCKER_REGISTRY_URL}, 'dockerregistryalexdev') { // Etiqueta la imagen para Docker Registry sh "docker tag clean-architecture-backend:${version} dockerregistry.alexdev.es/clean-architecture-backend:${version}" // Sube la imagen a Docker Registry From 5038db2d0dbe78832d4bbca1440633359c5bd269 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:26:48 +0100 Subject: [PATCH 24/65] sdf --- CleanArchitecture/Pro.Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index a6cac7f..a49bbc9 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -31,7 +31,7 @@ pipeline { script { def version = "0.0.${env.BUILD_NUMBER}" // Utiliza las credenciales de Docker para subir la imagen - docker.withRegistry(${DOCKER_REGISTRY_URL}, 'dockerregistryalexdev') { + docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { // Etiqueta la imagen para Docker Registry sh "docker tag clean-architecture-backend:${version} dockerregistry.alexdev.es/clean-architecture-backend:${version}" // Sube la imagen a Docker Registry From ee12c90c4cdc0946c839af49deef41ff76a57878 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:30:43 +0100 Subject: [PATCH 25/65] dfg --- CleanArchitecture/Pro.Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index a49bbc9..c7b620f 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -30,6 +30,7 @@ pipeline { steps { script { def version = "0.0.${env.BUILD_NUMBER}" + sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t clean-architecture-pro:${version} ." // Utiliza las credenciales de Docker para subir la imagen docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { // Etiqueta la imagen para Docker Registry From d175e5f06f8b57b27df83a54be7ded99462ca52e Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:32:59 +0100 Subject: [PATCH 26/65] sdfe --- CleanArchitecture/Pro.Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index c7b620f..a16ddf1 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -30,7 +30,7 @@ pipeline { steps { script { def version = "0.0.${env.BUILD_NUMBER}" - sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t clean-architecture-pro:${version} ." + sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t clean-architecture-pro:${version} ./CleanArchitecture/" // Utiliza las credenciales de Docker para subir la imagen docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { // Etiqueta la imagen para Docker Registry From 56e42892cf08c6640c13c182b5cc66a04f8ba5f8 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:36:22 +0100 Subject: [PATCH 27/65] listar images --- CleanArchitecture/Pro.Jenkinsfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index a16ddf1..5595fb8 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -31,6 +31,9 @@ pipeline { script { def version = "0.0.${env.BUILD_NUMBER}" sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t clean-architecture-pro:${version} ./CleanArchitecture/" + + sh "docker images" + // Utiliza las credenciales de Docker para subir la imagen docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { // Etiqueta la imagen para Docker Registry From 216b56c118abc4984e57a1f4693c1ff3a710d731 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:40:52 +0100 Subject: [PATCH 28/65] sdfgergwdf --- CleanArchitecture/Pro.Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 5595fb8..de08a83 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -30,7 +30,7 @@ pipeline { steps { script { def version = "0.0.${env.BUILD_NUMBER}" - sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t clean-architecture-pro:${version} ./CleanArchitecture/" + sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t clean-architecture-backend:${version} ./CleanArchitecture/" sh "docker images" From 3b325481c9e8af3d6058b59d4f29e4b072126326 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:52:42 +0100 Subject: [PATCH 29/65] borrado de imagenes viejas --- CleanArchitecture/Pro.Jenkinsfile | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index de08a83..77a1bad 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -44,6 +44,26 @@ pipeline { } } } + + stage ('Clean Old Docker Images') { + steps { + script { + def currentVersion = env.BUILD_NUMBER.toInteger() + def deleteUntilVersion = currentVersion - 3 + for (int i = 1; i <= deleteUntilVersion; i++) { + def tag = "0.0.${i}" + + // Obtener el Docker-Content-Digest + def digest = sh(script: "curl -s -H \"Accept: application/vnd.docker.distribution.manifest.v2+json\" -X GET -u ${DOCKER_REGISTRY_USER}:${DOCKER_REGISTRY_PASSWORD} https://${DOCKER_REGISTRY_URL}/v2/clean-architecture-backend/manifests/${tag} | jq -r '.config.digest'", returnStdout: true).trim() + + // Eliminar la imagen usando el Docker-Content-Digest obtenido + sh "curl -s -X DELETE -u ${DOCKER_REGISTRY_USER}:${DOCKER_REGISTRY_PASSWORD} https://${DOCKER_REGISTRY_URL}/v2/clean-architecture-backend/manifests/${digest}" + + echo "Eliminada la versión ${tag} con digest ${digest}" + } + } + } + } } //stages From b1d392e085067aa0b9bc05d9e0e70f6c2c1a8428 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 19:56:35 +0100 Subject: [PATCH 30/65] sdfrftgh --- CleanArchitecture/Pro.Jenkinsfile | 37 ++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 77a1bad..c84e8ec 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -26,21 +26,33 @@ pipeline { } } - stage ('Push to Docker Registry') { + + stage ('Push to Docker Registry') { steps { script { def version = "0.0.${env.BUILD_NUMBER}" - sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t clean-architecture-backend:${version} ./CleanArchitecture/" + def imageName = "clean-architecture-backend:${version}" + def fullImageName = "${DOCKER_REGISTRY_URL}/${imageName}" - sh "docker images" + // Construir la imagen + sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" - // Utiliza las credenciales de Docker para subir la imagen + // Etiqueta la imagen para Docker Registry y la sube docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { - // Etiqueta la imagen para Docker Registry - sh "docker tag clean-architecture-backend:${version} dockerregistry.alexdev.es/clean-architecture-backend:${version}" - // Sube la imagen a Docker Registry - sh "docker push dockerregistry.alexdev.es/clean-architecture-backend:${version}" + sh "docker tag ${imageName} ${fullImageName}" + sh "docker push ${fullImageName}" } + + // Guardar el nombre completo de la imagen para su uso en etapas posteriores + env.FULL_IMAGE_NAME = fullImageName + } + } + } + stage ('Clean Local Docker Image') { + steps { + script { + // Eliminar la imagen del agente de Jenkins + sh "docker rmi ${env.FULL_IMAGE_NAME}" } } } @@ -52,18 +64,21 @@ pipeline { def deleteUntilVersion = currentVersion - 3 for (int i = 1; i <= deleteUntilVersion; i++) { def tag = "0.0.${i}" - + // Obtener el Docker-Content-Digest def digest = sh(script: "curl -s -H \"Accept: application/vnd.docker.distribution.manifest.v2+json\" -X GET -u ${DOCKER_REGISTRY_USER}:${DOCKER_REGISTRY_PASSWORD} https://${DOCKER_REGISTRY_URL}/v2/clean-architecture-backend/manifests/${tag} | jq -r '.config.digest'", returnStdout: true).trim() - + // Eliminar la imagen usando el Docker-Content-Digest obtenido sh "curl -s -X DELETE -u ${DOCKER_REGISTRY_USER}:${DOCKER_REGISTRY_PASSWORD} https://${DOCKER_REGISTRY_URL}/v2/clean-architecture-backend/manifests/${digest}" - + echo "Eliminada la versión ${tag} con digest ${digest}" } } } } + + + } //stages From 7cd542306f4f9f7b69c39d529ab46892a4c3601c Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 20:02:59 +0100 Subject: [PATCH 31/65] dhgfhdf --- CleanArchitecture/Pro.Jenkinsfile | 71 ++++++++++++------------------- 1 file changed, 28 insertions(+), 43 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index c84e8ec..19d94dd 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -1,53 +1,50 @@ pipeline { + agent any - agent any + environment { + ASP_ENVIRONMENT = 'Production' + } - environment { - DOCKER_REGISTRY_URL = credentials('docker-registry-url') - //DOCKER_REGISTRY_USER = credentials('docker-registry-user') - //DOCKER_REGISTRY_PASSWORD = credentials('docker-registry-password') - - ASP_ENVIRONMENT = 'Production' - } - - stages { - - stage ('Unit Tests') { + stages { + stage ('Unit Tests') { steps { script { sh 'dotnet test ./CleanArchitecture/CleanArchitecture.Application.UnitTests' } } } - - stage ('Checkout') { - steps { - checkout scm - } - } + stage ('Checkout') { + steps { + checkout scm + } + } stage ('Push to Docker Registry') { steps { script { def version = "0.0.${env.BUILD_NUMBER}" def imageName = "clean-architecture-backend:${version}" - def fullImageName = "${DOCKER_REGISTRY_URL}/${imageName}" - - // Construir la imagen + // Aquí usamos las credenciales directamente en el paso withCredentials más abajo + + // Construir la imagen localmente sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" - // Etiqueta la imagen para Docker Registry y la sube - docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { - sh "docker tag ${imageName} ${fullImageName}" - sh "docker push ${fullImageName}" + // Iniciar sesión en el Docker Registry y subir la imagen + withCredentials([string(credentialsId: 'docker-registry-url', variable: 'DOCKER_REGISTRY_URL'), + usernamePassword(credentialsId: 'docker-registry-creds', usernameVariable: 'DOCKER_REGISTRY_USER', passwordVariable: 'DOCKER_REGISTRY_PASSWORD')]) { + def fullImageName = "${DOCKER_REGISTRY_URL}/${imageName}" + docker.withRegistry("${DOCKER_REGISTRY_URL}", 'docker-registry-creds') { + sh "docker tag ${imageName} ${fullImageName}" + sh "docker push ${fullImageName}" + } + // Guardamos el nombre completo de la imagen para usarlo en etapas posteriores + env.FULL_IMAGE_NAME = fullImageName } - - // Guardar el nombre completo de la imagen para su uso en etapas posteriores - env.FULL_IMAGE_NAME = fullImageName } } } + stage ('Clean Local Docker Image') { steps { script { @@ -64,23 +61,11 @@ pipeline { def deleteUntilVersion = currentVersion - 3 for (int i = 1; i <= deleteUntilVersion; i++) { def tag = "0.0.${i}" - - // Obtener el Docker-Content-Digest - def digest = sh(script: "curl -s -H \"Accept: application/vnd.docker.distribution.manifest.v2+json\" -X GET -u ${DOCKER_REGISTRY_USER}:${DOCKER_REGISTRY_PASSWORD} https://${DOCKER_REGISTRY_URL}/v2/clean-architecture-backend/manifests/${tag} | jq -r '.config.digest'", returnStdout: true).trim() - - // Eliminar la imagen usando el Docker-Content-Digest obtenido - sh "curl -s -X DELETE -u ${DOCKER_REGISTRY_USER}:${DOCKER_REGISTRY_PASSWORD} https://${DOCKER_REGISTRY_URL}/v2/clean-architecture-backend/manifests/${digest}" - - echo "Eliminada la versión ${tag} con digest ${digest}" + // Este proceso requiere interacción con la API del Docker Registry, + // asegúrate de tener el proceso de obtención de digest y eliminación correctamente configurado. } } } } - - - - - - } //stages + } //stages } - From 22f43a196fee3a770a7cf4b0ab0dd1e73285e6d1 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 20:05:12 +0100 Subject: [PATCH 32/65] sdfhfgbc --- CleanArchitecture/Pro.Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 19d94dd..1a25208 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -32,9 +32,9 @@ pipeline { // Iniciar sesión en el Docker Registry y subir la imagen withCredentials([string(credentialsId: 'docker-registry-url', variable: 'DOCKER_REGISTRY_URL'), - usernamePassword(credentialsId: 'docker-registry-creds', usernameVariable: 'DOCKER_REGISTRY_USER', passwordVariable: 'DOCKER_REGISTRY_PASSWORD')]) { + usernamePassword(credentialsId: 'dockerregistryalexdev', usernameVariable: 'DOCKER_REGISTRY_USER', passwordVariable: 'DOCKER_REGISTRY_PASSWORD')]) { def fullImageName = "${DOCKER_REGISTRY_URL}/${imageName}" - docker.withRegistry("${DOCKER_REGISTRY_URL}", 'docker-registry-creds') { + docker.withRegistry("${DOCKER_REGISTRY_URL}", 'dockerregistryalexdev') { sh "docker tag ${imageName} ${fullImageName}" sh "docker push ${fullImageName}" } From 8c670b3e65a2e9e7754a39189de2c6f9e88066a9 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 20:09:39 +0100 Subject: [PATCH 33/65] dfg --- CleanArchitecture/Pro.Jenkinsfile | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 1a25208..84bded0 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -25,21 +25,19 @@ pipeline { script { def version = "0.0.${env.BUILD_NUMBER}" def imageName = "clean-architecture-backend:${version}" - // Aquí usamos las credenciales directamente en el paso withCredentials más abajo - // Construir la imagen localmente - sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" - - // Iniciar sesión en el Docker Registry y subir la imagen - withCredentials([string(credentialsId: 'docker-registry-url', variable: 'DOCKER_REGISTRY_URL'), - usernamePassword(credentialsId: 'dockerregistryalexdev', usernameVariable: 'DOCKER_REGISTRY_USER', passwordVariable: 'DOCKER_REGISTRY_PASSWORD')]) { - def fullImageName = "${DOCKER_REGISTRY_URL}/${imageName}" - docker.withRegistry("${DOCKER_REGISTRY_URL}", 'dockerregistryalexdev') { + withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { + def fullImageName = "${REGISTRY_URL}/${imageName}" + echo "FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME " + echo "Full Image Name: ${fullImageName}" + // Construir la imagen + sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" + + // Login y Push usando withDockerRegistry + docker.withRegistry("${REGISTRY_URL}", 'dockerregistryalexdev') { sh "docker tag ${imageName} ${fullImageName}" sh "docker push ${fullImageName}" } - // Guardamos el nombre completo de la imagen para usarlo en etapas posteriores - env.FULL_IMAGE_NAME = fullImageName } } } From 5b2858e84d1bb42ae09eed2470b7bf4c67c43a76 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 20:14:54 +0100 Subject: [PATCH 34/65] ? --- CleanArchitecture/Pro.Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 84bded0..a106cb1 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -29,7 +29,7 @@ pipeline { withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { def fullImageName = "${REGISTRY_URL}/${imageName}" echo "FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME " - echo "Full Image Name: ${fullImageName}" + echo 'Full Image Name: ${fullImageName}' // Construir la imagen sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" From 797096e18f010de973050e66b134477730ef9034 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 20:18:17 +0100 Subject: [PATCH 35/65] trhgd --- CleanArchitecture/Pro.Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index a106cb1..a7f4722 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -27,14 +27,14 @@ pipeline { def imageName = "clean-architecture-backend:${version}" withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { - def fullImageName = "${REGISTRY_URL}/${imageName}" + def fullImageName = "[string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]/${imageName}" echo "FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME " echo 'Full Image Name: ${fullImageName}' // Construir la imagen sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" // Login y Push usando withDockerRegistry - docker.withRegistry("${REGISTRY_URL}", 'dockerregistryalexdev') { + docker.withRegistry("[string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]", 'dockerregistryalexdev') { sh "docker tag ${imageName} ${fullImageName}" sh "docker push ${fullImageName}" } From b7fd8ba010bf355f7b2435e446b3a35eda69ef0f Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 20:48:24 +0100 Subject: [PATCH 36/65] dsfvbc --- CleanArchitecture/Pro.Jenkinsfile | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index a7f4722..fc0e51c 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -29,7 +29,7 @@ pipeline { withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { def fullImageName = "[string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]/${imageName}" echo "FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME " - echo 'Full Image Name: ${fullImageName}' + echo "Full Image Name: ${fullImageName}" // Construir la imagen sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" @@ -43,27 +43,6 @@ pipeline { } } - stage ('Clean Local Docker Image') { - steps { - script { - // Eliminar la imagen del agente de Jenkins - sh "docker rmi ${env.FULL_IMAGE_NAME}" - } - } - } - - stage ('Clean Old Docker Images') { - steps { - script { - def currentVersion = env.BUILD_NUMBER.toInteger() - def deleteUntilVersion = currentVersion - 3 - for (int i = 1; i <= deleteUntilVersion; i++) { - def tag = "0.0.${i}" - // Este proceso requiere interacción con la API del Docker Registry, - // asegúrate de tener el proceso de obtención de digest y eliminación correctamente configurado. - } - } - } - } + } //stages } From 8468a7305fe2b72f88592f9f9ff8f7c7879edd8a Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 20:51:58 +0100 Subject: [PATCH 37/65] sdfbvghfntyhj --- CleanArchitecture/Pro.Jenkinsfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index fc0e51c..cfd41a7 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -27,16 +27,16 @@ pipeline { def imageName = "clean-architecture-backend:${version}" withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { - def fullImageName = "[string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]/${imageName}" + def fullImageName = "${REGISTRY_URL}/${imageName}" echo "FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME " echo "Full Image Name: ${fullImageName}" // Construir la imagen - sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" + //sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" - // Login y Push usando withDockerRegistry - docker.withRegistry("[string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]", 'dockerregistryalexdev') { - sh "docker tag ${imageName} ${fullImageName}" - sh "docker push ${fullImageName}" + //// Login y Push usando withDockerRegistry + //docker.withRegistry("[string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]", 'dockerregistryalexdev') { + //sh "docker tag ${imageName} ${fullImageName}" + //sh "docker push ${fullImageName}" } } } From 477489c9dbae13ea001009adeb5fa36c175cef40 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 20:52:53 +0100 Subject: [PATCH 38/65] cvb --- CleanArchitecture/Pro.Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index cfd41a7..a36ec1d 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -37,7 +37,7 @@ pipeline { //docker.withRegistry("[string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]", 'dockerregistryalexdev') { //sh "docker tag ${imageName} ${fullImageName}" //sh "docker push ${fullImageName}" - } + //} } } } From 5237c42f28805b03305f3ce4d4814dcfdb2ac089 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 20:54:21 +0100 Subject: [PATCH 39/65] rdhfb --- CleanArchitecture/Pro.Jenkinsfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index a36ec1d..f1a72cd 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -31,13 +31,13 @@ pipeline { echo "FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME " echo "Full Image Name: ${fullImageName}" // Construir la imagen - //sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" + sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" //// Login y Push usando withDockerRegistry - //docker.withRegistry("[string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]", 'dockerregistryalexdev') { - //sh "docker tag ${imageName} ${fullImageName}" - //sh "docker push ${fullImageName}" - //} + docker.withRegistry(${REGISTRY_URL}, 'dockerregistryalexdev') { + sh "docker tag ${imageName} ${fullImageName}" + sh "docker push ${fullImageName}" + } } } } From 07fc85dfcd4015fe84adbe5fd174bea7e40c0896 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 20:57:20 +0100 Subject: [PATCH 40/65] werwe --- CleanArchitecture/Pro.Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index f1a72cd..e1eed5b 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -34,7 +34,7 @@ pipeline { sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" //// Login y Push usando withDockerRegistry - docker.withRegistry(${REGISTRY_URL}, 'dockerregistryalexdev') { + docker.withRegistry("${REGISTRY_URL}", 'dockerregistryalexdev') { sh "docker tag ${imageName} ${fullImageName}" sh "docker push ${fullImageName}" } From df98a1da3a78ea5288e4258d8bdc245ea354cfb4 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 20:59:36 +0100 Subject: [PATCH 41/65] gyjhrfdt --- CleanArchitecture/Pro.Jenkinsfile | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index e1eed5b..8fcdc1e 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -25,16 +25,18 @@ pipeline { script { def version = "0.0.${env.BUILD_NUMBER}" def imageName = "clean-architecture-backend:${version}" - + withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { - def fullImageName = "${REGISTRY_URL}/${imageName}" - echo "FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME || FULL IMAGE NAME " + // Nota: Aquí no es necesaria la interpolación directa de REGISTRY_URL + def fullImageName = "${env.REGISTRY_URL}/${imageName}" echo "Full Image Name: ${fullImageName}" + // Construir la imagen - sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" - - //// Login y Push usando withDockerRegistry - docker.withRegistry("${REGISTRY_URL}", 'dockerregistryalexdev') { + sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" + + // Login y Push usando withDockerRegistry + docker.withRegistry("${env.REGISTRY_URL}", 'dockerregistryalexdev') { + // Asegúrate de que el tag y push se realizan correctamente sh "docker tag ${imageName} ${fullImageName}" sh "docker push ${fullImageName}" } From 93ded46520b3e33207523663c0f861c5374244c4 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 21:04:15 +0100 Subject: [PATCH 42/65] hasta las narices de los secretos --- CleanArchitecture/Pro.Jenkinsfile | 41 ++++++++++++++++--------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 8fcdc1e..f134339 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -20,30 +20,31 @@ pipeline { } } - stage ('Push to Docker Registry') { - steps { - script { - def version = "0.0.${env.BUILD_NUMBER}" - def imageName = "clean-architecture-backend:${version}" - - withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { - // Nota: Aquí no es necesaria la interpolación directa de REGISTRY_URL - def fullImageName = "${env.REGISTRY_URL}/${imageName}" - echo "Full Image Name: ${fullImageName}" - - // Construir la imagen - sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" - - // Login y Push usando withDockerRegistry - docker.withRegistry("${env.REGISTRY_URL}", 'dockerregistryalexdev') { - // Asegúrate de que el tag y push se realizan correctamente - sh "docker tag ${imageName} ${fullImageName}" - sh "docker push ${fullImageName}" + stages { + stage ('Push to Docker Registry') { + steps { + script { + def version = "0.0.${env.BUILD_NUMBER}" + def imageName = "clean-architecture-backend:${version}" + + // Usando withCredentials para manejar el REGISTRY_URL + withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { + // Aquí usamos env.REGISTRY_URL para asegurarnos de que estamos usando la variable de entorno correcta + def fullImageName = "${env.REGISTRY_URL}/${imageName}" + + // Construir la imagen + sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" + + // Iniciar sesión y subir la imagen + docker.withRegistry(env.REGISTRY_URL, 'dockerregistryalexdev') { + sh "docker tag ${imageName} ${fullImageName}" + sh "docker push ${fullImageName}" + } + } } } } } - } } //stages From 06f09cf83ba1288fcc9c5d1c1d0624de75dbbb7a Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 21:05:33 +0100 Subject: [PATCH 43/65] sdfhtrcxvnbm --- CleanArchitecture/Pro.Jenkinsfile | 36 +++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index f134339..08fe468 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -20,31 +20,31 @@ pipeline { } } - stages { - stage ('Push to Docker Registry') { - steps { - script { - def version = "0.0.${env.BUILD_NUMBER}" - def imageName = "clean-architecture-backend:${version}" + + stage ('Push to Docker Registry') { + steps { + script { + def version = "0.0.${env.BUILD_NUMBER}" + def imageName = "clean-architecture-backend:${version}" - // Usando withCredentials para manejar el REGISTRY_URL - withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { - // Aquí usamos env.REGISTRY_URL para asegurarnos de que estamos usando la variable de entorno correcta - def fullImageName = "${env.REGISTRY_URL}/${imageName}" + // Usando withCredentials para manejar el REGISTRY_URL + withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { + // Aquí usamos env.REGISTRY_URL para asegurarnos de que estamos usando la variable de entorno correcta + def fullImageName = "${env.REGISTRY_URL}/${imageName}" - // Construir la imagen - sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" + // Construir la imagen + sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" - // Iniciar sesión y subir la imagen - docker.withRegistry(env.REGISTRY_URL, 'dockerregistryalexdev') { - sh "docker tag ${imageName} ${fullImageName}" - sh "docker push ${fullImageName}" - } - } + // Iniciar sesión y subir la imagen + docker.withRegistry(env.REGISTRY_URL, 'dockerregistryalexdev') { + sh "docker tag ${imageName} ${fullImageName}" + sh "docker push ${fullImageName}" } } } } + } + } //stages From 7e7b8bde30d50bceec913fa89a73a8ef2074e8c3 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 21:07:31 +0100 Subject: [PATCH 44/65] gteazs --- CleanArchitecture/Pro.Jenkinsfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 08fe468..99729ad 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -37,7 +37,9 @@ pipeline { // Iniciar sesión y subir la imagen docker.withRegistry(env.REGISTRY_URL, 'dockerregistryalexdev') { + echo "Vamos a ejecutar el docker tag" sh "docker tag ${imageName} ${fullImageName}" + echo "Vamos a ejecutar el docker push" sh "docker push ${fullImageName}" } } From 75a86ea934e4a9c1e7ac7ad401d50adbb35c0540 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 21:11:46 +0100 Subject: [PATCH 45/65] gbncvb --- CleanArchitecture/Pro.Jenkinsfile | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 99729ad..ecc5bab 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -26,22 +26,20 @@ pipeline { script { def version = "0.0.${env.BUILD_NUMBER}" def imageName = "clean-architecture-backend:${version}" - - // Usando withCredentials para manejar el REGISTRY_URL - withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { - // Aquí usamos env.REGISTRY_URL para asegurarnos de que estamos usando la variable de entorno correcta - def fullImageName = "${env.REGISTRY_URL}/${imageName}" - + + withCredentials([ + string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL'), + usernamePassword(credentialsId: 'dockerregistryalexdev', usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_PASSWORD') + ]) { + def fullImageName = "${REGISTRY_URL}/${imageName}" + // Construir la imagen sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" - + // Iniciar sesión y subir la imagen - docker.withRegistry(env.REGISTRY_URL, 'dockerregistryalexdev') { - echo "Vamos a ejecutar el docker tag" - sh "docker tag ${imageName} ${fullImageName}" - echo "Vamos a ejecutar el docker push" - sh "docker push ${fullImageName}" - } + sh "echo ${REGISTRY_PASSWORD} | docker login ${REGISTRY_URL} -u ${REGISTRY_USER} --password-stdin" + sh "docker tag ${imageName} ${fullImageName}" + sh "docker push ${fullImageName}" } } } From 073b3bc2f8574ca710f9fd04c406f3332952509d Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 21:16:47 +0100 Subject: [PATCH 46/65] env.REGISTRY_URL --- CleanArchitecture/Pro.Jenkinsfile | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index ecc5bab..511e709 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -26,20 +26,22 @@ pipeline { script { def version = "0.0.${env.BUILD_NUMBER}" def imageName = "clean-architecture-backend:${version}" - - withCredentials([ - string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL'), - usernamePassword(credentialsId: 'dockerregistryalexdev', usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_PASSWORD') - ]) { - def fullImageName = "${REGISTRY_URL}/${imageName}" - + + // Usando withCredentials para manejar el REGISTRY_URL + withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { + // Aquí usamos env.REGISTRY_URL para asegurarnos de que estamos usando la variable de entorno correcta + def fullImageName = "env.REGISTRY_URL/${imageName}" + // Construir la imagen sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" - + // Iniciar sesión y subir la imagen - sh "echo ${REGISTRY_PASSWORD} | docker login ${REGISTRY_URL} -u ${REGISTRY_USER} --password-stdin" - sh "docker tag ${imageName} ${fullImageName}" - sh "docker push ${fullImageName}" + docker.withRegistry(env.REGISTRY_URL, 'dockerregistryalexdev') { + echo "Vamos a ejecutar el docker tag" + sh "docker tag ${imageName} ${fullImageName}" + echo "Vamos a ejecutar el docker push" + sh "docker push ${fullImageName}" + } } } } From 7473c4c8e419373acf63e931509b4601209eeaba Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 21:19:14 +0100 Subject: [PATCH 47/65] 5456 --- CleanArchitecture/Pro.Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 511e709..99729ad 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -30,7 +30,7 @@ pipeline { // Usando withCredentials para manejar el REGISTRY_URL withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { // Aquí usamos env.REGISTRY_URL para asegurarnos de que estamos usando la variable de entorno correcta - def fullImageName = "env.REGISTRY_URL/${imageName}" + def fullImageName = "${env.REGISTRY_URL}/${imageName}" // Construir la imagen sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" From 18795bfa1d269d6569859e265eb2a1e56e2b06e1 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 21:21:54 +0100 Subject: [PATCH 48/65] bvsdrtg --- CleanArchitecture/Pro.Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 99729ad..5890922 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -30,13 +30,13 @@ pipeline { // Usando withCredentials para manejar el REGISTRY_URL withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { // Aquí usamos env.REGISTRY_URL para asegurarnos de que estamos usando la variable de entorno correcta - def fullImageName = "${env.REGISTRY_URL}/${imageName}" + def fullImageName = "https://dockerregistry.alexdev.es/${imageName}" // Construir la imagen sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" // Iniciar sesión y subir la imagen - docker.withRegistry(env.REGISTRY_URL, 'dockerregistryalexdev') { + docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { echo "Vamos a ejecutar el docker tag" sh "docker tag ${imageName} ${fullImageName}" echo "Vamos a ejecutar el docker push" From eedf08925aaec270c7cfd429b21f907f06179a17 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 21:24:12 +0100 Subject: [PATCH 49/65] sdfsdfsdfsdf --- CleanArchitecture/Pro.Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 5890922..cd32da2 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -38,9 +38,9 @@ pipeline { // Iniciar sesión y subir la imagen docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { echo "Vamos a ejecutar el docker tag" - sh "docker tag ${imageName} ${fullImageName}" + sh "docker tag ${imageName} https://dockerregistry.alexdev.es/clean-architecture-backend:${version}" echo "Vamos a ejecutar el docker push" - sh "docker push ${fullImageName}" + sh "docker push https://dockerregistry.alexdev.es/clean-architecture-backend:${version}" } } } From 4fc05b8b614208680af7ba1bee9c2e413fa45a1b Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 21:28:25 +0100 Subject: [PATCH 50/65] sgbfgde --- CleanArchitecture/Pro.Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index cd32da2..a91a46e 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -38,9 +38,9 @@ pipeline { // Iniciar sesión y subir la imagen docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { echo "Vamos a ejecutar el docker tag" - sh "docker tag ${imageName} https://dockerregistry.alexdev.es/clean-architecture-backend:${version}" + sh "docker tag clean-architecture-backend:${version} dockerregistry.alexdev.es/clean-architecture-backend:${version}" echo "Vamos a ejecutar el docker push" - sh "docker push https://dockerregistry.alexdev.es/clean-architecture-backend:${version}" + sh "docker push dockerregistry.alexdev.es/clean-architecture-backend:${version}" } } } From 4061201ec787f30e9ad4e905c75266d4373d04c7 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 21:40:55 +0100 Subject: [PATCH 51/65] ???? --- CleanArchitecture/Pro.Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index a91a46e..7986010 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -30,17 +30,17 @@ pipeline { // Usando withCredentials para manejar el REGISTRY_URL withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { // Aquí usamos env.REGISTRY_URL para asegurarnos de que estamos usando la variable de entorno correcta - def fullImageName = "https://dockerregistry.alexdev.es/${imageName}" + def fullImageName = '$REGISTRY_URL/${imageName}" // Construir la imagen sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" // Iniciar sesión y subir la imagen - docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { + docker.withRegistry('env.REGISTRY_URL', 'dockerregistryalexdev') { echo "Vamos a ejecutar el docker tag" - sh "docker tag clean-architecture-backend:${version} dockerregistry.alexdev.es/clean-architecture-backend:${version}" + sh 'docker tag clean-architecture-backend:${version} $REGISTRY_URL/clean-architecture-backend:${version}' echo "Vamos a ejecutar el docker push" - sh "docker push dockerregistry.alexdev.es/clean-architecture-backend:${version}" + sh 'docker push $REGISTRY_URL/clean-architecture-backend:${version}' } } } From d8f15ee2240b660845fc87e63fff6fa5de3a605a Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 21:41:50 +0100 Subject: [PATCH 52/65] sdfewrfqwe --- CleanArchitecture/Pro.Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 7986010..38ad43a 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -30,7 +30,7 @@ pipeline { // Usando withCredentials para manejar el REGISTRY_URL withCredentials([string(credentialsId: 'docker-registry-url', variable: 'REGISTRY_URL')]) { // Aquí usamos env.REGISTRY_URL para asegurarnos de que estamos usando la variable de entorno correcta - def fullImageName = '$REGISTRY_URL/${imageName}" + def fullImageName = "https://dockerregistry.alexdev.es/${imageName}" // Construir la imagen sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" @@ -38,9 +38,9 @@ pipeline { // Iniciar sesión y subir la imagen docker.withRegistry('env.REGISTRY_URL', 'dockerregistryalexdev') { echo "Vamos a ejecutar el docker tag" - sh 'docker tag clean-architecture-backend:${version} $REGISTRY_URL/clean-architecture-backend:${version}' + sh "docker tag clean-architecture-backend:${version} dockerregistry.alexdev.es/clean-architecture-backend:${version}" echo "Vamos a ejecutar el docker push" - sh 'docker push $REGISTRY_URL/clean-architecture-backend:${version}' + sh "docker push dockerregistry.alexdev.es/clean-architecture-backend:${version}" } } } From 6b79c3bf699c9f5254423c2b3af3a072f92914aa Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 21:46:10 +0100 Subject: [PATCH 53/65] fffffff --- CleanArchitecture/Pro.Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 38ad43a..a91a46e 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -36,7 +36,7 @@ pipeline { sh "docker build --build-arg ENVIRONMENT=${env.ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" // Iniciar sesión y subir la imagen - docker.withRegistry('env.REGISTRY_URL', 'dockerregistryalexdev') { + docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { echo "Vamos a ejecutar el docker tag" sh "docker tag clean-architecture-backend:${version} dockerregistry.alexdev.es/clean-architecture-backend:${version}" echo "Vamos a ejecutar el docker push" From 59bf6f277c71c5ca0359aef43400478c6e6eb330 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 21:48:02 +0100 Subject: [PATCH 54/65] dfgdfgdfgfgdfgdfg --- CleanArchitecture/Pro.Jenkinsfile | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index a91a46e..add45e8 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -47,7 +47,19 @@ pipeline { } } + stage ('Clean Local Docker Image') { + steps { + script { + def version = "0.0.${env.BUILD_NUMBER}" + // Eliminar la imagen del agente de Jenkins + sh "docker rmi clean-architecture-backend:${version}" + } + } + } + + + } //stages } From 9a7f56b1f04d769f9e299089e30b2d95702f1a22 Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Tue, 12 Mar 2024 00:16:35 +0100 Subject: [PATCH 55/65] ejemplo para bola --- .../GetVideosListQueryHandlerXUnitTests.cs | 2 +- .../Mocks/MockVideoRepository.cs | 4 ++ CleanArchitecture/CleanArchitecture.sln | 1 + CleanArchitecture/kubernetes-deploy.yaml | 37 +++++++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 CleanArchitecture/kubernetes-deploy.yaml diff --git a/CleanArchitecture/CleanArchitecture.Application.UnitTests/Features/Video/Queries/GetVideosListQueryHandlerXUnitTests.cs b/CleanArchitecture/CleanArchitecture.Application.UnitTests/Features/Video/Queries/GetVideosListQueryHandlerXUnitTests.cs index c10534c..1fb47a6 100644 --- a/CleanArchitecture/CleanArchitecture.Application.UnitTests/Features/Video/Queries/GetVideosListQueryHandlerXUnitTests.cs +++ b/CleanArchitecture/CleanArchitecture.Application.UnitTests/Features/Video/Queries/GetVideosListQueryHandlerXUnitTests.cs @@ -37,7 +37,7 @@ namespace CleanArchitecture.Application.UnitTests.Features.Video.Queries var result = await handler.Handle(request, CancellationToken.None); result.ShouldBeOfType>(); - result.Count.ShouldBe(1); + result.Count.ShouldBe(8); } } } diff --git a/CleanArchitecture/CleanArchitecture.Application.UnitTests/Mocks/MockVideoRepository.cs b/CleanArchitecture/CleanArchitecture.Application.UnitTests/Mocks/MockVideoRepository.cs index 4a03542..9edc4f1 100644 --- a/CleanArchitecture/CleanArchitecture.Application.UnitTests/Mocks/MockVideoRepository.cs +++ b/CleanArchitecture/CleanArchitecture.Application.UnitTests/Mocks/MockVideoRepository.cs @@ -20,6 +20,10 @@ namespace CleanArchitecture.Application.UnitTests.Mocks .With(tr => tr.CreatedBy, "Alex") .Create() ); + videos.Add(fixture.Build