
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 fonteImagens do Registro do DockerDockerfile
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

- CI_REGISTRY_PATH - o caminho para o nosso registro (no meu caso registry.hub.docker.com/victorcallidus)
- CI_REGISTRY_USER - nossa conta de resitry
- 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:
Agradecimentos
Obrigada
ilekarevrussianssamovarkxlAlexnispor erros encontrados na série de artigos