
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 fuenteImágenes de registro de DockerDockerfile
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

- CI_REGISTRY_PATH: la ruta de acceso a nuestro registro (en mi caso register.hub.docker.com/victorcallidus)
- CI_REGISTRY_USER - nuestra cuenta de resitry
- 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:
Agradecimientos
Gracias
ilekarevrusos SamovarkxlAlexnispor errores encontrados en la serie de artículos