diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 830b5d6a..815d3c88 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,6 +5,7 @@ variables:
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"
+ PROD_NAME_ESPP_ORDER_MANAGER: "parr/parr-espp-order-manager"
stages:
- build
@@ -214,8 +215,7 @@ prod_generator_templates_deploy:
- ${RUNNER}
-### ESPP ORDER LOADER ###
-#PROD_NAME_ESPP_ORDER_LOADER
+### ESPP ORDER LOADER PROD ###
prod_espp_order_loader_build:
stage: build
only:
@@ -259,5 +259,55 @@ prod_espp_order_loader_deploy:
parallel:
matrix:
- RUNNER: shell-api-swarm-01
+ tags:
+ - ${RUNNER}
+
+
+### ESPP ORDER MANAGER PROD ###
+
+#PROD_NAME_ESPP_ORDER_MANAGER
+prod_espp_order_manager_build:
+ stage: build
+ only:
+ - /^om[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 om)
+ - IMAGE_VERSION=$(echo $CI_COMMIT_TAG | sed 's/om/v/g')
+ - docker build -t $REPO/$PROD_NAME_ESPP_ORDER_MANAGER:$IMAGE_VERSION -t $REPO/$PROD_NAME_ESPP_ORDER_MANAGER:latest -t $PROD_NAME_ESPP_ORDER_MANAGER:$IMAGE_VERSION -t $PROD_NAME_ESPP_ORDER_MANAGER:latest --build-arg app_version=$APP_VERSION -f PARR.EsppOrderManagerWorker/Dockerfile .
+ - docker login -u $HARBOR_PUSH_USER -p $HARBOR_PUSH_PASS $REPO
+ - docker push --all-tags $REPO/$PROD_NAME_ESPP_ORDER_MANAGER
+ tags:
+ - docker
+
+
+prod_espp_order_manager_deploy:
+ stage: deploy
+ environment:
+ name: parr-espp-order-manager
+ only:
+ - /^om[0-9]+\.[0-9]+\.[0-9]+$/
+ except:
+ - branches
+ script:
+ - IMAGE_VERSION=$(echo $CI_COMMIT_TAG | sed 's/om/v/g')
+ - docker login -u $HARBOR_PULL_USER -p $HARBOR_PULL_PASS $REPO
+ - tag=$IMAGE_VERSION docker stack deploy -c docker-compose.espp-order-manager.yml parr-espp-order-manager --with-registry-auth
+ parallel:
+ matrix:
+ - RUNNER: shell-api-swarm-01
tags:
- ${RUNNER}
\ No newline at end of file
diff --git a/PARR.EsppOrderManager/PARR.EsppOrderManager.csproj b/PARR.EsppOrderManager/PARR.EsppOrderManager.csproj
index 0acb0120..74361878 100644
--- a/PARR.EsppOrderManager/PARR.EsppOrderManager.csproj
+++ b/PARR.EsppOrderManager/PARR.EsppOrderManager.csproj
@@ -7,6 +7,7 @@
+
diff --git a/PARR.EsppOrderManager/ParrEsppOrderManagerInstaller.cs b/PARR.EsppOrderManager/ParrEsppOrderManagerInstaller.cs
new file mode 100644
index 00000000..e372403c
--- /dev/null
+++ b/PARR.EsppOrderManager/ParrEsppOrderManagerInstaller.cs
@@ -0,0 +1,39 @@
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using PARR.BLL;
+using PARR.DAL;
+using PARR.EsppApi;
+
+namespace PARR.EsppOrderManager
+{
+ public static class ParrEsppOrderManagerInstaller
+ {
+ public static void InstallEsppOrderManagerServices(this IServiceCollection services, IConfiguration configuration)
+ {
+ services.InstallBllServices(configuration);
+ services.InstallDalServices(configuration);
+ services.InstallEsppApiServices(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 AddEsppOrderManagerConfigurations(this IConfigurationBuilder builder, IServiceCollection services)
+ {
+ builder.AddDalConfigurations(services);
+
+ return builder;
+ }
+
+ public static void AddEsppOrderManagerSettings(this IServiceCollection services, IConfiguration configuration)
+ {
+ services.AddDallSettings(configuration);
+ }
+ }
+}
diff --git a/PARR.EsppOrderManagerWorker/Dockerfile b/PARR.EsppOrderManagerWorker/Dockerfile
new file mode 100644
index 00000000..6fc09ca3
--- /dev/null
+++ b/PARR.EsppOrderManagerWorker/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.EsppOrderManagerWorker/PARR.EsppOrderManagerWorker.csproj", "PARR.EsppOrderManagerWorker/"]
+COPY ["PARR.EsppOrderManager/PARR.EsppOrderManager.csproj", "PARR.EsppOrderManager/"]
+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.EsppOrderManagerWorker/PARR.EsppOrderManagerWorker.csproj"
+COPY . .
+WORKDIR "/src/PARR.EsppOrderManagerWorker"
+RUN dotnet build "PARR.EsppOrderManagerWorker.csproj" -c Release -o /app/build
+
+FROM build AS publish
+ARG app_version=0.0.0-default
+RUN dotnet publish "PARR.EsppOrderManagerWorker.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.EsppOrderManagerWorker.dll"]
\ No newline at end of file
diff --git a/PARR.EsppOrderManagerWorker/PARR.EsppOrderManagerWorker.csproj b/PARR.EsppOrderManagerWorker/PARR.EsppOrderManagerWorker.csproj
index ecc4640a..aa93487f 100644
--- a/PARR.EsppOrderManagerWorker/PARR.EsppOrderManagerWorker.csproj
+++ b/PARR.EsppOrderManagerWorker/PARR.EsppOrderManagerWorker.csproj
@@ -5,10 +5,17 @@
enable
enable
dotnet-PARR.EsppOrderManagerWorker-a4ce7a82-5723-4e74-87e1-eca04735f524
+ Linux
+
+
+
+
+
+
diff --git a/PARR.EsppOrderManagerWorker/Program.cs b/PARR.EsppOrderManagerWorker/Program.cs
index ae6cd33c..271e8644 100644
--- a/PARR.EsppOrderManagerWorker/Program.cs
+++ b/PARR.EsppOrderManagerWorker/Program.cs
@@ -1,10 +1,32 @@
+using Elastic.CommonSchema.Serilog;
+using PARR.EsppOrderManager;
using PARR.EsppOrderManagerWorker;
+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.InstallEsppOrderManagerServices(builder.Configuration);
+builder.Configuration.AddEsppOrderManagerConfigurations(builder.Services);
+builder.Services.AddEsppOrderManagerSettings(builder.Configuration);
+
+builder.Services.AddHostedService();
+
+var host = builder.Build();
host.Run();
+
diff --git a/PARR.EsppOrderManagerWorker/Properties/launchSettings.json b/PARR.EsppOrderManagerWorker/Properties/launchSettings.json
index 1911ed6e..a5b81ada 100644
--- a/PARR.EsppOrderManagerWorker/Properties/launchSettings.json
+++ b/PARR.EsppOrderManagerWorker/Properties/launchSettings.json
@@ -1,11 +1,14 @@
-{
+{
"profiles": {
"PARR.EsppOrderManagerWorker": {
"commandName": "Project",
- "dotnetRunMessages": true,
"environmentVariables": {
"DOTNET_ENVIRONMENT": "Development"
- }
+ },
+ "dotnetRunMessages": true
+ },
+ "Docker": {
+ "commandName": "Docker"
}
}
-}
+}
\ No newline at end of file
diff --git a/PARR.EsppOrderManagerWorker/Worker.cs b/PARR.EsppOrderManagerWorker/Worker.cs
index e14edb02..50c29b5e 100644
--- a/PARR.EsppOrderManagerWorker/Worker.cs
+++ b/PARR.EsppOrderManagerWorker/Worker.cs
@@ -11,11 +11,13 @@ namespace PARR.EsppOrderManagerWorker
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.EsppOrderManagerWorker/appsettings.json b/PARR.EsppOrderManagerWorker/appsettings.json
index b2dcdb67..96a98cc3 100644
--- a/PARR.EsppOrderManagerWorker/appsettings.json
+++ b/PARR.EsppOrderManagerWorker/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-manager.yml b/docker-compose.espp-order-manager.yml
new file mode 100644
index 00000000..4b0be2c5
--- /dev/null
+++ b/docker-compose.espp-order-manager.yml
@@ -0,0 +1,23 @@
+version: '3.4'
+
+# ESPP ORDER MANAGER
+services:
+ parr-espp-order-manager:
+ image: harbor.dvgd.rzd/parr/parr-espp-order-manager:${tag:-latest}
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Production
+ - TZ=Europe/Moscow
+ logging:
+ driver: fluentd
+ options:
+ fluentd-address: dvgd-mng-02.dvgd.oao.rzd:24224
+ tag: parr.espp-order-manager.serilog
+ deploy:
+ replicas: 1
+ networks:
+ - parr-network
+
+networks:
+ parr-network:
+ driver: overlay
+ external: true