Files
jenkins-pipelines/pipelines/License-server/create-license.groovy
2024-09-18 13:07:58 +03:00

103 lines
4.3 KiB
Groovy
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@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}\"
"""
}
}
}