Skip to content

Commit

Permalink
fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
ovcharenko-di committed Nov 14, 2024
1 parent d32239d commit 9c4fea0
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 10 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
1. Для шага подготовки требуется любой агент с меткой `agent`.
1. Для запуска шага анализа SonarQube требуется агент с меткой `sonar`.
1. Для запуска шагов, работающих с EDT (валидация, трансформация формата исходников) требуется агент с меткой `edt` (если используется несколько версий EDT необходимо к метке добавить версию, например `[email protected]:x86_64`) и агент с меткой `oscript`, на котором глобально установлена библиотека [stebi](https://github.com/Stepa86/stebi) версии 1.11.1 и выше или [edt-ripper](https://github.com/bia-technologies/edt_ripper).
1. При использовании EDT версии 2024.1.0 и выше вместо ring используется 1cedtcli, который должен быть прописан в PATH на агенте.
1. Для запуска шагов, работающих с 1С (подготовка, синтаксический контроль и т.д.) требуется агент с меткой, совпадающей со значением в поле `v8version` файла конфигурации.
1. В качестве ИБ используется файловая база, создаваемая в каталоге `./build/ib`. При необходимости вы можете создать пользователей на фазе инициализации ИБ.

Expand Down
34 changes: 28 additions & 6 deletions src/ru/pulsar/jenkins/library/edt/EdtCliEngineFactory.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,37 @@ import java.lang.module.ModuleDescriptor

class EdtCliEngineFactory {

private static final ModuleDescriptor.Version EDT_CLI_MIN_VERSION = ModuleDescriptor.Version.parse("2024")

/**
* Создает движок конвертации в зависимости от версии EDT
* @param edtVersion версия EDT в формате YYYY.X.Z, YYYY.X или YYYY
* @return IEdtCliEngine подходящая реализация движка
* @throws IllegalArgumentException если версия имеет некорректный формат
*/
static IEdtCliEngine getEngine(String edtVersion) {

def currentVersion = ModuleDescriptor.Version.parse(edtVersion)
def version2024 = ModuleDescriptor.Version.parse("2024")
if (edtVersion == null || edtVersion.trim().empty) {
throw new IllegalArgumentException("Версия EDT не может быть пустой")
}

try {
def currentVersion = ModuleDescriptor.Version.parse(edtVersion)

if (currentVersion < version2024) {
return new RingConverter()
} else {
return new NativeEdtCliConverter()
return isEdtCliRequired(currentVersion)
? new NativeEdtCliConverter()
: new RingConverter()
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException("Некорректный формат версии EDT: ${edtVersion}", e)
}
}

/**
* Проверяет необходимость использования 1cedtcli
* @param edtVersion текущая версия EDT
* @return true если нужно использовать 1cedtcli
*/
private static boolean isEdtCliRequired (ModuleDescriptor.Version edtVersion) {
return edtVersion >= EDT_CLI_MIN_VERSION
}
}
11 changes: 7 additions & 4 deletions src/ru/pulsar/jenkins/library/edt/NativeEdtCliConverter.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,19 @@ class NativeEdtCliConverter implements IEdtCliEngine {
@Override
void edtToDesignerTransformConfiguration(IStepExecutor steps, JobConfiguration config) {

def env = steps.env()

String workspaceDir = FileUtils.getFilePath("$env.WORKSPACE/$EdtToDesignerFormatTransformation.WORKSPACE").getRemote()
String projectWorkspaceDir = FileUtils.getFilePath("$workspaceDir/cf").getRemote()
String configurationRoot = FileUtils.getFilePath("$env.WORKSPACE/$EdtToDesignerFormatTransformation.CONFIGURATION_DIR").getRemote()
def configurationRoot = FileUtils.getFilePath("$env.WORKSPACE/$EdtToDesignerFormatTransformation.CONFIGURATION_DIR")
String configurationRootFullPath = configurationRoot.getRemote()

Logger.println("Конвертация исходников конфигурации из формата EDT в формат Конфигуратора с помощью ring")

steps.deleteDir(configurationRoot)

def projectName = configurationRoot.getName()
def edtcliCommand = "1cedtcli -data \"$projectWorkspaceDir\" -command export --configuration-files \"$configurationRoot\" --project-name $projectName"
def edtcliCommand = "1cedtcli -data \"$projectWorkspaceDir\" -command export --configuration-files \"$configurationRootFullPath\" --project-name \"$projectName\""

steps.cmd(edtcliCommand)

Expand All @@ -48,7 +51,7 @@ class NativeEdtCliConverter implements IEdtCliEngine {

def edtcliCommand = "1cedtcli -data \"$currentExtensionWorkspaceDir\" -command export --configuration-files \"$extensionRoot/${it.name}\" --project-name ${it.name}"

steps.cmd(edtcliCommand)
steps.cmd(edtcliCommand)

}

Expand All @@ -68,7 +71,7 @@ class NativeEdtCliConverter implements IEdtCliEngine {

Logger.println("Конвертация исходников из формата конфигуратора в формат EDT с помощью 1cedtcli")

def edtcliCommand = "1cedtcli -data \"$workspaceDir\" -command import --configuration-files \"$configurationRoot\" --project-name $projectName"
def edtcliCommand = "1cedtcli -data \"$workspaceDir\" -command import --configuration-files \"$configurationRoot\" --project-name \"$projectName\""

steps.cmd(edtcliCommand)

Expand Down

0 comments on commit 9c4fea0

Please sign in to comment.