feat(jobAutoControl): проекты + cicd

This commit is contained in:
Mikhail Trubnikov
2024-09-11 16:57:09 +10:00
parent 66a91c6cc6
commit 0b1c52422f
10 changed files with 156 additions and 2 deletions

View File

@@ -12,6 +12,7 @@ variables:
PROD_NAME_NEXT_RUN: "parr/parr-next-run" PROD_NAME_NEXT_RUN: "parr/parr-next-run"
PROD_TEMPLATE_DISTRIBOTOR: "parr/parr-template-distributor" PROD_TEMPLATE_DISTRIBOTOR: "parr/parr-template-distributor"
PROD_TEMPLATE_ACTIVATOR: "parr/parr-template-activator" PROD_TEMPLATE_ACTIVATOR: "parr/parr-template-activator"
PROD_JOB_AUTO_CONTROL: "parr/parr-job-auto-control"
stages: stages:
- build - build
@@ -561,8 +562,6 @@ prod_template_distributor_deploy:
### TEMPLATE ACTIVATOR PROD ### ### TEMPLATE ACTIVATOR PROD ###
# PROD_TEMPLATE_ACTIVATOR
prod_template_activator_build: prod_template_activator_build:
stage: build stage: build
only: only:
@@ -608,3 +607,51 @@ prod_template_activator_deploy:
- RUNNER: shell-api-swarm-01 - RUNNER: shell-api-swarm-01
tags: tags:
- ${RUNNER} - ${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}

View File

@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk.Worker">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>dotnet-PARR.JobAutoControlWorker-50dc4ed1-928f-47c3-855e-137f03acd19c</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,10 @@
using PARR.JobAutoControlWorker;
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
})
.Build();
host.Run();

View File

@@ -0,0 +1,11 @@
{
"profiles": {
"PARR.JobAutoControlWorker": {
"commandName": "Project",
"dotnetRunMessages": true,
"environmentVariables": {
"DOTNET_ENVIRONMENT": "Development"
}
}
}
}

View File

@@ -0,0 +1,21 @@
namespace PARR.JobAutoControlWorker
{
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> 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);
}
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

View File

@@ -28,6 +28,8 @@
- PARR.EsppTemplateSyncWorker - worker для PARR.EsppTemplateSync - PARR.EsppTemplateSyncWorker - worker для PARR.EsppTemplateSync
- PARR.GeneratorTemplates - логика генерации шаблонов в ПАРР - PARR.GeneratorTemplates - логика генерации шаблонов в ПАРР
- PARR.GeneratorTemplatesWorker - Worker для PARR.GeneratorTemplates - PARR.GeneratorTemplatesWorker - Worker для PARR.GeneratorTemplates
- PARR.JobAutoControl - управляет авто-контролем РР, формирует задания для генератора / активатора РР по расписанию
- PARR.JobAutoControlWorker - Worker для PARR.JobAutoControl
- PARR.Mail - сервис по работе с почтой - PARR.Mail - сервис по работе с почтой
- PARR.Master - логика связывания нарядов ЕСПП и Агентов ПАРР, связывание нарядов и шаблонов, добавление нарядов в очередь на закрытие - PARR.Master - логика связывания нарядов ЕСПП и Агентов ПАРР, связывание нарядов и шаблонов, добавление нарядов в очередь на закрытие
- PARR.MasterWorker - PARR.MasterWorker

View File

@@ -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