Blazor Client Side Online Store: Parte 2 - CI / CD



Hola Habr! Sigo haciendo tienda en línea en Blazor. En esta parte, hablaré sobre cómo configuré CI / CD para ello. Para más detalles, bienvenido a cat.

Contenido



Referencias


Código fuente
Imágenes de registro de Docker

Dockerfile


Agregue un Dockerfile con dicho contenido al proyecto del servidor que distribuirá nuestro SPA en Blazor



FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build WORKDIR /src COPY ["src/BlazorEShop.Spa.BlazorWasm/Server/BlazorEShop.Spa.BlazorWasm.Server.csproj", "src/BlazorEShop.Spa.BlazorWasm/Server/"] COPY ["src/BlazorEShop.Spa.BlazorWasm/Client/BlazorEShop.Spa.BlazorWasm.Client.csproj", "src/BlazorEShop.Spa.BlazorWasm/Client/"] RUN dotnet restore "src/BlazorEShop.Spa.BlazorWasm/Server/BlazorEShop.Spa.BlazorWasm.Server.csproj" COPY . . WORKDIR "/src/src/BlazorEShop.Spa.BlazorWasm/Server" RUN dotnet build "BlazorEShop.Spa.BlazorWasm.Server.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "BlazorEShop.Spa.BlazorWasm.Server.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "BlazorEShop.Spa.BlazorWasm.Server.dll"] 

Establecer variables de entorno para Gitlab


Vaya a la sección Configuración -> CI / CD de nuestro repositorio. y establecer las variables de entorno necesarias para su publicación en el Registro



  1. CI_REGISTRY_PATH: la ruta de acceso a nuestro registro (en mi caso register.hub.docker.com/victorcallidus)
  2. CI_REGISTRY_USER - nuestra cuenta de resitry
  3. CI_REGISTRY_PASSWORD - contraseña de nuestra cuenta de registro

Gitlab CI / CD


Conectamos los corredores compartidos o establecemos los suyos con la capacidad de construir Docker.



Agregue el archivo .gitlab-ci.yml con dichos contenidos al repositorio

 image: docker:19.03.1 variables: DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" BLAZOR_SPA_LATEST: ${CI_REGISTRY_PATH}blazor-eshop-spa-blazor:latest BLAZOR_SPA_IMG_TAG: ${CI_REGISTRY_PATH}blazor-eshop-spa-blazor:$CI_COMMIT_REF_SLUG services: - docker:19.03.1-dind stages: - deploy_latest - deploy_tag - test deploy_tag: stage: deploy_tag script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY_PATH - docker build -t $BLAZOR_SPA_IMG_TAG -f ./src/BlazorEShop.Spa.BlazorWasm/Server/Dockerfile . - docker push $BLAZOR_SPA_IMG_TAG only: - tags deploy_latest: stage: deploy_latest script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY_PATH - docker build -t $BLAZOR_SPA_LATEST -f ./src/BlazorEShop.Spa.BlazorWasm/Server/Dockerfile . - docker push $BLAZOR_SPA_LATEST only: - master test: image: mcr.microsoft.com/dotnet/core/sdk:3.1-buster stage: test script: - "dotnet test ./BlazorEShop.sln" 


CI_COMMIT_REF_SLUG: esta variable de entorno que Gitlab completa por sí misma. Si se trata de una confirmación regular, entonces el nombre de la rama se escribe aquí (maestro, desarrollador, etapa, etc.) si presiona la etiqueta, entonces el nombre de la etiqueta estará aquí. Por ejemplo, si presiona la etiqueta dev11, entonces CI_COMMIT_REF_SLUG = dev11.

Ejemplo de configuración de Docker-compose


Para ejecutar, por ejemplo, a través de docker-compose.yml, puede usar dicha configuración

 version: '3.4' services: blazoreshop.spa.blazorwasm.server: image: victorcallidus/blazor-eshop-spa-blazor:latest environment: - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=https://+:443;http://+:80 - ASPNETCORE_HTTPS_PORT=8003 - ASPNETCORE_Kestrel__Certificates__Default__Password=1234Qwert - ASPNETCORE_Kestrel__Certificates__Default__Path=/root/.aspnet/https/blazor-eshop-spa-blazor.pfx - SsoUri=https://localhost:8000 - ApiUri=https://localhost:8001 ports: # - "7003:80" - "8003:443" volumes: - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro 


Agradecimientos


Gracias
ilekarev
rusos Samovar
kxl
Alexnis
por errores encontrados en la serie de artículos

Source: https://habr.com/ru/post/484782/


All Articles