mirror of
https://github.com/firstBitMarksistskaya/jenkins-lib.git
synced 2025-01-07 13:23:36 +02:00
Merge branch 'develop' into feat/53-wait-sq
This commit is contained in:
commit
134b33992b
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
1. Для шага подготовки требуется любой агент с меткой `agent`.
|
1. Для шага подготовки требуется любой агент с меткой `agent`.
|
||||||
1. Для запуска шага анализа SonarQube требуется агент с меткой `sonar`.
|
1. Для запуска шага анализа SonarQube требуется агент с меткой `sonar`.
|
||||||
1. Для запуска шагов, работающих с EDT (валидация, трансформация формата исходников) требуется агент с меткой `edt` и агент с меткой `oscript`, на котором глобально установлена библиотека [stebi](https://github.com/Stepa86/stebi) версии 1.9.1 или новее.
|
1. Для запуска шагов, работающих с EDT (валидация, трансформация формата исходников) требуется агент с меткой `edt` (если используется несколько версий EDT необходимо к метке добавить версию, например `edt@2021.3.4:x86_64`) и агент с меткой `oscript`, на котором глобально установлена библиотека [stebi](https://github.com/Stepa86/stebi) версии 1.9.1 или новее.
|
||||||
1. Для запуска шагов, работающих с 1С (подготовка, синтаксический контроль и т.д.) требуется агент с меткой, совпадающей со значением в поле `v8version` файла конфигурации.
|
1. Для запуска шагов, работающих с 1С (подготовка, синтаксический контроль и т.д.) требуется агент с меткой, совпадающей со значением в поле `v8version` файла конфигурации.
|
||||||
1. В качестве ИБ используется файловая база, создаваемая в каталоге `./build/ib`. При необходимости вы можете создать пользователей на фазе инициализации ИБ.
|
1. В качестве ИБ используется файловая база, создаваемая в каталоге `./build/ib`. При необходимости вы можете создать пользователей на фазе инициализации ИБ.
|
||||||
|
|
||||||
@ -76,6 +76,7 @@ pipeline1C()
|
|||||||
Пример переопределения:
|
Пример переопределения:
|
||||||
|
|
||||||
* указывается точная версия платформы (и соответственно метка агента, см. ограничения)
|
* указывается точная версия платформы (и соответственно метка агента, см. ограничения)
|
||||||
|
* указывается точная версия модуля EDT (и соответственно метка агента, см. ограничения)
|
||||||
* идентификаторы credentials для пути к хранилищу и к паре логин/пароль для авторизации в хранилище (необходимы, если применяются шаги, работающие с информационной базой)
|
* идентификаторы credentials для пути к хранилищу и к паре логин/пароль для авторизации в хранилище (необходимы, если применяются шаги, работающие с информационной базой)
|
||||||
* включаются шаги запуска статического анализа SonarQube, валидации средствами EDT и синтаксического контроля
|
* включаются шаги запуска статического анализа SonarQube, валидации средствами EDT и синтаксического контроля
|
||||||
|
|
||||||
@ -83,6 +84,7 @@ pipeline1C()
|
|||||||
{
|
{
|
||||||
"$schema": "https://raw.githubusercontent.com/firstBitSemenovskaya/jenkins-lib/master/resources/schema.json",
|
"$schema": "https://raw.githubusercontent.com/firstBitSemenovskaya/jenkins-lib/master/resources/schema.json",
|
||||||
"v8version": "8.3.14.1976",
|
"v8version": "8.3.14.1976",
|
||||||
|
"edtVersion": "2021.3.4:x86_64",
|
||||||
"secrets": {
|
"secrets": {
|
||||||
"storagePath": "f7b21c02-711a-4883-81c5-d429454e3f8b",
|
"storagePath": "f7b21c02-711a-4883-81c5-d429454e3f8b",
|
||||||
"storage" : "c1fc5f33-67d4-493f-a2a4-97d3040e4b8c"
|
"storage" : "c1fc5f33-67d4-493f-a2a4-97d3040e4b8c"
|
||||||
@ -103,6 +105,7 @@ pipeline1C()
|
|||||||
|
|
||||||
* Общее:
|
* Общее:
|
||||||
* В качестве маски версии платформы используется строка "8.3" (`v8version`).
|
* В качестве маски версии платформы используется строка "8.3" (`v8version`).
|
||||||
|
* По-умолчанию версия модуля EDT не заполнена, т.к. в случае единственной версии для утилиты ring дополнительного указания не требуется (`edtVersion`).
|
||||||
* Исходники конфигурации ожидаются в каталоге `src/cf` (`srcDir`).
|
* Исходники конфигурации ожидаются в каталоге `src/cf` (`srcDir`).
|
||||||
* Формат исходников - выгрузка из Конфигуратора (`sourceFormat`).
|
* Формат исходников - выгрузка из Конфигуратора (`sourceFormat`).
|
||||||
* Ветка по умолчанию (для комбинированного режима загрузки конфигурации) - "main" (`defaultBranch`).
|
* Ветка по умолчанию (для комбинированного режима загрузки конфигурации) - "main" (`defaultBranch`).
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "schema.json",
|
"$schema": "schema.json",
|
||||||
"v8version": "8.3",
|
"v8version": "8.3",
|
||||||
|
"edtVersion": "",
|
||||||
"srcDir": "src/cf",
|
"srcDir": "src/cf",
|
||||||
"sourceFormat": "designer",
|
"sourceFormat": "designer",
|
||||||
"defaultBranch": "main",
|
"defaultBranch": "main",
|
||||||
@ -44,6 +45,7 @@
|
|||||||
"useSonarScannerFromPath": true,
|
"useSonarScannerFromPath": true,
|
||||||
"sonarScannerToolName": "sonar-scanner",
|
"sonarScannerToolName": "sonar-scanner",
|
||||||
"infoBaseUpdateModuleName" : "",
|
"infoBaseUpdateModuleName" : "",
|
||||||
|
"useBranchPlugin" : true,
|
||||||
"waitForQualityGate": false
|
"waitForQualityGate": false
|
||||||
},
|
},
|
||||||
"syntaxCheck": {
|
"syntaxCheck": {
|
||||||
|
@ -6,6 +6,10 @@
|
|||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Версия платформы 1С:Предприятие в формате 8.3.хх.хххх."
|
"description" : "Версия платформы 1С:Предприятие в формате 8.3.хх.хххх."
|
||||||
},
|
},
|
||||||
|
"edtVersion" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Версия модуля 1C:Enterprise Development Tools формате xxxx.x.x:x86_64"
|
||||||
|
},
|
||||||
"srcDir" : {
|
"srcDir" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Путь к корневому каталогу с исходниками конфигурации, в случае хранения исходников в формате EDT, необходимо указать путь к проекту"
|
"description" : "Путь к корневому каталогу с исходниками конфигурации, в случае хранения исходников в формате EDT, необходимо указать путь к проекту"
|
||||||
@ -174,6 +178,10 @@
|
|||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Имя общего модуля (например, ОбновлениеИнформационнойБазыXXX), в котором указана версия библиотеки.\n Версия должна задаваться в виде присвоения `Описание.Версия = \"ваш номер версии\";`\n "
|
"description" : "Имя общего модуля (например, ОбновлениеИнформационнойБазыXXX), в котором указана версия библиотеки.\n Версия должна задаваться в виде присвоения `Описание.Версия = \"ваш номер версии\";`\n "
|
||||||
},
|
},
|
||||||
|
"useBranchPlugin" : {
|
||||||
|
"type" : "boolean",
|
||||||
|
"description" : "Используется ли Branch-plugin в SonarQube"
|
||||||
|
},
|
||||||
"waitForQualityGate" : {
|
"waitForQualityGate" : {
|
||||||
"type" : "boolean",
|
"type" : "boolean",
|
||||||
"description" : "Ожидать состояние Quality Gate от SonarQube после загрузки анализа. По умолчанию `false`.\n Таймаут ожидания состояния равен таймауту шага.\n "
|
"description" : "Ожидать состояние Quality Gate от SonarQube после загрузки анализа. По умолчанию `false`.\n Таймаут ожидания состояния равен таймауту шага.\n "
|
||||||
|
@ -12,6 +12,9 @@ class JobConfiguration implements Serializable {
|
|||||||
@JsonPropertyDescription("Версия платформы 1С:Предприятие в формате 8.3.хх.хххх.")
|
@JsonPropertyDescription("Версия платформы 1С:Предприятие в формате 8.3.хх.хххх.")
|
||||||
String v8version
|
String v8version
|
||||||
|
|
||||||
|
@JsonPropertyDescription("Версия модуля 1C:Enterprise Development Tools формате xxxx.x.x:x86_64")
|
||||||
|
String edtVersion
|
||||||
|
|
||||||
@JsonPropertyDescription("Путь к корневому каталогу с исходниками конфигурации, в случае хранения исходников в формате EDT, необходимо указать путь к проекту")
|
@JsonPropertyDescription("Путь к корневому каталогу с исходниками конфигурации, в случае хранения исходников в формате EDT, необходимо указать путь к проекту")
|
||||||
String srcDir
|
String srcDir
|
||||||
|
|
||||||
@ -65,6 +68,7 @@ class JobConfiguration implements Serializable {
|
|||||||
String toString() {
|
String toString() {
|
||||||
return "JobConfiguration{" +
|
return "JobConfiguration{" +
|
||||||
"v8version='" + v8version + '\'' +
|
"v8version='" + v8version + '\'' +
|
||||||
|
", edtVersion='" + edtVersion + '\'' +
|
||||||
", srcDir='" + srcDir + '\'' +
|
", srcDir='" + srcDir + '\'' +
|
||||||
", sourceFormat=" + sourceFormat +
|
", sourceFormat=" + sourceFormat +
|
||||||
", stageFlags=" + stageFlags +
|
", stageFlags=" + stageFlags +
|
||||||
@ -90,4 +94,16 @@ class JobConfiguration implements Serializable {
|
|||||||
return (initMethod == InitInfoBaseMethod.FROM_SOURCE) ||
|
return (initMethod == InitInfoBaseMethod.FROM_SOURCE) ||
|
||||||
(initMethod == InitInfoBaseMethod.DEFAULT_BRANCH_FROM_STORAGE && branchName != defaultBranch)
|
(initMethod == InitInfoBaseMethod.DEFAULT_BRANCH_FROM_STORAGE && branchName != defaultBranch)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String v8AgentLabel() {
|
||||||
|
return v8version
|
||||||
|
}
|
||||||
|
|
||||||
|
String edtAgentLabel() {
|
||||||
|
String edtVersionForRing = "edt"
|
||||||
|
if (edtVersion != '') {
|
||||||
|
edtVersionForRing += "@" + edtVersion
|
||||||
|
}
|
||||||
|
return edtVersionForRing
|
||||||
|
}
|
||||||
}
|
}
|
@ -25,6 +25,9 @@ class SonarQubeOptions implements Serializable {
|
|||||||
""")
|
""")
|
||||||
String infoBaseUpdateModuleName
|
String infoBaseUpdateModuleName
|
||||||
|
|
||||||
|
@JsonPropertyDescription("Используется ли Branch-plugin в SonarQube")
|
||||||
|
Boolean useBranchPlugin
|
||||||
|
|
||||||
@JsonPropertyDescription("""Ожидать состояние Quality Gate от SonarQube после загрузки анализа. По умолчанию `false`.
|
@JsonPropertyDescription("""Ожидать состояние Quality Gate от SonarQube после загрузки анализа. По умолчанию `false`.
|
||||||
Таймаут ожидания состояния равен таймауту шага.
|
Таймаут ожидания состояния равен таймауту шага.
|
||||||
""")
|
""")
|
||||||
@ -38,6 +41,7 @@ class SonarQubeOptions implements Serializable {
|
|||||||
", sonarScannerToolName='" + sonarScannerToolName + '\'' +
|
", sonarScannerToolName='" + sonarScannerToolName + '\'' +
|
||||||
", sonarQubeInstallation='" + sonarQubeInstallation + '\'' +
|
", sonarQubeInstallation='" + sonarQubeInstallation + '\'' +
|
||||||
", infoBaseUpdateModuleName='" + infoBaseUpdateModuleName + '\'' +
|
", infoBaseUpdateModuleName='" + infoBaseUpdateModuleName + '\'' +
|
||||||
|
", useBranchPlugin='" + useBranchPlugin + '\'' +
|
||||||
", waitForQualityGate='" + waitForQualityGate + '\'' +
|
", waitForQualityGate='" + waitForQualityGate + '\'' +
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import ru.pulsar.jenkins.library.IStepExecutor
|
|||||||
import ru.pulsar.jenkins.library.configuration.JobConfiguration
|
import ru.pulsar.jenkins.library.configuration.JobConfiguration
|
||||||
import ru.pulsar.jenkins.library.ioc.ContextRegistry
|
import ru.pulsar.jenkins.library.ioc.ContextRegistry
|
||||||
import ru.pulsar.jenkins.library.utils.Constants
|
import ru.pulsar.jenkins.library.utils.Constants
|
||||||
|
import ru.pulsar.jenkins.library.utils.EDT
|
||||||
import ru.pulsar.jenkins.library.utils.Logger
|
import ru.pulsar.jenkins.library.utils.Logger
|
||||||
|
|
||||||
class DesignerToEdtFormatTransformation implements Serializable {
|
class DesignerToEdtFormatTransformation implements Serializable {
|
||||||
@ -34,12 +35,13 @@ class DesignerToEdtFormatTransformation implements Serializable {
|
|||||||
|
|
||||||
def workspaceDir = "$env.WORKSPACE/$WORKSPACE"
|
def workspaceDir = "$env.WORKSPACE/$WORKSPACE"
|
||||||
def configurationRoot = new File(env.WORKSPACE, config.srcDir).getAbsolutePath()
|
def configurationRoot = new File(env.WORKSPACE, config.srcDir).getAbsolutePath()
|
||||||
|
def edtVersionForRing = EDT.ringModule(config)
|
||||||
|
|
||||||
steps.deleteDir(workspaceDir)
|
steps.deleteDir(workspaceDir)
|
||||||
|
|
||||||
Logger.println("Конвертация исходников из формата конфигуратора в формат EDT")
|
Logger.println("Конвертация исходников из формата конфигуратора в формат EDT")
|
||||||
|
|
||||||
def ringCommand = "ring edt workspace import --configuration-files \"$configurationRoot\" --project-name $PROJECT_NAME --workspace-location \"$workspaceDir\""
|
def ringCommand = "ring $edtVersionForRing workspace import --configuration-files \"$configurationRoot\" --project-name $PROJECT_NAME --workspace-location \"$workspaceDir\""
|
||||||
|
|
||||||
def ringOpts = [Constants.DEFAULT_RING_OPTS]
|
def ringOpts = [Constants.DEFAULT_RING_OPTS]
|
||||||
steps.withEnv(ringOpts) {
|
steps.withEnv(ringOpts) {
|
||||||
|
@ -6,6 +6,7 @@ import ru.pulsar.jenkins.library.configuration.JobConfiguration
|
|||||||
import ru.pulsar.jenkins.library.configuration.SourceFormat
|
import ru.pulsar.jenkins.library.configuration.SourceFormat
|
||||||
import ru.pulsar.jenkins.library.ioc.ContextRegistry
|
import ru.pulsar.jenkins.library.ioc.ContextRegistry
|
||||||
import ru.pulsar.jenkins.library.utils.Constants
|
import ru.pulsar.jenkins.library.utils.Constants
|
||||||
|
import ru.pulsar.jenkins.library.utils.EDT
|
||||||
import ru.pulsar.jenkins.library.utils.Logger
|
import ru.pulsar.jenkins.library.utils.Logger
|
||||||
|
|
||||||
class EdtToDesignerFormatTransformation implements Serializable {
|
class EdtToDesignerFormatTransformation implements Serializable {
|
||||||
@ -37,13 +38,14 @@ class EdtToDesignerFormatTransformation implements Serializable {
|
|||||||
def projectDir = new File("$env.WORKSPACE/$srcDir").getCanonicalPath()
|
def projectDir = new File("$env.WORKSPACE/$srcDir").getCanonicalPath()
|
||||||
def workspaceDir = "$env.WORKSPACE/$WORKSPACE"
|
def workspaceDir = "$env.WORKSPACE/$WORKSPACE"
|
||||||
def configurationRoot = "$env.WORKSPACE/$CONFIGURATION_DIR"
|
def configurationRoot = "$env.WORKSPACE/$CONFIGURATION_DIR"
|
||||||
|
def edtVersionForRing = EDT.ringModule(config)
|
||||||
|
|
||||||
steps.deleteDir(workspaceDir)
|
steps.deleteDir(workspaceDir)
|
||||||
steps.deleteDir(configurationRoot)
|
steps.deleteDir(configurationRoot)
|
||||||
|
|
||||||
Logger.println("Конвертация исходников из формата EDT в формат Конфигуратора")
|
Logger.println("Конвертация исходников из формата EDT в формат Конфигуратора")
|
||||||
|
|
||||||
def ringCommand = "ring edt workspace export --workspace-location \"$workspaceDir\" --project \"$projectDir\" --configuration-files \"$configurationRoot\""
|
def ringCommand = "ring $edtVersionForRing workspace export --workspace-location \"$workspaceDir\" --project \"$projectDir\" --configuration-files \"$configurationRoot\""
|
||||||
|
|
||||||
def ringOpts = [Constants.DEFAULT_RING_OPTS]
|
def ringOpts = [Constants.DEFAULT_RING_OPTS]
|
||||||
steps.withEnv(ringOpts) {
|
steps.withEnv(ringOpts) {
|
||||||
|
@ -5,6 +5,7 @@ import ru.pulsar.jenkins.library.configuration.JobConfiguration
|
|||||||
import ru.pulsar.jenkins.library.configuration.SourceFormat
|
import ru.pulsar.jenkins.library.configuration.SourceFormat
|
||||||
import ru.pulsar.jenkins.library.ioc.ContextRegistry
|
import ru.pulsar.jenkins.library.ioc.ContextRegistry
|
||||||
import ru.pulsar.jenkins.library.utils.Constants
|
import ru.pulsar.jenkins.library.utils.Constants
|
||||||
|
import ru.pulsar.jenkins.library.utils.EDT
|
||||||
import ru.pulsar.jenkins.library.utils.Logger
|
import ru.pulsar.jenkins.library.utils.Logger
|
||||||
|
|
||||||
class EdtValidate implements Serializable {
|
class EdtValidate implements Serializable {
|
||||||
@ -40,14 +41,15 @@ class EdtValidate implements Serializable {
|
|||||||
projectList = "--project-name-list $DesignerToEdtFormatTransformation.PROJECT_NAME"
|
projectList = "--project-name-list $DesignerToEdtFormatTransformation.PROJECT_NAME"
|
||||||
} else {
|
} else {
|
||||||
String projectDir = new File("$env.WORKSPACE/$config.srcDir").getCanonicalPath()
|
String projectDir = new File("$env.WORKSPACE/$config.srcDir").getCanonicalPath()
|
||||||
projectList = "--project-list '$projectDir'"
|
projectList = "--project-list \"$projectDir\""
|
||||||
}
|
}
|
||||||
|
|
||||||
def resultFile = "$env.WORKSPACE/$RESULT_FILE"
|
def resultFile = "$env.WORKSPACE/$RESULT_FILE"
|
||||||
|
def edtVersionForRing = EDT.ringModule(config)
|
||||||
|
|
||||||
Logger.println("Выполнение валидации EDT")
|
Logger.println("Выполнение валидации EDT")
|
||||||
|
|
||||||
def ringCommand = "ring edt workspace validate --workspace-location \"$workspaceLocation\" --file \"$resultFile\" $projectList"
|
def ringCommand = "ring $edtVersionForRing workspace validate --workspace-location \"$workspaceLocation\" --file \"$resultFile\" $projectList"
|
||||||
def ringOpts = [Constants.DEFAULT_RING_OPTS]
|
def ringOpts = [Constants.DEFAULT_RING_OPTS]
|
||||||
steps.withEnv(ringOpts) {
|
steps.withEnv(ringOpts) {
|
||||||
steps.catchError {
|
steps.catchError {
|
||||||
|
@ -36,7 +36,11 @@ class SonarScanner implements Serializable {
|
|||||||
sonarScannerBinary = "$scannerHome/bin/sonar-scanner"
|
sonarScannerBinary = "$scannerHome/bin/sonar-scanner"
|
||||||
}
|
}
|
||||||
|
|
||||||
String sonarCommand = "$sonarScannerBinary -Dsonar.branch.name=$env.BRANCH_NAME"
|
String sonarCommand = "$sonarScannerBinary"
|
||||||
|
|
||||||
|
if (config.sonarQubeOptions.useBranchPlugin) {
|
||||||
|
sonarCommand += " -Dsonar.branch.name=$env.BRANCH_NAME"
|
||||||
|
}
|
||||||
|
|
||||||
String projectVersion = computeProjectVersion()
|
String projectVersion = computeProjectVersion()
|
||||||
if (projectVersion) {
|
if (projectVersion) {
|
||||||
|
12
src/ru/pulsar/jenkins/library/utils/EDT.groovy
Normal file
12
src/ru/pulsar/jenkins/library/utils/EDT.groovy
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package ru.pulsar.jenkins.library.utils
|
||||||
|
|
||||||
|
import ru.pulsar.jenkins.library.configuration.JobConfiguration
|
||||||
|
|
||||||
|
final class EDT {
|
||||||
|
|
||||||
|
static String ringModule(JobConfiguration config) {
|
||||||
|
return config.edtAgentLabel()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.pulsar.jenkins.library.configuration;
|
|||||||
|
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import ru.pulsar.jenkins.library.utils.TestUtils;
|
import ru.pulsar.jenkins.library.utils.TestUtils;
|
||||||
|
|
||||||
@ -31,6 +32,7 @@ class ConfigurationReaderTest {
|
|||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(jobConfiguration.getV8version()).isEqualTo("8.3.14.1944");
|
assertThat(jobConfiguration.getV8version()).isEqualTo("8.3.14.1944");
|
||||||
|
assertThat(jobConfiguration.getEdtVersion()).isEqualTo("2021.3.4:x86_64");
|
||||||
|
|
||||||
assertThat(jobConfiguration.getSonarQubeOptions().getSonarScannerToolName()).isEqualTo("sonar-scanner");
|
assertThat(jobConfiguration.getSonarQubeOptions().getSonarScannerToolName()).isEqualTo("sonar-scanner");
|
||||||
assertThat(jobConfiguration.getSonarQubeOptions().getSonarQubeInstallation()).isEqualTo("qa");
|
assertThat(jobConfiguration.getSonarQubeOptions().getSonarQubeInstallation()).isEqualTo("qa");
|
||||||
@ -61,4 +63,52 @@ class ConfigurationReaderTest {
|
|||||||
assertThat(jobConfiguration.getTimeoutOptions().getZipInfoBase()).isEqualTo(123);
|
assertThat(jobConfiguration.getTimeoutOptions().getZipInfoBase()).isEqualTo(123);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testV8AgentLabel() throws IOException {
|
||||||
|
// given
|
||||||
|
String config = IOUtils.resourceToString(
|
||||||
|
"jobConfiguration.json",
|
||||||
|
StandardCharsets.UTF_8,
|
||||||
|
this.getClass().getClassLoader()
|
||||||
|
);
|
||||||
|
|
||||||
|
// when
|
||||||
|
JobConfiguration jobConfiguration = ConfigurationReader.create(config);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(jobConfiguration.v8AgentLabel()).isEqualTo("8.3.14.1944");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testEdtAgentLabel() throws IOException {
|
||||||
|
// given
|
||||||
|
String config = IOUtils.resourceToString(
|
||||||
|
"jobConfiguration.json",
|
||||||
|
StandardCharsets.UTF_8,
|
||||||
|
this.getClass().getClassLoader()
|
||||||
|
);
|
||||||
|
|
||||||
|
// when
|
||||||
|
JobConfiguration jobConfiguration = ConfigurationReader.create(config);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(jobConfiguration.edtAgentLabel()).isEqualTo("edt@2021.3.4:x86_64");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Disabled
|
||||||
|
void testInfoBaseFromFiles() throws IOException {
|
||||||
|
// given
|
||||||
|
String config = IOUtils.resourceToString(
|
||||||
|
"jobConfiguration.json",
|
||||||
|
StandardCharsets.UTF_8,
|
||||||
|
this.getClass().getClassLoader()
|
||||||
|
);
|
||||||
|
|
||||||
|
// when
|
||||||
|
JobConfiguration jobConfiguration = ConfigurationReader.create(config);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(jobConfiguration.infoBaseFromFiles()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package ru.pulsar.jenkins.library.utils;
|
||||||
|
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import ru.pulsar.jenkins.library.configuration.ConfigurationReader;
|
||||||
|
import ru.pulsar.jenkins.library.configuration.JobConfiguration;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
class EDTTest {
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
TestUtils.setupMockedContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testRingModule() throws IOException {
|
||||||
|
|
||||||
|
// given
|
||||||
|
String config = IOUtils.resourceToString(
|
||||||
|
"jobConfiguration.json",
|
||||||
|
StandardCharsets.UTF_8,
|
||||||
|
this.getClass().getClassLoader()
|
||||||
|
);
|
||||||
|
|
||||||
|
// when
|
||||||
|
JobConfiguration jobConfiguration = ConfigurationReader.create(config);
|
||||||
|
String edtModule = EDT.ringModule(jobConfiguration);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(edtModule).isEqualTo("edt@2021.3.4:x86_64");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"v8version": "8.3.14.1944",
|
"v8version": "8.3.14.1944",
|
||||||
|
"edtVersion": "2021.3.4:x86_64",
|
||||||
"secrets": {
|
"secrets": {
|
||||||
"storage": "1234"
|
"storage": "1234"
|
||||||
},
|
},
|
||||||
|
@ -11,6 +11,9 @@ JobConfiguration config
|
|||||||
@Field
|
@Field
|
||||||
String agent1C
|
String agent1C
|
||||||
|
|
||||||
|
@Field
|
||||||
|
String agentEdt
|
||||||
|
|
||||||
void call() {
|
void call() {
|
||||||
|
|
||||||
//noinspection GroovyAssignabilityCheck
|
//noinspection GroovyAssignabilityCheck
|
||||||
@ -35,7 +38,8 @@ void call() {
|
|||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
config = jobConfiguration() as JobConfiguration
|
config = jobConfiguration() as JobConfiguration
|
||||||
agent1C = config.v8version
|
agent1C = config.v8AgentLabel()
|
||||||
|
agentEdt = config.edtAgentLabel()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -54,7 +58,7 @@ void call() {
|
|||||||
stages {
|
stages {
|
||||||
stage('Трансформация из формата EDT') {
|
stage('Трансформация из формата EDT') {
|
||||||
agent {
|
agent {
|
||||||
label 'edt'
|
label agentEdt
|
||||||
}
|
}
|
||||||
when {
|
when {
|
||||||
beforeAgent true
|
beforeAgent true
|
||||||
@ -114,7 +118,7 @@ void call() {
|
|||||||
|
|
||||||
stage('Трансформация в формат EDT') {
|
stage('Трансформация в формат EDT') {
|
||||||
agent {
|
agent {
|
||||||
label 'edt'
|
label agentEdt
|
||||||
}
|
}
|
||||||
when {
|
when {
|
||||||
beforeAgent true
|
beforeAgent true
|
||||||
@ -139,7 +143,7 @@ void call() {
|
|||||||
stages {
|
stages {
|
||||||
stage('Валидация EDT') {
|
stage('Валидация EDT') {
|
||||||
agent {
|
agent {
|
||||||
label 'edt'
|
label agentEdt
|
||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
timeout(time: config.timeoutOptions.edtValidate, unit: TimeUnit.MINUTES) {
|
timeout(time: config.timeoutOptions.edtValidate, unit: TimeUnit.MINUTES) {
|
||||||
|
Loading…
Reference in New Issue
Block a user