Blazor Client Side Online-Shop: Teil 2 - CI / CD



Hallo habr Ich mache weiterhin einen Online-Shop auf Blazor. In diesem Teil werde ich erläutern, wie ich CI / CD dafür konfiguriert habe. Für Details begrüßen Sie zur Katze.

Inhalt



Referenzen


Quellcode
Docker-Registrierungsabbilder

Dockerfile


Fügen Sie dem Serverprojekt eine Docker-Datei mit solchen Inhalten hinzu, die unser SPA auf Blazor verteilt



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"] 

Festlegen von Umgebungsvariablen für Gitlab


Gehen Sie zu Einstellungen -> CI / CD in unserem Repository. und legen Sie die Umgebungsvariablen fest, die für die Veröffentlichung in der Registrierung erforderlich sind



  1. CI_REGISTRY_PATH - der Pfad zu unserer Registrierung (in meinem Fall registry.hub.docker.com/victorcallidus)
  2. CI_REGISTRY_USER - unser Resitry-Konto
  3. CI_REGISTRY_PASSWORD - Kennwort aus unserem Registrierungskonto

Gitlab CI / CD


Wir verbinden die geteilten Läufer oder setzen Ihre eigenen mit der Fähigkeit, Docker zu bauen.



Fügen Sie die Datei .gitlab-ci.yml mit diesen Inhalten zum Repository hinzu

 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 - Diese Umgebungsvariable, die Gitlab selbst füllt. Wenn es sich um ein reguläres Commit handelt, wird hier der Name des Zweigs (Master, Dev, Stage usw.) geschrieben, und wenn Sie ein Tag verschieben, wird ein Tag-Name angegeben. Wenn Sie beispielsweise das Tag dev11 drücken, ist CI_COMMIT_REF_SLUG = dev11.

Beispiel für die Einrichtung von Docker-Compose


Um beispielsweise die Datei docker-compose.yml auszuführen, können Sie solche Einstellungen verwenden

 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 


Danksagung


Vielen Dank
ilekarev
russianssamovar
kxl
Alexnis
für Fehler in der Artikelserie

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


All Articles