diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 54e6c01d..830b5d6a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,7 @@ variables: PROD_NAME_AIHIT: "parr/parr-aihit-syncher" PROD_NAME_ESPP_TEMPLATE: "parr/parr-espp-template-sync" PROD_NAME_GENERATOR_TEMPLATES: "parr/parr-generator-templates" + PROD_NAME_ESPP_ORDER_LOADER: "parr/parr-espp-order-loader" stages: - build @@ -209,5 +210,54 @@ prod_generator_templates_deploy: parallel: matrix: - RUNNER: shell-api-swarm-01 + tags: + - ${RUNNER} + + +### ESPP ORDER LOADER ### +#PROD_NAME_ESPP_ORDER_LOADER +prod_espp_order_loader_build: + stage: build + only: + - /^ol[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 ol) + - IMAGE_VERSION=$(echo $CI_COMMIT_TAG | sed 's/ol/v/g') + - docker build -t $REPO/$PROD_NAME_ESPP_ORDER_LOADER:$IMAGE_VERSION -t $REPO/$PROD_NAME_ESPP_ORDER_LOADER:latest -t $PROD_NAME_ESPP_ORDER_LOADER:$IMAGE_VERSION -t $PROD_NAME_ESPP_ORDER_LOADER:latest --build-arg app_version=$APP_VERSION -f PARR.EsppOrderLoaderWorker/Dockerfile . + - docker login -u $HARBOR_PUSH_USER -p $HARBOR_PUSH_PASS $REPO + - docker push --all-tags $REPO/$PROD_NAME_ESPP_ORDER_LOADER + tags: + - docker + + +prod_espp_order_loader_deploy: + stage: deploy + environment: + name: parr-espp-order-loader + only: + - /^ol[0-9]+\.[0-9]+\.[0-9]+$/ + except: + - branches + script: + - IMAGE_VERSION=$(echo $CI_COMMIT_TAG | sed 's/ol/v/g') + - docker login -u $HARBOR_PULL_USER -p $HARBOR_PULL_PASS $REPO + - tag=$IMAGE_VERSION docker stack deploy -c docker-compose.espp-order-loader.yml parr-espp-order-loader --with-registry-auth + parallel: + matrix: + - RUNNER: shell-api-swarm-01 tags: - ${RUNNER} \ No newline at end of file diff --git a/PARR.EsppOrderLoader/ParrEsppOrderLoaderInstaller.cs b/PARR.EsppOrderLoader/ParrEsppOrderLoaderInstaller.cs index 3c87ac1f..da3e69f3 100644 --- a/PARR.EsppOrderLoader/ParrEsppOrderLoaderInstaller.cs +++ b/PARR.EsppOrderLoader/ParrEsppOrderLoaderInstaller.cs @@ -1,5 +1,8 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using PARR.BLL; +using PARR.DAL; +using PARR.EsppApi; namespace PARR.EsppOrderLoader { @@ -7,7 +10,9 @@ namespace PARR.EsppOrderLoader { public static void InstallEsppOrderLoaderServices(this IServiceCollection services, IConfiguration configuration) { - //TODO: добавить настройи bll и dal и espp api + services.InstallBllServices(configuration); + services.InstallDalServices(configuration); + services.InstallEsppApiServices(configuration); // settings //SettingsFromDb configuration @@ -18,5 +23,17 @@ namespace PARR.EsppOrderLoader //add other services //services.AddTransient(); } + + public static IConfigurationBuilder AddEsppOrderLoaderConfigurations(this IConfigurationBuilder builder, IServiceCollection services) + { + builder.AddDalConfigurations(services); + + return builder; + } + + public static void AddEsppOrderLoaderSettings(this IServiceCollection services, IConfiguration configuration) + { + services.AddDallSettings(configuration); + } } } diff --git a/PARR.EsppOrderLoaderWorker/Dockerfile b/PARR.EsppOrderLoaderWorker/Dockerfile new file mode 100644 index 00000000..32eab145 --- /dev/null +++ b/PARR.EsppOrderLoaderWorker/Dockerfile @@ -0,0 +1,26 @@ +#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.EsppOrderLoaderWorker/PARR.EsppOrderLoaderWorker.csproj", "PARR.EsppOrderLoaderWorker/"] +COPY ["PARR.EsppOrderLoader/PARR.EsppOrderLoader.csproj", "PARR.EsppOrderLoader/"] +COPY ["PARR.BLL/PARR.BLL.csproj", "PARR.BLL/"] +COPY ["PARR.DAL/PARR.DAL.csproj", "PARR.DAL/"] +COPY ["PARR.EsppApi/PARR.EsppApi.csproj", "PARR.EsppApi/"] +RUN dotnet restore "PARR.EsppOrderLoaderWorker/PARR.EsppOrderLoaderWorker.csproj" +COPY . . +WORKDIR "/src/PARR.EsppOrderLoaderWorker" +RUN dotnet build "PARR.EsppOrderLoaderWorker.csproj" -c Release -o /app/build + +FROM build AS publish +ARG app_version=0.0.0-default +RUN dotnet publish "PARR.EsppOrderLoaderWorker.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.EsppOrderLoaderWorker.dll"] \ No newline at end of file diff --git a/PARR.EsppOrderLoaderWorker/PARR.EsppOrderLoaderWorker.csproj b/PARR.EsppOrderLoaderWorker/PARR.EsppOrderLoaderWorker.csproj index 573b9934..d840be89 100644 --- a/PARR.EsppOrderLoaderWorker/PARR.EsppOrderLoaderWorker.csproj +++ b/PARR.EsppOrderLoaderWorker/PARR.EsppOrderLoaderWorker.csproj @@ -5,10 +5,17 @@ enable enable dotnet-PARR.EsppOrderLoaderWorker-9450cc7f-81ad-4405-8442-7d14419c7952 + Linux + + + + + + diff --git a/PARR.EsppOrderLoaderWorker/Program.cs b/PARR.EsppOrderLoaderWorker/Program.cs index 543027a0..acf2c454 100644 --- a/PARR.EsppOrderLoaderWorker/Program.cs +++ b/PARR.EsppOrderLoaderWorker/Program.cs @@ -1,10 +1,31 @@ +using Elastic.CommonSchema.Serilog; +using Serilog; using PARR.EsppOrderLoaderWorker; +using PARR.EsppOrderLoader; -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.InstallEsppOrderLoaderServices(builder.Configuration); +builder.Configuration.AddEsppOrderLoaderConfigurations(builder.Services); +builder.Services.AddEsppOrderLoaderSettings(builder.Configuration); + +builder.Services.AddHostedService(); + +var host = builder.Build(); host.Run(); diff --git a/PARR.EsppOrderLoaderWorker/Properties/launchSettings.json b/PARR.EsppOrderLoaderWorker/Properties/launchSettings.json index 9bcb141f..37b15b61 100644 --- a/PARR.EsppOrderLoaderWorker/Properties/launchSettings.json +++ b/PARR.EsppOrderLoaderWorker/Properties/launchSettings.json @@ -1,11 +1,14 @@ -{ +{ "profiles": { "PARR.EsppOrderLoaderWorker": { "commandName": "Project", - "dotnetRunMessages": true, "environmentVariables": { "DOTNET_ENVIRONMENT": "Development" - } + }, + "dotnetRunMessages": true + }, + "Docker": { + "commandName": "Docker" } } -} +} \ No newline at end of file diff --git a/PARR.EsppOrderLoaderWorker/Worker.cs b/PARR.EsppOrderLoaderWorker/Worker.cs index c92faebb..3a4775c4 100644 --- a/PARR.EsppOrderLoaderWorker/Worker.cs +++ b/PARR.EsppOrderLoaderWorker/Worker.cs @@ -11,11 +11,12 @@ namespace PARR.EsppOrderLoaderWorker 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.EsppOrderLoaderWorker/appsettings.json b/PARR.EsppOrderLoaderWorker/appsettings.json index b2dcdb67..96a98cc3 100644 --- a/PARR.EsppOrderLoaderWorker/appsettings.json +++ b/PARR.EsppOrderLoaderWorker/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.espp-order-loader.yml b/docker-compose.espp-order-loader.yml new file mode 100644 index 00000000..02fb2452 --- /dev/null +++ b/docker-compose.espp-order-loader.yml @@ -0,0 +1,18 @@ +version: '3.4' + +# ESPP ORDER LOADER +services: + parr-espp-order-loader: + image: harbor.dvgd.rzd/parr/parr-espp-order-loader:${tag:-latest} + environment: + - ASPNETCORE_ENVIRONMENT=Production + - TZ=Europe/Moscow + logging: + driver: fluentd + options: + fluentd-address: dvgd-mng-02.dvgd.oao.rzd:24224 + tag: parr.parr-espp-order-loader.serilog + deploy: + replicas: 1 + networks: + - parr-network \ No newline at end of file