[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:
4
jobs-dsl/folders/License_server.groovy
Normal file
4
jobs-dsl/folders/License_server.groovy
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
folder('License-server') {
|
||||||
|
displayName('License-server')
|
||||||
|
description('Jobs for License-server')
|
||||||
|
}
|
||||||
78
jobs-dsl/jobs/License-server/create_license.groovy
Normal file
78
jobs-dsl/jobs/License-server/create_license.groovy
Normal 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('Комментарий')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
102
pipelines/License-server/create-license.groovy
Normal file
102
pipelines/License-server/create-license.groovy
Normal 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}\"
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user