2021-06-16 10:29:35 +03:00
|
|
|
/* groovylint-disable NestedBlockDepth */
|
2020-04-15 13:50:24 +03:00
|
|
|
import groovy.transform.Field
|
2020-04-03 17:40:02 +03:00
|
|
|
import ru.pulsar.jenkins.library.configuration.JobConfiguration
|
2021-11-01 17:45:57 +03:00
|
|
|
import ru.pulsar.jenkins.library.configuration.SourceFormat
|
2022-05-20 20:49:01 +03:00
|
|
|
import ru.pulsar.jenkins.library.utils.RepoUtils
|
2020-04-03 17:40:02 +03:00
|
|
|
|
|
|
|
import java.util.concurrent.TimeUnit
|
|
|
|
|
2020-04-15 13:50:24 +03:00
|
|
|
@Field
|
|
|
|
JobConfiguration config
|
|
|
|
|
|
|
|
@Field
|
2021-06-16 10:29:35 +03:00
|
|
|
String agent1C
|
2020-04-03 17:40:02 +03:00
|
|
|
|
2022-05-13 23:37:42 +03:00
|
|
|
@Field
|
|
|
|
String agentEdt
|
|
|
|
|
2020-04-03 18:15:05 +03:00
|
|
|
void call() {
|
2020-04-03 17:40:02 +03:00
|
|
|
|
|
|
|
//noinspection GroovyAssignabilityCheck
|
|
|
|
pipeline {
|
|
|
|
agent none
|
|
|
|
|
|
|
|
options {
|
|
|
|
buildDiscarder(logRotator(numToKeepStr: '30'))
|
|
|
|
timestamps()
|
2020-10-30 16:37:12 +03:00
|
|
|
}
|
|
|
|
|
2020-04-03 17:40:02 +03:00
|
|
|
stages {
|
|
|
|
|
2020-04-03 18:15:05 +03:00
|
|
|
stage('pre-stage') {
|
2020-04-04 12:09:58 +03:00
|
|
|
agent {
|
|
|
|
label 'agent'
|
|
|
|
}
|
2021-11-25 11:33:47 +03:00
|
|
|
options {
|
|
|
|
timeout(time: 1, unit: TimeUnit.HOURS)
|
|
|
|
}
|
2020-10-30 17:02:16 +03:00
|
|
|
|
2020-04-03 18:16:21 +03:00
|
|
|
steps {
|
|
|
|
script {
|
|
|
|
config = jobConfiguration() as JobConfiguration
|
2022-05-16 12:17:16 +03:00
|
|
|
agent1C = config.v8AgentLabel()
|
|
|
|
agentEdt = config.edtAgentLabel()
|
2022-05-20 20:49:01 +03:00
|
|
|
RepoUtils.computeRepoSlug(env.GIT_URL)
|
2020-04-03 18:16:21 +03:00
|
|
|
}
|
|
|
|
}
|
2020-04-03 18:15:05 +03:00
|
|
|
}
|
|
|
|
|
2020-04-29 13:09:54 +03:00
|
|
|
stage('Подготовка') {
|
|
|
|
parallel {
|
|
|
|
stage('Подготовка 1C базы') {
|
2020-04-29 13:52:07 +03:00
|
|
|
when {
|
|
|
|
beforeAgent true
|
2021-12-08 17:02:29 +03:00
|
|
|
expression { config.stageFlags.needInfoBase() }
|
2020-04-29 13:52:07 +03:00
|
|
|
}
|
2020-04-03 17:40:02 +03:00
|
|
|
|
2020-10-15 14:51:58 +03:00
|
|
|
stages {
|
2021-08-20 14:59:50 +05:00
|
|
|
stage('Трансформация из формата EDT') {
|
|
|
|
agent {
|
2022-05-13 23:37:42 +03:00
|
|
|
label agentEdt
|
2021-08-20 14:59:50 +05:00
|
|
|
}
|
|
|
|
when {
|
|
|
|
beforeAgent true
|
2021-12-08 17:02:29 +03:00
|
|
|
expression { config.stageFlags.needInfoBase() && config.infoBaseFromFiles() && config.sourceFormat == SourceFormat.EDT }
|
2021-08-20 14:59:50 +05:00
|
|
|
}
|
|
|
|
steps {
|
2021-12-07 18:07:36 +03:00
|
|
|
timeout(time: config.timeoutOptions.edtToDesignerFormatTransformation, unit: TimeUnit.MINUTES) {
|
2021-11-25 11:33:47 +03:00
|
|
|
edtToDesignerFormatTransformation config
|
|
|
|
}
|
2021-08-20 14:59:50 +05:00
|
|
|
}
|
|
|
|
}
|
2021-08-04 13:01:11 +05:00
|
|
|
|
2022-05-20 22:42:04 +03:00
|
|
|
stage('Подготовка 1С базы') {
|
|
|
|
agent {
|
|
|
|
label agent1C
|
|
|
|
}
|
|
|
|
|
|
|
|
stages {
|
2024-03-14 12:56:09 +03:00
|
|
|
stage('Сборка расширений из исходников') {
|
2024-01-19 14:50:38 +03:00
|
|
|
when {
|
|
|
|
expression { config.needLoadExtensions() }
|
|
|
|
}
|
|
|
|
steps {
|
|
|
|
timeout(time: config.timeoutOptions.getBinaries, unit: TimeUnit.MINUTES) {
|
|
|
|
createDir('build/out/cfe')
|
|
|
|
// Соберем или загрузим cfe из исходников и положим их в папку build/out/cfe
|
|
|
|
getExtensions config
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-05-20 22:42:04 +03:00
|
|
|
stage('Создание ИБ') {
|
|
|
|
steps {
|
|
|
|
timeout(time: config.timeoutOptions.createInfoBase, unit: TimeUnit.MINUTES) {
|
2024-01-19 14:50:38 +03:00
|
|
|
createDir('build/out/')
|
2022-05-20 22:42:04 +03:00
|
|
|
|
|
|
|
script {
|
|
|
|
if (config.infoBaseFromFiles()) {
|
|
|
|
// Создание базы загрузкой из файлов
|
|
|
|
initFromFiles config
|
|
|
|
} else {
|
|
|
|
// Создание базы загрузкой конфигурации из хранилища
|
|
|
|
initFromStorage config
|
|
|
|
}
|
|
|
|
}
|
2021-11-25 11:33:47 +03:00
|
|
|
}
|
2021-08-19 21:51:02 +05:00
|
|
|
}
|
2021-08-09 07:51:42 +05:00
|
|
|
}
|
2020-04-04 12:00:16 +03:00
|
|
|
|
2022-05-20 22:42:04 +03:00
|
|
|
stage('Инициализация ИБ') {
|
|
|
|
when {
|
|
|
|
beforeAgent true
|
|
|
|
expression { config.stageFlags.initSteps }
|
|
|
|
}
|
|
|
|
steps {
|
|
|
|
timeout(time: config.timeoutOptions.initInfoBase, unit: TimeUnit.MINUTES) {
|
|
|
|
// Инициализация и первичная миграция
|
|
|
|
initInfobase config
|
|
|
|
}
|
|
|
|
}
|
2021-11-25 11:33:47 +03:00
|
|
|
}
|
2020-04-15 12:27:24 +03:00
|
|
|
|
2024-01-19 14:50:38 +03:00
|
|
|
stage('Загрузка расширений в конфигурацию'){
|
|
|
|
when {
|
|
|
|
beforeAgent true
|
|
|
|
expression { config.needLoadExtensions() }
|
|
|
|
}
|
|
|
|
steps {
|
|
|
|
timeout(time: config.timeoutOptions.loadExtensions, unit: TimeUnit.MINUTES) {
|
|
|
|
loadExtensions config
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-05-20 22:42:04 +03:00
|
|
|
stage('Архивация ИБ') {
|
|
|
|
steps {
|
|
|
|
timeout(time: config.timeoutOptions.zipInfoBase, unit: TimeUnit.MINUTES) {
|
|
|
|
printLocation()
|
2020-10-15 14:51:58 +03:00
|
|
|
|
2022-05-20 22:42:04 +03:00
|
|
|
zipInfobase()
|
|
|
|
}
|
|
|
|
}
|
2021-11-25 11:33:47 +03:00
|
|
|
}
|
2020-10-15 14:51:58 +03:00
|
|
|
}
|
|
|
|
}
|
2020-04-03 17:40:02 +03:00
|
|
|
}
|
2020-10-15 14:51:58 +03:00
|
|
|
|
2020-04-04 12:00:16 +03:00
|
|
|
}
|
2020-04-03 17:40:02 +03:00
|
|
|
|
2020-04-29 13:09:54 +03:00
|
|
|
stage('Трансформация в формат EDT') {
|
|
|
|
agent {
|
2022-05-13 23:37:42 +03:00
|
|
|
label agentEdt
|
2020-04-29 13:09:54 +03:00
|
|
|
}
|
2020-04-29 13:52:07 +03:00
|
|
|
when {
|
|
|
|
beforeAgent true
|
2021-11-25 11:33:47 +03:00
|
|
|
expression { config.sourceFormat == SourceFormat.DESIGNER && config.stageFlags.edtValidate }
|
2020-04-29 13:52:07 +03:00
|
|
|
}
|
2020-04-29 13:09:54 +03:00
|
|
|
steps {
|
2021-12-07 18:07:36 +03:00
|
|
|
timeout(time: config.timeoutOptions.designerToEdtFormatTransformation, unit: TimeUnit.MINUTES) {
|
2021-11-25 11:33:47 +03:00
|
|
|
designerToEdtFormatTransformation config
|
|
|
|
}
|
2020-04-03 17:40:02 +03:00
|
|
|
}
|
|
|
|
}
|
2020-04-29 13:09:54 +03:00
|
|
|
}
|
|
|
|
}
|
2020-04-28 17:43:47 +03:00
|
|
|
|
2020-04-29 13:09:54 +03:00
|
|
|
stage('Проверка качества') {
|
|
|
|
parallel {
|
|
|
|
stage('EDT контроль') {
|
2020-04-29 13:52:07 +03:00
|
|
|
when {
|
|
|
|
beforeAgent true
|
|
|
|
expression { config.stageFlags.edtValidate }
|
|
|
|
}
|
2021-11-04 17:26:10 +03:00
|
|
|
stages {
|
|
|
|
stage('Валидация EDT') {
|
|
|
|
agent {
|
2022-05-13 23:37:42 +03:00
|
|
|
label agentEdt
|
2021-11-04 17:26:10 +03:00
|
|
|
}
|
|
|
|
steps {
|
2021-12-07 18:07:36 +03:00
|
|
|
timeout(time: config.timeoutOptions.edtValidate, unit: TimeUnit.MINUTES) {
|
2021-11-25 11:33:47 +03:00
|
|
|
edtValidate config
|
|
|
|
}
|
2021-11-04 17:26:10 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
stage('Трансформация результатов') {
|
|
|
|
agent {
|
|
|
|
label 'oscript'
|
|
|
|
}
|
|
|
|
steps {
|
2021-12-07 18:07:36 +03:00
|
|
|
timeout(time: config.timeoutOptions.resultTransformation, unit: TimeUnit.MINUTES) {
|
2021-11-25 11:33:47 +03:00
|
|
|
transform config
|
|
|
|
}
|
2021-11-04 17:26:10 +03:00
|
|
|
}
|
|
|
|
}
|
2020-04-28 17:43:47 +03:00
|
|
|
}
|
|
|
|
}
|
2020-04-29 13:09:54 +03:00
|
|
|
|
2020-10-21 12:27:51 +03:00
|
|
|
stage('BDD сценарии') {
|
2020-10-21 16:12:45 +03:00
|
|
|
agent {
|
|
|
|
label agent1C
|
|
|
|
}
|
2020-10-21 12:27:51 +03:00
|
|
|
when {
|
|
|
|
beforeAgent true
|
|
|
|
expression { config.stageFlags.bdd }
|
|
|
|
}
|
|
|
|
steps {
|
2021-12-07 18:07:36 +03:00
|
|
|
timeout(time: config.timeoutOptions.bdd, unit: TimeUnit.MINUTES) {
|
2021-11-25 11:33:47 +03:00
|
|
|
unzipInfobase()
|
|
|
|
|
|
|
|
bdd config
|
|
|
|
}
|
2020-10-21 12:27:51 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-04-29 13:09:54 +03:00
|
|
|
stage('Синтаксический контроль') {
|
|
|
|
agent {
|
|
|
|
label agent1C
|
|
|
|
}
|
2020-04-29 13:52:07 +03:00
|
|
|
when {
|
|
|
|
beforeAgent true
|
|
|
|
expression { config.stageFlags.syntaxCheck }
|
|
|
|
}
|
2020-04-29 13:09:54 +03:00
|
|
|
steps {
|
2021-12-07 18:07:36 +03:00
|
|
|
timeout(time: config.timeoutOptions.syntaxCheck, unit: TimeUnit.MINUTES) {
|
2021-11-25 11:33:47 +03:00
|
|
|
syntaxCheck config
|
|
|
|
}
|
2020-04-29 13:09:54 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
stage('Дымовые тесты') {
|
|
|
|
agent {
|
|
|
|
label agent1C
|
|
|
|
}
|
2020-04-29 13:52:07 +03:00
|
|
|
when {
|
|
|
|
beforeAgent true
|
|
|
|
expression { config.stageFlags.smoke }
|
|
|
|
}
|
2020-04-29 13:09:54 +03:00
|
|
|
steps {
|
2021-12-07 18:07:36 +03:00
|
|
|
timeout(time: config.timeoutOptions.smoke, unit: TimeUnit.MINUTES) {
|
2021-11-25 11:33:47 +03:00
|
|
|
unzipInfobase()
|
2021-11-18 17:19:01 +03:00
|
|
|
|
2021-11-25 11:33:47 +03:00
|
|
|
smoke config
|
|
|
|
}
|
2020-04-29 13:09:54 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-04-28 17:43:47 +03:00
|
|
|
stage('SonarQube') {
|
|
|
|
agent {
|
|
|
|
label 'sonar'
|
|
|
|
}
|
2020-04-29 13:52:07 +03:00
|
|
|
when {
|
|
|
|
beforeAgent true
|
|
|
|
expression { config.stageFlags.sonarqube }
|
|
|
|
}
|
2020-04-28 17:43:47 +03:00
|
|
|
steps {
|
2021-12-07 18:07:36 +03:00
|
|
|
timeout(time: config.timeoutOptions.sonarqube, unit: TimeUnit.MINUTES) {
|
2021-11-25 11:33:47 +03:00
|
|
|
sonarScanner config
|
|
|
|
}
|
2020-04-03 17:40:02 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-10-19 16:48:07 +03:00
|
|
|
|
|
|
|
post('post-stage') {
|
|
|
|
always {
|
|
|
|
node('agent') {
|
|
|
|
saveResults config
|
2022-05-20 20:49:35 +03:00
|
|
|
sendNotifications(config)
|
2020-10-19 16:48:07 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-04-03 17:40:02 +03:00
|
|
|
}
|
2020-04-15 12:27:24 +03:00
|
|
|
|
2020-04-04 12:00:16 +03:00
|
|
|
}
|