Reviewed-on: https://git.avroid.tech/DevOps/jenkins-pipelines/pulls/34 Reviewed-by: Aleksandr Vodyanov <aleksandr.vodyanov@avroid.tech>
103 lines
4.3 KiB
Groovy
103 lines
4.3 KiB
Groovy
@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}\"
|
||
"""
|
||
}
|
||
}
|
||
}
|