Boutique en ligne côté client Blazor: Partie 2 - CI / CD



Bonjour, Habr! Je continue à faire de la boutique en ligne sur Blazor. Dans cette partie, je vais parler de la façon dont j'ai configuré CI / CD pour cela. Pour plus de détails, bienvenue au chat.

Table des matières



Les références


Code source
Images du registre Docker

Dockerfile


Ajoutez un Dockerfile avec un tel contenu au projet de serveur qui distribuera notre SPA sur 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"] 

Définition des variables d'environnement pour Gitlab


Accédez à la section Paramètres -> CI / CD de notre référentiel. et y définir les variables d'environnement nécessaires à la publication dans le Registre



  1. CI_REGISTRY_PATH - le chemin vers notre registre (dans mon cas Registry.hub.docker.com/victorcallidus)
  2. CI_REGISTRY_USER - notre compte de séjour
  3. CI_REGISTRY_PASSWORD - mot de passe de notre compte de registre

Gitlab CI / CD


Nous connectons les coureurs partagés ou définissons le vôtre avec la possibilité de construire un docker.



Ajoutez le fichier .gitlab-ci.yml avec ce contenu au référentiel

 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 - cette variable d'environnement que Gitlab se remplit. S'il s'agit d'un commit normal, le nom de la branche est écrit ici (master, dev, stage, etc.) si vous poussez le tag, alors le nom du tag sera ici. Par exemple, si vous appuyez sur la balise dev11, alors CI_COMMIT_REF_SLUG = dev11.

Exemple d'installation Docker-compose


Pour exécuter par exemple via docker-compose.yml, vous pouvez utiliser ces paramètres

 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 


Remerciements


Je vous remercie
ilekarev
russesansamovar
kxl
Alexnis
pour les erreurs trouvées dans la série d'articles

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


All Articles