diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 815d3c88..d2da2c29 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,6 +6,7 @@ variables: PROD_NAME_GENERATOR_TEMPLATES: "parr/parr-generator-templates" PROD_NAME_ESPP_ORDER_LOADER: "parr/parr-espp-order-loader" PROD_NAME_ESPP_ORDER_MANAGER: "parr/parr-espp-order-manager" + PROD_NAME_MASTER: "parr/parr-master" stages: - build @@ -264,8 +265,6 @@ prod_espp_order_loader_deploy: ### ESPP ORDER MANAGER PROD ### - -#PROD_NAME_ESPP_ORDER_MANAGER prod_espp_order_manager_build: stage: build only: @@ -310,4 +309,52 @@ prod_espp_order_manager_deploy: matrix: - RUNNER: shell-api-swarm-01 tags: - - ${RUNNER} \ No newline at end of file + - ${RUNNER} + + +### MASTER PROD ### +prod_master_build: + stage: build + only: + - /^m[0-9]+\.[0-9]+\.[0-9]+$/ + except: + - branches + services: + - name: docker:20.10.21-dind + command: [ + "--insecure-registry=10.99.253.167:8090", + "--registry-mirror=http://10.99.253.167:8090", + "--insecure-registry=harbor.dvgd.rzd", + "--tls=false" + ] + variables: + DOCKER_HOST: tcp://docker:2375 + DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "" + script: + - APP_VERSION=$(echo $CI_COMMIT_TAG | tr -d m) + - IMAGE_VERSION=$(echo $CI_COMMIT_TAG | sed 's/m/v/g') + - docker build -t $REPO/$PROD_NAME_MASTER:$IMAGE_VERSION -t $REPO/$PROD_NAME_MASTER:latest -t $PROD_NAME_MASTER:$IMAGE_VERSION -t $PROD_NAME_MASTER:latest --build-arg app_version=$APP_VERSION -f PARR.MasterWorker/Dockerfile . + - docker login -u $HARBOR_PUSH_USER -p $HARBOR_PUSH_PASS $REPO + - docker push --all-tags $REPO/$PROD_NAME_MASTER + tags: + - docker + + +prod_master_deploy: + stage: deploy + environment: + name: parr-master + only: + - /^m[0-9]+\.[0-9]+\.[0-9]+$/ + except: + - branches + script: + - IMAGE_VERSION=$(echo $CI_COMMIT_TAG | sed 's/m/v/g') + - docker login -u $HARBOR_PULL_USER -p $HARBOR_PULL_PASS $REPO + - tag=$IMAGE_VERSION docker stack deploy -c docker-compose.master.yml parr-master --with-registry-auth + parallel: + matrix: + - RUNNER: shell-api-swarm-01 + tags: + - ${RUNNER} diff --git a/PARR.Master/ParrMasterInstaller.cs b/PARR.Master/ParrMasterInstaller.cs new file mode 100644 index 00000000..b75b280e --- /dev/null +++ b/PARR.Master/ParrMasterInstaller.cs @@ -0,0 +1,37 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using PARR.BLL; +using PARR.DAL; + +namespace PARR.Master +{ + public static class ParrMasterInstaller + { + public static void InstallMasterServices(this IServiceCollection services, IConfiguration configuration) + { + services.InstallBllServices(configuration); + services.InstallDalServices(configuration); + + // settings + //SettingsFromDb configuration + //var settingsFromDb = new SettingsFromDb(); + //configuration.GetSection(nameof(SettingsFromDb)).Bind(settingsFromDb); + //services.AddSingleton(settingsFromDb); + + //add other services + //services.AddTransient(); + } + + public static IConfigurationBuilder AddMasterConfigurations(this IConfigurationBuilder builder, IServiceCollection services) + { + builder.AddDalConfigurations(services); + + return builder; + } + + public static void AddMasterSettings(this IServiceCollection services, IConfiguration configuration) + { + services.AddDallSettings(configuration); + } + } +} diff --git a/PARR.MasterWorker/Dockerfile b/PARR.MasterWorker/Dockerfile new file mode 100644 index 00000000..62f9d055 --- /dev/null +++ b/PARR.MasterWorker/Dockerfile @@ -0,0 +1,25 @@ +#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. + +FROM 10.99.253.167:8090/dotnet/runtime:7.0 AS base +WORKDIR /app + +FROM 10.99.253.167:8090/dotnet/sdk:7.0 AS build +WORKDIR /src +COPY ["NuGet.config", "."] +COPY ["PARR.MasterWorker/PARR.MasterWorker.csproj", "PARR.MasterWorker/"] +COPY ["PARR.Master/PARR.Master.csproj", "PARR.Master/"] +COPY ["PARR.BLL/PARR.BLL.csproj", "PARR.BLL/"] +COPY ["PARR.DAL/PARR.DAL.csproj", "PARR.DAL/"] +RUN dotnet restore "PARR.MasterWorker/PARR.MasterWorker.csproj" +COPY . . +WORKDIR "/src/PARR.MasterWorker" +RUN dotnet build "PARR.MasterWorker.csproj" -c Release -o /app/build + +FROM build AS publish +ARG app_version=0.0.0-default +RUN dotnet publish "PARR.MasterWorker.csproj" -c Release -o /app/publish /p:UseAppHost=false /p:Version=$app_version + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "PARR.MasterWorker.dll"] \ No newline at end of file diff --git a/PARR.MasterWorker/PARR.MasterWorker.csproj b/PARR.MasterWorker/PARR.MasterWorker.csproj index 3866b62c..e3b1605e 100644 --- a/PARR.MasterWorker/PARR.MasterWorker.csproj +++ b/PARR.MasterWorker/PARR.MasterWorker.csproj @@ -5,10 +5,17 @@ enable enable dotnet-PARR.MasterWorker-55f789f6-6e2b-42fa-b92e-3e56c1142316 + Linux + + + + + + diff --git a/PARR.MasterWorker/Program.cs b/PARR.MasterWorker/Program.cs index 8f8464e0..10e0a577 100644 --- a/PARR.MasterWorker/Program.cs +++ b/PARR.MasterWorker/Program.cs @@ -1,10 +1,31 @@ +using Elastic.CommonSchema.Serilog; +using PARR.Master; using PARR.MasterWorker; +using Serilog; -IHost host = Host.CreateDefaultBuilder(args) - .ConfigureServices(services => - { - services.AddHostedService(); - }) - .Build(); +var builder = Host.CreateApplicationBuilder(); +builder.Services.AddLogging(config => +{ + config.ClearProviders(); + + var logger = new LoggerConfiguration(); + + if (builder.Environment.IsProduction()) + logger.WriteTo.Console(new EcsTextFormatter()); + else + logger.WriteTo.Console(); + + logger.ReadFrom.Configuration(builder.Configuration); + + config.AddSerilog(logger.CreateLogger()); +}); + +builder.Services.InstallMasterServices(builder.Configuration); +builder.Configuration.AddMasterConfigurations(builder.Services); +builder.Services.AddMasterSettings(builder.Configuration); + +builder.Services.AddHostedService(); + +var host = builder.Build(); host.Run(); diff --git a/PARR.MasterWorker/Properties/launchSettings.json b/PARR.MasterWorker/Properties/launchSettings.json index cdf85389..65465e52 100644 --- a/PARR.MasterWorker/Properties/launchSettings.json +++ b/PARR.MasterWorker/Properties/launchSettings.json @@ -1,11 +1,14 @@ -{ +{ "profiles": { "PARR.MasterWorker": { "commandName": "Project", - "dotnetRunMessages": true, "environmentVariables": { "DOTNET_ENVIRONMENT": "Development" - } + }, + "dotnetRunMessages": true + }, + "Docker": { + "commandName": "Docker" } } -} +} \ No newline at end of file diff --git a/PARR.MasterWorker/Worker.cs b/PARR.MasterWorker/Worker.cs index 3f672362..abf24a1f 100644 --- a/PARR.MasterWorker/Worker.cs +++ b/PARR.MasterWorker/Worker.cs @@ -11,11 +11,13 @@ namespace PARR.MasterWorker protected override async Task ExecuteAsync(CancellationToken stoppingToken) { - while (!stoppingToken.IsCancellationRequested) - { - _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); - await Task.Delay(1000, stoppingToken); - } + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + + //while (!stoppingToken.IsCancellationRequested) + //{ + // _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + // await Task.Delay(1000, stoppingToken); + //} } } } \ No newline at end of file diff --git a/PARR.MasterWorker/appsettings.json b/PARR.MasterWorker/appsettings.json index b2dcdb67..96a98cc3 100644 --- a/PARR.MasterWorker/appsettings.json +++ b/PARR.MasterWorker/appsettings.json @@ -1,8 +1,29 @@ { + "ConnectionStrings": { + "DefaultConnection": "Server=10.99.253.184;Database=parr;User Id=app_parr; Password=PosdfkhT&)%sdfligL&%5546;" + }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.Hosting.Lifetime": "Information" } + }, + "Serilog": { + "MinimumLevel": { + "Default": "Debug", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Debug" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] } } diff --git a/docker-compose.dcproj b/docker-compose.dcproj index fae8e6af..c9159350 100644 --- a/docker-compose.dcproj +++ b/docker-compose.dcproj @@ -11,6 +11,7 @@ + diff --git a/docker-compose.master.yml b/docker-compose.master.yml new file mode 100644 index 00000000..b544b11b --- /dev/null +++ b/docker-compose.master.yml @@ -0,0 +1,24 @@ +version: '3.4' + +# PARR MASTER + +services: + parr-master: + image: harbor.dvgd.rzd/parr/parr-master:${tag:-latest} + environment: + - ASPNETCORE_ENVIRONMENT=Production + - TZ=Europe/Moscow + logging: + driver: fluentd + options: + fluentd-address: dvgd-mng-02.dvgd.oao.rzd:24224 + tag: parr.master.serilog + deploy: + replicas: 1 + networks: + - parr-network + +networks: + parr-network: + driver: overlay + external: true