Loja Online Blazor do Lado do Cliente: Parte 2 - CI / CD



Olá Habr! Eu continuo a fazer loja online no Blazor. Nesta parte, falarei sobre como configurei o CI / CD para ele. Para detalhes, bem-vindo ao gato.

Conteúdo



Referências


Código fonte
Imagens do Registro do Docker

Dockerfile


Adicione um Dockerfile com esse conteúdo ao projeto do servidor que distribuirá nosso SPA no 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"] 

Definindo variáveis ​​de ambiente para o Gitlab


Vá para a seção Configurações -> CI / CD do nosso repositório. e defina as variáveis ​​de ambiente necessárias para publicação no Registro



  1. CI_REGISTRY_PATH - o caminho para o nosso registro (no meu caso registry.hub.docker.com/victorcallidus)
  2. CI_REGISTRY_USER - nossa conta de resitry
  3. CI_REGISTRY_PASSWORD - senha da nossa conta do registro

CI / CD do Gitlab


Conectamos os corredores compartilhados ou configuramos o seu com a capacidade de criar janela de encaixe.



Inclua o arquivo .gitlab-ci.yml com esse conteúdo no repositório

 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 - essa variável de ambiente que o Gitlab se preenche. Se esse é um commit regular, o nome do ramo (master, dev, stage, etc.) é escrito aqui; se você pressionar uma tag, haverá um nome de tag. Por exemplo, se você pressionar a tag dev11, então CI_COMMIT_REF_SLUG = dev11.

Exemplo de configuração de composição do Docker


Para executar, por exemplo, através do docker-compose.yml, você pode usar essas configurações

 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 


Agradecimentos


Obrigada
ilekarev
russianssamovar
kxl
Alexnis
por erros encontrados na série de artigos

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


All Articles