From 0b1c52422f7086c0152da43d9f1613c994f4cb5e Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Wed, 11 Sep 2024 16:57:09 +1000 Subject: [PATCH] =?UTF-8?q?feat(jobAutoControl):=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D1=8B=20+=20cicd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 51 ++++++++++++++++++- .../PARR.JobAutoControl.csproj | 9 ++++ .../PARR.JobAutoControlWorker.csproj | 13 +++++ PARR.JobAutoControlWorker/Program.cs | 10 ++++ .../Properties/launchSettings.json | 11 ++++ PARR.JobAutoControlWorker/Worker.cs | 21 ++++++++ .../appsettings.Development.json | 8 +++ PARR.JobAutoControlWorker/appsettings.json | 8 +++ README.md | 2 + docker-compose.job-auto-control.yml | 25 +++++++++ 10 files changed, 156 insertions(+), 2 deletions(-) create mode 100644 PARR.JobAutoControl/PARR.JobAutoControl.csproj create mode 100644 PARR.JobAutoControlWorker/PARR.JobAutoControlWorker.csproj create mode 100644 PARR.JobAutoControlWorker/Program.cs create mode 100644 PARR.JobAutoControlWorker/Properties/launchSettings.json create mode 100644 PARR.JobAutoControlWorker/Worker.cs create mode 100644 PARR.JobAutoControlWorker/appsettings.Development.json create mode 100644 PARR.JobAutoControlWorker/appsettings.json create mode 100644 docker-compose.job-auto-control.yml 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