[DO-1026] create_license (!34)

Reviewed-on: https://git.avroid.tech/DevOps/jenkins-pipelines/pulls/34
Reviewed-by: Aleksandr Vodyanov <aleksandr.vodyanov@avroid.tech>
This commit is contained in:
Rustam Tagaev
2024-09-18 13:07:58 +03:00
parent e2a380ef38
commit 1d72f7743b
3 changed files with 184 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
folder('License-server') {
displayName('License-server')
description('Jobs for License-server')
}

View File

@@ -0,0 +1,78 @@
pipelineJob('License-server/create-license') {
description("Создание лицензии на тест окружении")
definition {
cpsScm {
scm {
git {
remote {
url("${JENKINS_GIT_REPOSITORY_URL}/DevOps/jenkins-pipelines.git")
credentials("${JENKINS_GIT_CREDENTIALS_HTTP}")
}
branch('master')
}
}
scriptPath('pipelines/License-server/create-license.groovy')
}
}
properties {
disableConcurrentBuilds()
}
parameters {
string { name('LICENSE_COUNT')
defaultValue('')
description('Количество лицензии')
}
string { name('PRODUCT_ID')
defaultValue('')
description('Идентификатор продукта к которому будут привязаны лицензии')
}
choice {
name('LICENSE_KIND')
choices(["SINGLE","MULTIPLE"])
description('Eдиничная или множественная лицензия')
}
choice {
name('LICENSE_TYPE')
choices(["TRIAL","COMMERCIAL","UNLIMITED"])
description('Коммерческая, Триальная или Бессрочная')
}
string { name('LICENSE_DURATION')
defaultValue('')
description('Валидный период лицензии в месяцах')
}
string { name('OWNER_TITLE')
defaultValue('')
description('Название новой компании')
}
string { name('OWNER_ID')
defaultValue('')
description('Идентификатор существующего Владельца')
}
string { name('INSTALLATION_LIMIT')
defaultValue('1')
description('Количество возможных созданных инсталляции')
}
string { name('KEY_LIMIT')
defaultValue('1')
description('Максимальное количество созданных ключей')
}
string { name('VALIDATION_PERIOD')
defaultValue('1')
description('Проверка в часах')
}
string { name('ADMIN_EMAIL')
defaultValue('')
description('Почта администратора')
}
string { name('OPERATOR_LOGIN')
defaultValue('')
description('Логин оператора')
}
string { name('COMMENT')
defaultValue('')
description('Комментарий')
}
}
}

View File

@@ -0,0 +1,102 @@
@Library('shared-lib') _
properties([
buildDiscarder(logRotator(artifactNumToKeepStr: '10',
numToKeepStr: '10')),
disableConcurrentBuilds(),
parameters([
string(name: 'LICENSE_COUNT', defaultValue: '', description: 'Количество лицензии'),
string(name: 'PRODUCT_ID', defaultValue: '', description: 'Идентификатор продукта к которому будут привязаны лицензии'),
choice(
name: 'LICENSE_KIND',
choices: ["SINGLE","MULTIPLE"],
description: 'Eдиничная или множественная лицензия'
),
choice(
name: 'LICENSE_TYPE',
choices: ["TRIAL","COMMERCIAL","UNLIMITED"],
description: 'Коммерческая, Триальная или Бессрочная'
),
string(name: 'LICENSE_DURATION', defaultValue: '', description: 'Валидный период лицензии в месяцах'),
string(name: 'OWNER_TITLE', defaultValue: '', description: 'Название новой компании'),
string(name: 'OWNER_ID', defaultValue: '', description: 'Идентификатор существующего Владельца'),
string(name: 'INSTALLATION_LIMIT', defaultValue: '1', description: 'Количество возможных созданных инсталляции'),
string(name: 'KEY_LIMIT', defaultValue: '1', description: 'Максимальное количество созданных ключей'),
string(name: 'VALIDATION_PERIOD', defaultValue: '1', description: 'Проверка в часах'),
string(name: 'ADMIN_EMAIL', defaultValue: '', description: 'Почта администратора'),
string(name: 'OPERATOR_LOGIN', defaultValue: '', description: 'Логин оператор'),
string(name: 'COMMENT', defaultValue: '', description: 'Комментарий (необязательно)'),
]),
])
if (params.LICENSE_COUNT == '' ||
params.LICENSE_DURATION == '' ||
(params.OWNER_TITLE == '' && params.OWNER_ID == '') ||
params.INSTALLATION_LIMIT == '' ||
params.KEY_LIMIT == '' ||
params.VALIDATION_PERIOD == '' ||
params.ADMIN_EMAIL == '' ||
params.OPERATOR_LOGIN == ''){
print "Все обязательные параметры должны быть заполнены"
currentBuild.result = 'FAILURE'
return
}
String licApiServer = 'h-license-manager-api-test.avroid.cloud'
Map configuration = [
vaultUrl: 'https://vault.avroid.tech',
vaultCredentialId: 'vault-role',
engineVersion: 2
]
List sshPassword = [
[path: 'team-devops/accounts/ldap/service_accounts/svc_jenkins', engineVersion: 2, secretValues:
[
[vaultKey: 'password'],
]
]
]
String cmd = "docker exec license_server-api-1 python manage.py avl_mass_license_operator_create" +
" --license-count ${params.LICENSE_COUNT}" +
" --product-id ${params.PRODUCT_ID}" +
" --license-kind ${params.LICENSE_KIND}" +
" --license-type ${params.LICENSE_TYPE}" +
" --license-duration ${params.LICENSE_DURATION}" +
" --installation-limit ${params.INSTALLATION_LIMIT}" +
" --key-limit ${params.KEY_LIMIT}" +
" --validation-period ${params.VALIDATION_PERIOD}" +
" --admin-email ${params.ADMIN_EMAIL}" +
" --operator-login ${params.OPERATOR_LOGIN}"
if (params.OWNER_ID != '' && params.OWNER_TITLE != '') {
print "Только один из этих параметров должен быть передан (OWNER_ID, OWNER_TITLE)"
currentBuild.result = 'FAILURE'
return
}
if (params.OWNER_TITLE != '') {
cmd = cmd + " --owner-title \'${params.OWNER_TITLE}\'"
}
if (params.OWNER_ID != '') {
cmd = cmd + " --owner-id ${params.OWNER_ID}"
}
if (params.COMMENT != '') {
cmd = cmd + " --comment \'${params.COMMENT}\'"
}
node('slave01') {
stage('Create license') {
print cmd
withVault([configuration: configuration, vaultSecrets: sshPassword]) {
sh """
sshpass -p $password ssh jenkins@${licApiServer} \"${cmd}\"
"""
}
}
}