Blazor Client Side Интернет Магазин: Часть 2 — CI/CD

от автора


Привет, Хабр! Продолжаю делать интернет магазин на Blazor. В этой части расскажу о том как я настроил CI/CD для него. За подробностями добро пожаловать под кат.

Содержание

Ссылки

Исходники
Образы на Docker Registry

Dockerfile

Добавляем Dockerfile c таким содержимым в проект сервера который будет раздавать наше  SPA на 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"] 

Настройка переменных окружения для Gitlab

Переходим в раздел Settings -> CI/CD нашего репозитория. и выставляем там переменные окружения необходимые для публикации в Registry

  1. CI_REGISTRY_PATH — путь к нашему registry ( в моем случае registry.hub.docker.com/victorcallidus)
  2. CI_REGISTRY_USER — наш аккаунт в resitry
  3. CI_REGISTRY_PASSWORD — пароль от нашего аккаунта в registry

Gitlab CI/CD

Подключаем шаред раннеры или устанавливаем свой с возможностью сборки docker.

Добавляем в репозиторий файл .gitlab-ci.yml с таким содержимым

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" 

Пример настройки docker-compose

Для запуска например через docker-compose.yml можно такие настройки использовать

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 

ссылка на оригинал статьи https://habr.com/ru/post/484782/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *