Skip to content

Commit

Permalink
Merge branch 'release/v.0.14.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
arkuznetsov committed May 30, 2020
2 parents 7c5de9c + a25c077 commit c62d169
Show file tree
Hide file tree
Showing 13 changed files with 285 additions and 22 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,6 @@ coverage/
*.ospx
tests/fixtures/ПараметрыТестирования.txt

oscript_modules
oscript_modules
tests_bdd.xml
tests.xml
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[submodule "tools/docker/onec-full"]
path = tools/docker/onec-full
url = https://github.com/TheDemonCat/onec-full.git
[submodule "tools/docker/onec-server"]
path = tools/docker/onec-server
url = https://github.com/TheDemonCat/onec-server.git
86 changes: 86 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
pipeline {
agent { label 'docker' }

post {
always {
script{
def secrets = [
[path: "DevOps/RELEASE_VERSIONS", engineVersion: 2, secretValues: [
[envVar: 'ONEC_VERSION', vaultKey: 'ONEC']
]],
[path: "DevOps/ONEC_RELEASE", engineVersion: 2, secretValues: [
[envVar: 'ONEC_USERNAME', vaultKey: 'user'],
[envVar: 'ONEC_PASSWORD', vaultKey: 'password']]]
]
withVault([configuration: [timeout: 60], vaultSecrets: secrets ]){
sh "docker-compose --project-name $BUILD_TAG --file tools/docker/onec/docker-compose.yml down"
}
}
junit allowEmptyResults: true, testResults: '**/tests*.xml'
}
}

options {
buildDiscarder(logRotator(numToKeepStr: '10'))
timeout(time: 90, unit: 'MINUTES')
timestamps()
}

environment {
ONEC_VERSION = vault path: "DevOps/RELEASE_VERSIONS", key: 'ONEC'
}

stages {

stage('onec prepare') {
steps {
script{

def secrets = [
[path: "DevOps/ONEC_RELEASE", engineVersion: 2, secretValues: [
[envVar: 'ONEC_USERNAME', vaultKey: 'user'],
[envVar: 'ONEC_PASSWORD', vaultKey: 'password']]]
]
withVault([configuration: [timeout: 60], vaultSecrets: secrets ]){
sh 'docker-compose --file tools/docker/onec/docker-compose.yml pull'
sh "docker-compose --project-name $BUILD_TAG --file tools/docker/onec/docker-compose.yml up -d"
}
}
}
}

stage('BDD testing') {
steps {
echo 'Starting to build docker image'
script {
def secrets = [
[path: "infastructure/gitlab", engineVersion: 2, secretValues: [
[envVar: 'CI_BOT_TOKEN', vaultKey: 'ci-bot']
]]]
withVault([configuration: [timeout: 60], vaultSecrets: secrets ]){
withDockerContainer(args: "--network ${BUILD_TAG}_onec-net", image: 'registry.oskk.1solution.ru/docker-images/onec-oscript:8.3.14.1993-1.3.0') {
sh '''1bdd exec -junit-out tests_bdd.xml ./features '''
}
}
}
}
}

stage('TDD testing') {
steps {
echo 'Starting to build docker image'
script {
def secrets = [
[path: "infastructure/gitlab", engineVersion: 2, secretValues: [
[envVar: 'CI_BOT_TOKEN', vaultKey: 'ci-bot']
]]]
withVault([configuration: [timeout: 60], vaultSecrets: secrets ]){
withDockerContainer(args: "--network ${BUILD_TAG}_onec-net", image: 'registry.oskk.1solution.ru/docker-images/onec-oscript:8.3.14.1993-1.3.0') {
sh '1testrunner -runall ./tests xddReportPath .'
}
}
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#Использовать "../../../src"

// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd

Перем БДД; //контекст фреймворка 1bdd

// Метод выдает список шагов, реализованных в данном файле-шагов
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
БДД = КонтекстФреймворкаBDD;

ВсеШаги = Новый Массив;

ВсеШаги.Добавить("ЯВызываюФункциюСозданияИнформационнойБазыСИменемВКластере");

Возврат ВсеШаги;
КонецФункции

// Реализация шагов

// Процедура выполняется перед запуском каждого сценария
Процедура ПередЗапускомСценария(Знач Узел) Экспорт
Лог = Служебный.Лог();

Лог.УстановитьУровень(УровниЛога.Отладка);

КонецПроцедуры

// Процедура выполняется после завершения каждого сценария
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт

КонецПроцедуры

//получаю список информационных баз
Процедура ПолучаюСписокИнформационныхБаз() Экспорт
ВызватьИсключение Новый ИнформацияОбОшибке("Шаг <ПолучаюСписокИнформационныхБаз> не реализован", "Не реализовано.");
КонецПроцедуры

//в списке информационных баз существует база с именем "IRAC_TEST"
Процедура ВСпискеИнформационныхБазСуществуетБазаСИменем(Знач ПарамСтрока1) Экспорт
ВызватьИсключение Новый ИнформацияОбОшибке("Шаг <ВСпискеИнформационныхБазСуществуетБазаСИменем> не реализован", "Не реализовано.");
КонецПроцедуры

//Я вызываю функцию создания информационной базы с именем "IRAC_TEST" в кластере "server"
Процедура ЯВызываюФункциюСозданияИнформационнойБазыСИменемВКластере(Знач ИмяБазы, Знач АдресКластера) Экспорт

АгентКластера = Новый УправлениеКластером1С(, АдресКластера);

Кластеры = АгентКластера.Кластеры();

Кластер = Кластеры.Получить(АдресКластера);

ИБ = Кластер.ИнформационныеБазы();

ПараметрыИБ = Новый Структура();

ПараметрыИБ.Вставить("ТипСУБД" , Перечисления.ТипыСУБД.PostgreSQL);
ПараметрыИБ.Вставить("АдресСервераСУБД" , "db");
ПараметрыИБ.Вставить("ИмяБазыСУБД" , ИмяБазы);
ПараметрыИБ.Вставить("ИмяПользователяБазыСУБД" , "postgres");
ПараметрыИБ.Вставить("ПарольПользователяБазыСУБД" , "password");
ПараметрыИБ.Вставить("БлокировкаРегламентныхЗаданийВключена", Перечисления.СостоянияВыключателя.Выключено);
ПараметрыИБ.Вставить("ВыдачаЛицензийСервером" , Перечисления.ПраваДоступа.Разрешено);

ИБ.ОбновитьДанные(Истина);
КоличествоИБ = ИБ.Количество();

ИБ.Добавить(ИмяБазы, , Истина, ПараметрыИБ);

КонецПроцедуры
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

# language: ru

Функционал: Взаимодействие с кластером серверов
Как Администратор кластера
Я хочу програмно управлять кластером серверов
Чтобы что бы автоматизировать развертывание инфраструктуры 1С

Сценарий: Создание информационной базы
Когда Я вызываю функцию создания информационной базы с именем "IRAC_TEST1" в кластере "ras"
4 changes: 2 additions & 2 deletions packagedef
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@

Описание.Имя("irac")
.Версия("0.13.0")
.Версия("0.14.0")
.Автор("Artem Kuznetsov")
.АдресАвтора("ArKuznetsov@gmail.com")
.Описание("Библиотека администрирования кластера серверов 1С")
.ВерсияСреды("1.0.20")
.ВерсияСреды("1.3.0")
.ЗависитОт("asserts")
.ЗависитОт("fs")
.ЗависитОт("logos", "1.0.2")
Expand Down
8 changes: 7 additions & 1 deletion src/Классы/Кластеры.os
Original file line number Diff line number Diff line change
Expand Up @@ -154,14 +154,20 @@
АдресКластера = СтрРазделить(Кластер, ":");

Если АдресКластера.Количество() = 1 Тогда
ПортКластера = 1541;
ПортКластера = "1541";
АдресКластера.Добавить(ПортКластера);
КонецЕсли;

Отбор = Новый Соответствие();

Сообщить("АдресКластера[0] " + АдресКластера[0]);
Сообщить("АдресКластера[1] " + АдресКластера[1]);

Отбор.Вставить("host", АдресКластера[0]);
Отбор.Вставить("port", АдресКластера[1]);

Список = Элементы.Список();

СписокКластеров = Элементы.Список(Отбор, ОбновитьПринудительно, КакСоответствие);

Если СписокКластеров.Количество() = 0 Тогда
Expand Down
33 changes: 23 additions & 10 deletions src/Классы/КомандыОбъекта.os
Original file line number Diff line number Diff line change
Expand Up @@ -209,15 +209,6 @@

Если ТипЗнч(Параметр) = Тип("Структура") Тогда

Флаг = Истина;
Если Параметр.Свойство("Флаг") Тогда
Флаг = ЗначениеФлага(Параметр.Флаг);
КонецЕсли;

Если НЕ Флаг Тогда
Возврат;
КонецЕсли;

Обязательный = Ложь;
Если Параметр.Свойство("Обязательный") Тогда
Обязательный = Параметр.Обязательный;
Expand All @@ -227,6 +218,8 @@
ДобавитьПараметрыАвторизации(Параметр.Авторизация, Параметр.Параметр, ЗначенияПараметров[Параметр.ПараметрИд]);
ИначеЕсли Параметр.Свойство("Шаблон") Тогда
ДобавитьПараметрПоШаблону(Параметр.Шаблон, Параметр.Параметр, Обязательный);
ИначеЕсли Параметр.Свойство("Флаг") Тогда
ДобавитьПараметрФлаг(Параметр.Флаг, Параметр.Параметр);
Иначе
ДобавитьПараметрПоИмени(Параметр.Параметр);
КонецЕсли;
Expand Down Expand Up @@ -289,10 +282,30 @@

КонецПроцедуры // ДобавитьПрочиеПараметрыКоманды()

// Процедура добавляет параметр-флаг в массив параметров запуска команды
//
// Параметры:
// Флаг - Строка - представление параметра-флага
// Параметр - Строка - имя параметра в структуре значений параметров,
// для проверки установки флага
//
Процедура ДобавитьПараметрФлаг(Знач Флаг, Знач Параметр)

УстановитьФлаг = ЗначенияПараметров.Получить(Параметр);
Если НЕ ТипЗнч(УстановитьФлаг) = Тип("Булево") Тогда
УстановитьФлаг = Ложь;
КонецЕсли;

Если УстановитьФлаг Тогда
ПараметрыЗапуска.Добавить(Флаг);
КонецЕсли;

КонецПроцедуры // ДобавитьПараметрФлаг()

// Процедура добавляет переданное значение в массив параметров запуска команды
//
// Параметры:
// Параметр - Строка - добавляемое значение
// Параметр - Строка - добавляемое значение
// Обязательный - Булево - Истина - если параметр не заполнен будет выдано исключение
// ДобавлятьПустой - Булево - Истина - если параметр не заполнен будет добавлена пустая строка
//
Expand Down
20 changes: 12 additions & 8 deletions src/Макеты/ТипыОбъектовКластера.json
Original file line number Diff line number Diff line change
Expand Up @@ -791,6 +791,10 @@
{
"Шаблон" : "--locale=%1",
"Параметр" : "Локализация"
},
{
"Флаг" : "--create-database",
"Параметр" : "СоздатьБазуСУБД"
}
],
"ЗначенияПолей" : "Добавление"
Expand Down Expand Up @@ -827,12 +831,12 @@
"ПараметрИд" : "ИдентификаторИБ"
},
{
"Флаг" : "ОчиститьБД",
"Параметр" : "--clear-database"
"Флаг" : "--clear-database",
"Параметр" : "ОчиститьБД"
},
{
"Флаг" : "УдалитьБД",
"Параметр" : "--drop-database"
"Флаг" : "--drop-database",
"Параметр" : "УдалитьБД"
}
]
}
Expand Down Expand Up @@ -1328,12 +1332,12 @@
"Кластер" : true,
"ПараметрыКоманды" : [
{
"Флаг" : "ПрименитьЧастично",
"Параметр" : "--partial"
"Флаг" : "--partial",
"Параметр" : "ПрименитьЧастично"
},
{
"Флаг" : "ПрименитьПолностью",
"Параметр" : "--full"
"Флаг" : "--full",
"Параметр" : "ПрименитьПолностью"
}
]
}
Expand Down
18 changes: 18 additions & 0 deletions tasks/testib001.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#Использовать "../src"

АдминПарам = Новый Структура("Администратор, Пароль", "admin", "q2w3e4r5");
Админка = Новый УправлениеКластером1С(, , АдминПарам);
Админка.Лог().УстановитьУровень(УровниЛога.Отладка);

СписокИБ = Админка.Кластеры().Список()[0].ИнформационныеБазы().Список();

НовыеПараметрыИБ = Новый Структура();
НовыеПараметрыИБ.Вставить("БлокировкаСеансовВключена", Перечисления.СостоянияВыключателя.Включено);

Для Каждого ТекИб Из СписокИБ Цикл
Если ТекИб.Имя() = "DEV_TEST" Тогда
ТекИБ.УстановитьАдминистратора("admin", "test");
ТекИб.Изменить(НовыеПараметрыИБ);
КонецЕсли;
// Сообщить(ТекИБ.Имя());
КонецЦикла;
1 change: 1 addition & 0 deletions tools/docker/onec-full
Submodule onec-full added at b7f872
1 change: 1 addition & 0 deletions tools/docker/onec-server
Submodule onec-server added at 2b93ba
47 changes: 47 additions & 0 deletions tools/docker/onec/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
version: '3.7'

services:
server:
build:
context: ./../onec-server
dockerfile: Dockerfile
args:
ONEC_USERNAME: ${ONEC_USERNAME}
ONEC_PASSWORD: ${ONEC_PASSWORD}
VERSION: ${ONEC_VERSION}
depends_on:
- db
hostname: server
expose:
- "1540"
extra_hosts:
- "server:127.0.0.1"
networks:
onec-net:

db:
image: silverbulleters/ya-docker-postgresql-1c
environment:
- PG_PASSWORD=password
- DEBUG=true
networks:
onec-net:

ras:
build:
context: .
dockerfile: ./../onec-full/Dockerfile
args:
ONEC_USERNAME: ${ONEC_USERNAME}
ONEC_PASSWORD: ${ONEC_PASSWORD}
VERSION: ${ONEC_VERSION}
entrypoint: /opt/1C/v8.3/x86_64/ras
command: "cluster server:1540"
expose:
- "1545"
networks:
onec-net:

networks:
onec-net:
external: false

0 comments on commit c62d169

Please sign in to comment.