Skip to content

Commit

Permalink
Добавил стейдж сборки бинарей
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanovEV committed Jan 18, 2024
1 parent f1e75dd commit 669ba41
Show file tree
Hide file tree
Showing 7 changed files with 130 additions and 15 deletions.
5 changes: 3 additions & 2 deletions resources/globalConfiguration.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,13 @@
"timeout": {
"smoke": 240,
"bdd": 120,
"getBinaries": 60,
"createInfoBase": 60,
"designerToEdtFormatTransformation": 60,
"edtToDesignerFormatTransformation": 60,
"edtValidate": 240,
"initInfoBase": 60,
"loadExtintions": 60,
"loadExtensions": 60,
"resultTransformation": 10,
"sonarqube": 90,
"syntaxCheck": 240,
Expand All @@ -39,7 +40,7 @@
"initMethod": "fromStorage",
"runMigration": true,
"additionalInitializationSteps": [],
"loadExtintionsByDefault": true,
"installExtensionsByDefault": true,
"extensions": []
},
"bdd": {
Expand Down
13 changes: 8 additions & 5 deletions resources/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,10 @@
"type": "integer",
"description": "Таймаут шага трансформации исходников из формата EDT в формат Конфигуратора, в минутах.\n По умолчанию содержит значение 60.\n "
},
"getBinaries": {
"type": "integer",
"description": "Таймаут шага получения бинарников, в минутах.\n По умолчанию содержит значение 60.\n "
},
"createInfoBase": {
"type": "integer",
"description": "Таймаут шага создания информационной базы, в минутах.\n По умолчанию содержит значение 60.\n "
Expand Down Expand Up @@ -161,6 +165,10 @@
"type": "string"
}
},
"installExtensionsByDefault": {
"type": "boolean",
"description": "Устанавливать расширения из папки исходников по умолчанию.\n По умолчанию содержит значение \"true\"."
},
"extensions": {
"type": "array",
"description": "Массив расширений для загрузки в конфигурацию.",
Expand All @@ -181,11 +189,6 @@
"path": {
"type": "string",
"description": "Хранит в себе путь к расширению.\n * В случае если выбран initMethod <fromSource> - указывается путь к исходникам расширения.\n * В случае если выбран initMethod <fromInternet> - указывается ссылка на cfe-файл"
},
"sourceFormat": {
"type": "string",
"description": "Формат исходников конфигурации",
"enum": ["edt", "designer"]
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ class InitInfoBaseOptions implements Serializable {
""")
String[] additionalInitializationSteps

@JsonPropertyDescription("Устанавливать расширения из папки исходников по умолчанию")
Boolean installExtensionsByDefault = true

@JsonPropertyDescription("Массив расширений для загрузки в конфигурацию.")
Extension[] extensions;
Expand All @@ -48,9 +50,6 @@ class InitInfoBaseOptions implements Serializable {
* В случае если выбран initMethod <fromInternet> - указывается ссылка на cfe-файл
""")
String path;

@JsonPropertyDescription("Формат исходников конфигурации")
String sourceFormat;
}

@Override
Expand All @@ -60,6 +59,7 @@ class InitInfoBaseOptions implements Serializable {
"initMethod=" + initMethod +
", runMigration=" + runMigration +
", additionalInitializationSteps=" + additionalInitializationSteps +
", installExtensionsByDefault=" + installExtensionsByDefault +
", extensions=" + extensions +
'}';
}
Expand Down
12 changes: 12 additions & 0 deletions src/ru/pulsar/jenkins/library/configuration/InitMethod.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package ru.pulsar.jenkins.library.configuration

import com.fasterxml.jackson.annotation.JsonProperty

enum initMethod {
@JsonProperty("fromSource")
SOURCE,

@JsonProperty("fromInternet")
INTERNET

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ class EdtToDesignerFormatTransformation implements Serializable {
public static final String CONFIGURATION_DIR = 'build/cfg'
public static final String CONFIGURATION_ZIP = 'build/cfg.zip'
public static final String CONFIGURATION_ZIP_STASH = 'cfg-zip'
public static final String EXTENSION_DIR = 'build/cfe_src'
public static final String EXTENSION_ZIP = 'build/cfe_src.zip'
public static final String EXTENSION_ZIP_STASH = 'cfe_src-zip'

private final JobConfiguration config;

Expand All @@ -39,9 +42,17 @@ class EdtToDesignerFormatTransformation implements Serializable {
def projectDir = FileUtils.getFilePath("$env.WORKSPACE/$srcDir")
def workspaceDir = FileUtils.getFilePath("$env.WORKSPACE/$WORKSPACE")
def configurationRoot = FileUtils.getFilePath("$env.WORKSPACE/$CONFIGURATION_DIR")
def extensionRoot = FileUtils.getFilePath("$env.WORKSPACE/$EXTENSION_DIR")
def edtVersionForRing = EDT.ringModule(config)

steps.deleteDir(workspaceDir)

transformConfiguration(steps, projectDir, workspaceDir, configurationRoot, edtVersionForRing)
// TODO: Переделать когда пойму как выглядит расширение в EDT
// transformExtensions(steps, projectDir, workspaceDir, extensionRoot, edtVersionForRing)
}

private void transformConfiguration(IStepExecutor steps, String projectDir, String workspaceDir, String configurationRoot, String edtVersionForRing) {
steps.deleteDir(configurationRoot)

Logger.println("Конвертация исходников из формата EDT в формат Конфигуратора")
Expand All @@ -57,4 +68,21 @@ class EdtToDesignerFormatTransformation implements Serializable {
steps.stash(CONFIGURATION_ZIP_STASH, CONFIGURATION_ZIP)
}

// TODO: Переделать когда пойму как выглядит расширение в EDT
private void transformExtensions(IStepExecutor steps, String projectDir, String workspaceDir, String extensionRoot, String edtVersionForRing) {
steps.deleteDir(extensionRoot)

Logger.println("Конвертация исходников расширений из формата EDT в формат Конфигуратора")

def ringCommand = "ring $edtVersionForRing workspace export --workspace-location \"$workspaceDir\" --project \"$projectDir\" --configuration-files \"$extensionRoot\""

def ringOpts = [Constants.DEFAULT_RING_OPTS]
steps.withEnv(ringOpts) {
steps.cmd(ringCommand)
}

steps.zip(EXTENSION_DIR, EXTENSION_ZIP)
steps.stash(EXTENSION_ZIP_STASH, EXTENSION_ZIP)
}

}
74 changes: 74 additions & 0 deletions src/ru/pulsar/jenkins/library/steps/GetExtesnions.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package ru.pulsar.jenkins.library.steps

import ru.pulsar.jenkins.library.IStepExecutor
import ru.pulsar.jenkins.library.configuration.JobConfiguration
import ru.pulsar.jenkins.library.configuration.SourceFormat
import ru.pulsar.jenkins.library.configuration.InitMethod
import ru.pulsar.jenkins.library.ioc.ContextRegistry
import ru.pulsar.jenkins.library.utils.Logger
import ru.pulsar.jenkins.library.utils.VRunner

class GetExtensions implements Serializable {

public static final String EXTENSIONS_OUT_DIR = 'build/out/cfe'

private final JobConfiguration config;
private final String vrunnerPath = VRunner.getVRunnerPath();
private final String srcDir = getSrcDir();

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

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

Logger.printLocation()

steps.installLocalDependencies();

Logger.println("Сборка расширений")

config.initInfoBaseOptions.extensions.each {
if (it.initMethod == InitMethod.SOURCE) {
Logger.println("Сборка расширения ${it.name} из исходников")
buildExtension(it)
} else {
Logger.println("Загрузка расширения ${it.name} из интернета по ссылке ${it.path}")
loadExtension(it)
}
}
}

private void buildExtension(Extension extension) {

String name = extension.name;

def compileExtCommand = "$vrunnerPath compileexttocfe --src $srcDir/${name} --out $EXTENSIONS_OUT_DIR/${name}.cfe"
List<String> logosConfig = ["LOGOS_CONFIG=$config.logosConfig"]
steps.withEnv(logosConfig) {
VRunner.exec(compileExtCommand)
}
}

private void loadExtension(Extension extension) {
String pathToExtension = "$env.WORKSPACE/${EXTENSIONS_OUT_DIR}/${extension.name}.cfe"
FilePath localPathToExtension = FileUtils.getFilePath(pathToExtension)
localPathToExtension.copyFrom(new URL(extension.path))
}

private String getSrcDir() {
if (config.sourceFormat == SourceFormat.EDT) {
def env = steps.env();

sourceDirName = "$env.WORKSPACE/$EdtToDesignerFormatTransformation.EXTENSION_DIR"
// распакуем расширения
steps.unstash(EdtToDesignerFormatTransformation.EXTENSION_ZIP_STASH)
steps.unzip(sourceDirName, EdtToDesignerFormatTransformation.EXTENSION_ZIP)

return sourceDirName;
} else {
return config.srcDir;
}
}
}
7 changes: 2 additions & 5 deletions src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,9 @@ class LoadExtensions implements Serializable {
steps.withEnv(logosConfig) {

String vrunnerPath = VRunner.getVRunnerPath();

steps.catchError {

config.initInfoBaseOptions.extensions.each {
Logger.println("Установим расширение ${it.name}")
config.initInfoBaseOptions.extensions.each {
Logger.println("Установим расширение ${it.name}")

// if (config.sourceFormat == SourceFormat.EDT) {
// def env = steps.env();
Expand All @@ -41,7 +39,6 @@ class LoadExtensions implements Serializable {
// }

// VRunner.exec("$vrunnerPath ${it} --ibconnection \"/F./build/ib\"")
}
}
}
}
Expand Down

0 comments on commit 669ba41

Please sign in to comment.