diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a7b17450..eb75642f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -12,6 +12,7 @@ variables:
PROD_NAME_NEXT_RUN: "parr/parr-next-run"
PROD_TEMPLATE_DISTRIBOTOR: "parr/parr-template-distributor"
PROD_TEMPLATE_ACTIVATOR: "parr/parr-template-activator"
+ PROD_JOB_AUTO_CONTROL: "parr/parr-job-auto-control"
stages:
- build
@@ -561,8 +562,6 @@ prod_template_distributor_deploy:
### TEMPLATE ACTIVATOR PROD ###
-
-# PROD_TEMPLATE_ACTIVATOR
prod_template_activator_build:
stage: build
only:
@@ -608,3 +607,51 @@ prod_template_activator_deploy:
- RUNNER: shell-api-swarm-01
tags:
- ${RUNNER}
+
+
+### JOB AUTO CONTROL PROD ###
+prod_job_auto_control_build:
+ stage: build
+ only:
+ - /^jac[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 jac)
+ - IMAGE_VERSION=$(echo $CI_COMMIT_TAG | sed 's/jac/v/g')
+ - docker build -t $REPO/$PROD_JOB_AUTO_CONTROL:$IMAGE_VERSION -t $REPO/$PROD_JOB_AUTO_CONTROL:latest -t $PROD_JOB_AUTO_CONTROL:$IMAGE_VERSION -t $PROD_JOB_AUTO_CONTROL:latest --build-arg app_version=$APP_VERSION -f PARR.JobAutoControlWorker/Dockerfile .
+ - docker login -u $HARBOR_PUSH_USER -p $HARBOR_PUSH_PASS $REPO
+ - docker push --all-tags $REPO/$PROD_JOB_AUTO_CONTROL
+ tags:
+ - docker
+
+
+prod_job_auto_control_deploy:
+ stage: deploy
+ environment:
+ name: parr-template-activator
+ only:
+ - /^jac[0-9]+\.[0-9]+\.[0-9]+$/
+ except:
+ - branches
+ script:
+ - IMAGE_VERSION=$(echo $CI_COMMIT_TAG | sed 's/jac/v/g')
+ - docker login -u $HARBOR_PULL_USER -p $HARBOR_PULL_PASS $REPO
+ - tag=$IMAGE_VERSION docker stack deploy -c docker-compose.job-auto-control.yml parr-job-auto-control --with-registry-auth
+ parallel:
+ matrix:
+ - RUNNER: shell-api-swarm-01
+ tags:
+ - ${RUNNER}
\ No newline at end of file
diff --git a/PARR.JobAutoControl/PARR.JobAutoControl.csproj b/PARR.JobAutoControl/PARR.JobAutoControl.csproj
new file mode 100644
index 00000000..cfadb03d
--- /dev/null
+++ b/PARR.JobAutoControl/PARR.JobAutoControl.csproj
@@ -0,0 +1,9 @@
+
+
+
+ net7.0
+ enable
+ enable
+
+
+
diff --git a/PARR.JobAutoControlWorker/PARR.JobAutoControlWorker.csproj b/PARR.JobAutoControlWorker/PARR.JobAutoControlWorker.csproj
new file mode 100644
index 00000000..46d83d86
--- /dev/null
+++ b/PARR.JobAutoControlWorker/PARR.JobAutoControlWorker.csproj
@@ -0,0 +1,13 @@
+
+
+
+ net7.0
+ enable
+ enable
+ dotnet-PARR.JobAutoControlWorker-50dc4ed1-928f-47c3-855e-137f03acd19c
+
+
+
+
+
+
diff --git a/PARR.JobAutoControlWorker/Program.cs b/PARR.JobAutoControlWorker/Program.cs
new file mode 100644
index 00000000..c20b54ee
--- /dev/null
+++ b/PARR.JobAutoControlWorker/Program.cs
@@ -0,0 +1,10 @@
+using PARR.JobAutoControlWorker;
+
+IHost host = Host.CreateDefaultBuilder(args)
+ .ConfigureServices(services =>
+ {
+ services.AddHostedService();
+ })
+ .Build();
+
+host.Run();
diff --git a/PARR.JobAutoControlWorker/Properties/launchSettings.json b/PARR.JobAutoControlWorker/Properties/launchSettings.json
new file mode 100644
index 00000000..aefd80bf
--- /dev/null
+++ b/PARR.JobAutoControlWorker/Properties/launchSettings.json
@@ -0,0 +1,11 @@
+{
+ "profiles": {
+ "PARR.JobAutoControlWorker": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "environmentVariables": {
+ "DOTNET_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
diff --git a/PARR.JobAutoControlWorker/Worker.cs b/PARR.JobAutoControlWorker/Worker.cs
new file mode 100644
index 00000000..f967596c
--- /dev/null
+++ b/PARR.JobAutoControlWorker/Worker.cs
@@ -0,0 +1,21 @@
+namespace PARR.JobAutoControlWorker
+{
+ public class Worker : BackgroundService
+ {
+ private readonly ILogger _logger;
+
+ public Worker(ILogger logger)
+ {
+ _logger = logger;
+ }
+
+ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
+ {
+ while (!stoppingToken.IsCancellationRequested)
+ {
+ _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
+ await Task.Delay(1000, stoppingToken);
+ }
+ }
+ }
+}
diff --git a/PARR.JobAutoControlWorker/appsettings.Development.json b/PARR.JobAutoControlWorker/appsettings.Development.json
new file mode 100644
index 00000000..b2dcdb67
--- /dev/null
+++ b/PARR.JobAutoControlWorker/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.Hosting.Lifetime": "Information"
+ }
+ }
+}
diff --git a/PARR.JobAutoControlWorker/appsettings.json b/PARR.JobAutoControlWorker/appsettings.json
new file mode 100644
index 00000000..b2dcdb67
--- /dev/null
+++ b/PARR.JobAutoControlWorker/appsettings.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.Hosting.Lifetime": "Information"
+ }
+ }
+}
diff --git a/README.md b/README.md
index 33820594..f006e4c9 100644
--- a/README.md
+++ b/README.md
@@ -28,6 +28,8 @@
- PARR.EsppTemplateSyncWorker - worker для PARR.EsppTemplateSync
- PARR.GeneratorTemplates - логика генерации шаблонов в ПАРР
- PARR.GeneratorTemplatesWorker - Worker для PARR.GeneratorTemplates
+- PARR.JobAutoControl - управляет авто-контролем РР, формирует задания для генератора / активатора РР по расписанию
+- PARR.JobAutoControlWorker - Worker для PARR.JobAutoControl
- PARR.Mail - сервис по работе с почтой
- PARR.Master - логика связывания нарядов ЕСПП и Агентов ПАРР, связывание нарядов и шаблонов, добавление нарядов в очередь на закрытие
- PARR.MasterWorker
diff --git a/docker-compose.job-auto-control.yml b/docker-compose.job-auto-control.yml
new file mode 100644
index 00000000..01aa093a
--- /dev/null
+++ b/docker-compose.job-auto-control.yml
@@ -0,0 +1,25 @@
+version: '3.4'
+
+#PARR JOB AUTO CONTROL
+services:
+ parr-template-activator:
+ image: harbor.dvgd.rzd/parr/parr-job-auto-control:${tag-latest}
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Production
+ - TZ=Europe/Moscow
+ logging:
+ driver: fluentd
+ options:
+ fluentd-address: dvgd-efk-01.dvgd.oao.rzd:24224
+ fluentd-retry-wait: '30s'
+ fluentd-max-retries: '30'
+ tag: parr.job-auto-control.serilog
+ deploy:
+ replicas: 1
+ networks:
+ parr-network:
+
+networks:
+ parr-network:
+ driver: overlay
+ external: true
\ No newline at end of file