Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WiP. Предварительная загрузка dt в ИБ #65

Closed
1 change: 1 addition & 0 deletions resources/globalConfiguration.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"initInfobase": {
"initMethod": "fromStorage",
"runMigration": true,
"vrunnerSettings": "./tools/vrunner.json",
"additionalInitializationSteps": []
},
"bdd": {
Expand Down
10 changes: 7 additions & 3 deletions resources/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@
"properties" : {
"storagePath" : {
"type" : "string",
"description" : "Путь к хранилищу конфигурации"
"description" : "Ид секрета Jenkins, хранящего путь к хранилищу конфигурации"
},
"storage" : {
"type" : "string",
"description" : "Данные авторизации в хранилище конфигурации"
"description" : "Ид секрета Jenkins, хранящего логин и пароль для хранилища конфигурации"
}
}
},
Expand Down Expand Up @@ -118,7 +118,7 @@
},
"initInfobase" : {
"type" : "object",
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:InitInfobaseOptions",
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:InitInfoBaseOptions",
"description" : "Настройки шага инициализации ИБ",
"properties" : {
"initMethod" : {
Expand All @@ -130,6 +130,10 @@
"type" : "boolean",
"description" : "Запустить миграцию ИБ"
},
"vrunnerSettings" : {
"type" : "string",
"description" : "Путь к конфигурационному файлу vanessa-runner.\n По умолчанию содержит значение \"./tools/vrunner.json\".\n "
},
"additionalInitializationSteps" : {
"type" : "array",
"description" : "Дополнительные шаги, запускаемые через vrunner.\n В каждой строке передается отдельная команда \n vrunner и ее аргументы (например, \"vanessa --settings ./tools/vrunner.first.json\")\n ",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,12 @@ import com.fasterxml.jackson.annotation.JsonPropertyDescription
class InitInfoBaseOptions implements Serializable {

@JsonPropertyDescription("""
Способ инициализации информационной базы.
Путь к выгрузке информационной базы в формате DT, которая должна быть загружена в самом начале инициализации.
По умолчанию не заполнено""")
String preloadDTURL = "";

@JsonPropertyDescription("""
Способ инициализации конфигурации информационной базы.
Поддерживается три варианта:
* fromStorage - инициализация информационной базы из хранилища конфигурации;
* fromSource - инициализация информационной базы из исходников конфигурации;
Expand All @@ -19,6 +24,11 @@ class InitInfoBaseOptions implements Serializable {
@JsonPropertyDescription("Запустить миграцию ИБ")
Boolean runMigration = true

@JsonPropertyDescription("""Путь к конфигурационному файлу vanessa-runner.
По умолчанию содержит значение "./tools/vrunner.json".
""")
String vrunnerSettings

@JsonPropertyDescription("""Дополнительные шаги, запускаемые через vrunner.
В каждой строке передается отдельная команда
vrunner и ее аргументы (например, "vanessa --settings ./tools/vrunner.first.json")
Expand All @@ -29,8 +39,10 @@ class InitInfoBaseOptions implements Serializable {
@NonCPS
String toString() {
return "InitInfoBaseOptions{" +
"initMethod=" + initMethod +
", preloadDTURL=" + preloadDTURL +
", initMethod=" + initMethod +
", runMigration=" + runMigration +
", vrunnerSettings=" + vrunnerSettings +
", additionalInitializationSteps=" + additionalInitializationSteps +
'}';
}
Expand Down
54 changes: 54 additions & 0 deletions src/ru/pulsar/jenkins/library/steps/CreateInfoBase.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package ru.pulsar.jenkins.library.steps

import hudson.FilePath
import org.jenkinsci.plugins.workflow.support.actions.EnvironmentAction
import ru.pulsar.jenkins.library.IStepExecutor
import ru.pulsar.jenkins.library.configuration.JobConfiguration
import ru.pulsar.jenkins.library.ioc.ContextRegistry
import ru.pulsar.jenkins.library.utils.FileUtils
import ru.pulsar.jenkins.library.utils.Logger
import ru.pulsar.jenkins.library.utils.VRunner

class CreateInfoBase implements Serializable {

private final static PRELOAD_DT_LOCAL_PATH = "build/out/preload.dt"

private final JobConfiguration config

CreateInfoBase(JobConfiguration config) {
this.config = config
}

def run() {
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor()

Logger.printLocation()

steps.installLocalDependencies()

steps.createDir('build/out')

EnvironmentAction env = steps.env()

String vrunnerPath = VRunner.getVRunnerPath()

String preloadDTURL = config.initInfoBaseOptions.getPreloadDTURL()
if (!preloadDTURL.isEmpty()) {

String vrunnerSettings = config.initInfoBaseOptions.getVrunnerSettings()

FilePath localPathToPreloadDT = FileUtils.getFilePath("$env.WORKSPACE/$PRELOAD_DT_LOCAL_PATH")
Logger.println("Скачивание DT в $localPathToPreloadDT")
localPathToPreloadDT.copyFrom(new URL(preloadDTURL))

String command = vrunnerPath + " init-dev --dt $localPathToPreloadDT"
if (steps.fileExists(vrunnerSettings)) {
command += " --settings $vrunnerSettings"
}
VRunner.exec(command)

}

}

}
26 changes: 17 additions & 9 deletions src/ru/pulsar/jenkins/library/steps/InitFromFiles.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import ru.pulsar.jenkins.library.utils.VRunner

class InitFromFiles implements Serializable {

private final JobConfiguration config;
private final JobConfiguration config

InitFromFiles(JobConfiguration config) {
this.config = config
Expand All @@ -25,25 +25,33 @@ class InitFromFiles implements Serializable {
return
}

steps.installLocalDependencies();
steps.installLocalDependencies()

steps.createDir('build/out')

Logger.println("Распаковка файлов")

String srcDir;
String srcDir

if (config.sourceFormat == SourceFormat.EDT) {
def env = steps.env();
def env = steps.env()
srcDir = "$env.WORKSPACE/$EdtToDesignerFormatTransformation.CONFIGURATION_DIR"

steps.unstash(EdtToDesignerFormatTransformation.CONFIGURATION_ZIP_STASH)
steps.unzip(srcDir, EdtToDesignerFormatTransformation.CONFIGURATION_ZIP)
} else {
srcDir = config.srcDir;
srcDir = config.srcDir
}

Logger.println("Выполнение загрузки конфигурации из файлов")
String vrunnerPath = VRunner.getVRunnerPath();
def initCommand = "$vrunnerPath init-dev --src $srcDir --ibconnection \"/F./build/ib\""
VRunner.exec(initCommand)
String vrunnerPath = VRunner.getVRunnerPath()
String vrunnerSettings = config.initInfoBaseOptions.getVrunnerSettings()

String command = vrunnerPath + " update-dev --src $srcDir --ibconnection \"/F./build/ib\""
if (steps.fileExists(vrunnerSettings)) {
command += " --settings $vrunnerSettings"
}

VRunner.exec(command)

}
}
15 changes: 12 additions & 3 deletions src/ru/pulsar/jenkins/library/steps/InitFromStorage.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import ru.pulsar.jenkins.library.configuration.JobConfiguration
import ru.pulsar.jenkins.library.configuration.Secrets
import ru.pulsar.jenkins.library.ioc.ContextRegistry
import ru.pulsar.jenkins.library.utils.Logger

import ru.pulsar.jenkins.library.utils.VRunner
import ru.pulsar.jenkins.library.utils.VersionParser

Expand Down Expand Up @@ -34,10 +35,12 @@ class InitFromStorage implements Serializable {

steps.installLocalDependencies()

String storageVersion = VersionParser.storage()
steps.createDir('build/out')

String storageVersion = VersionParser.storage(config.getSrcDir())
String storageVersionParameter = storageVersion == "" ? "" : "--storage-ver $storageVersion"

EnvironmentAction env = steps.env();
EnvironmentAction env = steps.env()
String repoSlug = computeRepoSlug(env.GIT_URL)

Secrets secrets = config.secrets
Expand All @@ -57,7 +60,13 @@ class InitFromStorage implements Serializable {
)
]) {
String vrunnerPath = VRunner.getVRunnerPath()
VRunner.exec "$vrunnerPath init-dev --storage $storageVersionParameter --ibconnection \"/F./build/ib\""
String vrunnerSettings = config.initInfoBaseOptions.getVrunnerSettings()

String command = vrunnerPath + " update-dev --storage $storageVersionParameter --ibconnection \"/F./build/ib\""
if (steps.fileExists(vrunnerSettings)) {
command += " --settings $vrunnerSettings"
}
VRunner.exec(command)
}
}

Expand Down
5 changes: 5 additions & 0 deletions src/ru/pulsar/jenkins/library/steps/InitInfoBase.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ class InitInfoBase implements Serializable {
command += executeParameter;
command += ' --ibconnection "/F./build/ib"'

String vrunnerSettings = config.initInfoBaseOptions.vrunnerSettings
if (steps.fileExists(vrunnerSettings)) {
command += " --settings $vrunnerSettings"
}

// Запуск миграции
steps.catchError {
VRunner.exec(command)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,10 @@ void testCreateJobConfigurationObject() throws IOException {
assertThat(jobConfiguration.getSmokeTestOptions().isPublishToAllureReport()).isFalse();
assertThat(jobConfiguration.getSmokeTestOptions().isPublishToJUnitReport()).isTrue();

assertThat(jobConfiguration.getInitInfoBaseOptions().getRunMigration()).isFalse();
assertThat(jobConfiguration.getInitInfoBaseOptions().getAdditionalInitializationSteps()).contains("vanessa --settings ./tools/vrunner.first.json");
InitInfoBaseOptions initInfoBaseOptions = jobConfiguration.getInitInfoBaseOptions();
assertThat(initInfoBaseOptions.getRunMigration()).isFalse();
assertThat(initInfoBaseOptions.getPreloadDTURL()).isEqualTo("https://build-server:7421/dump.dt");
assertThat(initInfoBaseOptions.getAdditionalInitializationSteps()).contains("vanessa --settings ./tools/vrunner.first.json");

assertThat(jobConfiguration.getBddOptions().getVrunnerSteps()).contains("vanessa --settings ./tools/vrunner.json");

Expand Down
1 change: 1 addition & 0 deletions test/unit/resources/jobConfiguration.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"zipInfoBase": 123
},
"initInfobase": {
"preloadDTURL": "https://build-server:7421/dump.dt",
"runMigration": false,
"additionalInitializationSteps": [
"vanessa --settings ./tools/vrunner.first.json"
Expand Down
10 changes: 10 additions & 0 deletions vars/createInfoBase.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import ru.pulsar.jenkins.library.configuration.JobConfiguration
import ru.pulsar.jenkins.library.ioc.ContextRegistry
import ru.pulsar.jenkins.library.steps.CreateInfoBase

def call(JobConfiguration config) {
ContextRegistry.registerDefaultContext(this)

def createInfobase = new CreateInfoBase(config)
createInfobase.run()
}
2 changes: 2 additions & 0 deletions vars/pipeline1C.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ void call() {
createDir('build/out')

script {
createInfoBase config

if (config.infoBaseFromFiles()) {
// Создание базы загрузкой из файлов
initFromFiles config
Expand Down