Делаем простую систему непрерывной интеграции (CI) c OneSсript, xUnitFor1C и v8LogScanner

Программирование - Практика программирования

В ходе данного туториала мы по шагам создадим систему непрерывной интеграции, которая по расписанию будет обновлять рабочие базы из хранилища, запускать unit-автотесты, сканировать логи ТЖ и отправлять письма с результатами на электронную почту.
Урок проверен на платформе версии 8.3.10.2580 и конфигурациях ЕРП 2.4.1.240 и БП 3.0.43 и работает только с БСП конфигурациями (используется для блокировки сеансов)
 
Автотесты выполняются после обновления на той же базе, которую и обновляем.
 
Если Вы ищете скрипт только для обновления базы из хранилища, то deployka.os возможно будет лучшим выбором.

 

Вкратце, вся CI – это один скрипт обновления конфигурации на OneScript и несколько вспомогательных утилит, которые и делают всю магию непрерывной интеграции. Процесс разворачивания займет не так много времени и обойдется без использования  билд серверов вроде jenkins. Результат выполнения скрипта будет приходить на e-mail в следующем довольном аскетичном, но тем не менее весьма полезном формате.

Нам потребуется:

  • OneScript  - среда для запуска скриптов на 1с-подобном языке.
  • AutoUpdateBase.os - заранее подготовленный скрипт на OneScript.
  • xUnitFor1C 4.2.0.0 – библиотека для unit-тестов.
  • V8LogScanner 1.2. - утилита для парсинга логов ТЖ (требует Java 8). Это как бонус. Если хотите включить в итоговую почтовую рассылку срез N событий из файла ТЖ. Для себя я решил настроить утилиту так, чтобы включать в рассылку срез из самых медленных запросов за сутки.
  • Конфигурация с поддержкой БСП с развернутым хранилищем, с которого будем получать изменения и клиент-серверная база,  на которую будем накатывать изменения. Скрипт легко можно адаптировать и под файловые базы, но на момент написания статьи он этого делать не умеет.

Шаг 1

Итак, устанавливаем актуальную версию OneScript на любом компьютере, с которого будем запускать по расписанию скрипт. Я для этой цели использовал сервер приложений 1С. Лучше не устанавливать дистрибутив в папку program files, т.к. нам потребуется установить один дополнительный пакет и соответственно административные права на данный каталог.

Шаг 2

Добавляем в системную переменную path путь к  основному исполняемому файлу oscript.exe, который спрятан в директории bin\ каталога OneScript.

Шаг 3

Устанавливаем с помощью пакетного менеджера opm, который входит в комплект с OneScript дополнительный пакет InternetMail.(спасибо автору) для работы с e-mail. Для этого открываем консоль cmd.exe и набираем

opm install InternetMail

Шаг 4

Распаковываем архивы с с xUnitFor1C и V8LogScanner и помещаем их внутри одного каталога на том же  сервере, где установили OneScript. Например в каталоге D:\scripts\. Должно получится что-то вроде этого:

Шаг 5

Переходим к скрипту autoUpdateBase.os и кидаем его в  ранее созданную папку (D:\scripts) . Открываем скрипт и редактируем глобальные переменные в функции Инициализировать()

// В функции задаются параметры базы, которую требуется обновить
Функция Инициализировать()
   
    // ОБЩИЕ ПАРАМЕТРЫ

    ПЛАТФОРМА_ВЕРСИЯ = "8.3.10.2580";  // если пустая строка, то будет взята последняя версия
    КОМ_КОННЕКТОР    = "V83.COMConnector";
    РАБОЧИЙ_КАТАЛОГ  = "D:\scripts\";

    // ПАРАМЕТРЫ БАЗЫ
    
    СЕРВЕР       = "svrtest";
    СЕРВЕР_ПОРТ  = 1541; // 1541 - по умолчанию
    БАЗЫ = Новый Массив; 
    БАЗЫ.Добавить("testdb");
    ПОЛЬЗОВАТЕЛЬ = "user" 
    ПАРОЛЬ       = "pwd";
    
    // ПАРАМЕТРЫ ХРАНИЛИЩА

    ХРАНИЛИЩЕ_ПУТЬ         = "\\storage";
    ХРАНИЛИЩЕ_ПОЛЬЗОВАТЕЛЬ = "UPD"; // заведите отдельного пользователя для скрипта
    ХРАНИЛИЩЕ_ПАРОЛЬ       = "";
    
    // ПАРАМЕТРЫ КЛАСТЕРА СЕРВЕРА 

    ПОРТ_КЛАСТЕРА                  = СЕРВЕР_ПОРТ;
    ПОРТ_АГЕНТА_СЕРВЕРА            = 1540; // 1540 - по умолчанию
    ИМЯ_АДМИНИСТРАТОРА_КЛАСТЕРА    = "";
    ПАРОЛЬ_АДМИНИСТРАТОРА_КЛАСТЕРА = "";

КонецФункции

Имена переменных говорят сами за себя, так что тут сложностей быть не должно. Для переменной ХРАНИЛИЩЕ_ПОЛЬЗОВАТЕЛЬ  нужно завести отдельного пользователя в хранилище, иначе выскочит ошибка «Для этого пользователя уже есть связь с хранилищем». Обратите внимание на РАБОЧИЙ_КАТАЛОГ - это каталог, в который мы кинули скрипт и все остальные объекты.

Далее двигаемся в процедуру ОтправитьПисьмо() и редактируем параметры SMTP / POP3 почтового сервера для объекта ИнтернетПочтовыйПрофиль. Настройки полностью идентичны настройкам почты, которые мы бы задали непосредственно в платформе 1С. Там же можно посмотреть документацию по свойствам, с которыми возникают трудности. Мне было достаточно указать верный АдресСервераPOP3 и АдресСервераSMTP  для того, чтобы почта заработала.

Процедура ОтправитьПисьмо(Тема, ТекстHTML, Вложения = Неопределено)

        Профиль = Новый ИнтернетПочтовыйПрофиль;

        Профиль.АдресСервераSMTP    = "127.0.0.1"; // укажите свои данные
        Профиль.ПользовательSMTP    = ""; // укажите свои данные
        Профиль.ПарольSMTP          = ""; // укажите свои данные
        Профиль.ПортSMTP            = 25; // укажите свои данные
        Профиль.ИспользоватьSSLSMTP = Ложь; // укажите свои данные

        Профиль.АдресСервераPOP3    = "127.0.0.1";  // укажите свои данные
        Профиль.ИспользоватьSSLPOP3 = Ложь; // укажите свои данные
        Профиль.Пользователь        = ""; // укажите свои данные
        Профиль.Пароль              = ""; // укажите свои данные

        Сообщение = Новый ИнтернетПочтовоеСообщение;
        Сообщение.Получатели.Добавить("[email protected]"); // укажите свои данные
        Сообщение.ОбратныйАдрес.Добавить("[email protected]"); // укажите свои данные
        Сообщение.Отправитель = "[email protected]"; // укажите свои данные
        Сообщение.Тема        = Тема;

        Сообщение.Тексты.Добавить(ТекстHTML, ТипТекстаПочтовогоСообщения.HTML);
        Если Вложения <> Неопределено Тогда
            Для каждого ФайлВложения Из Вложения Цикл
                Сообщение.Вложения.Добавить(ФайлВложения);
            КонецЦикла;
        КонецЕсли;

        Почта = Новый ИнтернетПочта;
        Почта.Подключиться(Профиль, ПротоколИнтернетПочты.POP3);
        Почта.Послать(Сообщение, , ПротоколИнтернетПочты.SMTP);

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

Вимание! Если вы не хотите использовать xUnitFor1C или v8LogScanner, а только само обновление с почтовой рассылкой, то закомментируйте в процедуре ОбновитьИБВПопытке() строчки ЗапуститьТесты() и ЗапуститьV8LogScanner()

Шаг 6 (опционально)

Настраиваем unit-тесты. Каждый тест - это отдельная внешняя обработка. Инструкцию и примеры о том, как пишутся тесты можно посмотреть в wiki xUnitFor1C . Если лень писать свой тест, то берем мой, который подходит для теста печати транспортной накладной конфигурации ЕРП 2.2. Впрочем тест выполнится без проблем на любой другой конфигурации, просто на почту к вам приедет результат теста со статусом ERROR. Подготовленный тест перемещаем в папку tests внутри каталога,  в котором находится наш скрипт. Должно получится что-то вроде D:\scripts\tests\мой_тест.epf

Шаг 7 (опционально)

Настраиваем v8LogScanner. Для этого заходим в каталог, в который мы его установили и запускаем run_client.cmd . Запустится главное меню.  Выберем, например, автопрофиль поиска блокировок и таймаутов с системе. Это позволит прямо в письме получать информацию о количестве блокировок за период. Критичная масса блокировок - это сигнал переходить в активным действиям.

Из главного меню делаем следующее: 4 Auto profiles => 9 Find 1c Deadlocks and Timeouts => 1 Select TOP FROM Locations => <Далее  нужно указать вариант поиска папки из которой будут сканироваться логи ТЖ>  (навигация выполняется с помощью ввода цифр - пунктов меню на клавиатуре).

Далее возвращаемся в главное меню Main (с помощью поочередного нажатия клавиши q) и выбираем 6 Other => 3 Save profile on disk => enter.  Этим мы сохраним настройки парсинга в каталог утилиты в файл profile.json. При каждом следующем запуске настройки будут читаться из этого файла.

Также у вас должен быть уже настроен logcfg.xml в каталоге \1cv8\conf,  чтобы логи из ТЖ записывались в выбранные ранее в утилите каталоги. Настроить logcfg.xml можно из главного меню Main утилиты. Для этого переходим в меню 5 Configure log.cfg и играемся конструктором лога.

Шаг 8

Скрипт настроен. Тестируем его работут вручную. Для этого открываем cmd.exe выполняем следующую команду.

oscript autoUpdateBase.os

Эту команду нужно выполнить из каталога в котором лежит наш скрипт. Если мы все сделали правильно, то после выполнения на электронную почту придет письмо с содержанием, показаном в начале статьи. К слову, обмен между скриптом и xUnitFor1C, а также v8LogScanner организован нехитро -  через обычные текстовые файлы. Часть этих файлов приатачиваются к письму как вложения.

Шаг 9

Добавляем скрипт в планировщик заданий windows. Настройки задания должны быть следующие:

На этом все. Можно себя поздравить с успешным запуском элементарной системы непрерывной интеграции.

Скачать файлы

Наименование Файл Версия Размер
Архив со скриптом и всеми утилитами на момент написания статьи
.zip 7,98Mb
12.01.18
13
.zip 7,98Mb 13 Скачать

См. также

Комментарии
Сортировка: Древо Сохранить
1. Андрей Овсянкин (Evil Beaver) 5110 14.01.18 21:57 Сейчас в теме
Здорово, спасибо, что пользуетесь. 2 вопроса:

1. Почему руками прописываем путь в переменную PATH? Инсталлятор делает это автоматически
2. Не увидел, как человек получит к себе на машину "деплойку"? Деплойка также ставится через opm.
lustin; artbear; +2 Ответить
2. Сергѣй Батанов (baton_pk) 362 14.01.18 22:05 Сейчас в теме
(1) насколько я понял, деплойка тут и не используется.
3. Андрей Овсянкин (Evil Beaver) 5110 14.01.18 22:06 Сейчас в теме
(2) Аа, действительно. Она лишь в начале, как совет. Ок.
4. Роман Кудаков (ripreal1) 188 15.01.18 08:58 Сейчас в теме
(1)
У меня не прописалась. Возможно она не прописывается под неполными правами?
5. Антон Степанов (Stepa86) 918 15.01.18 09:49 Сейчас в теме
(4) А зачем вообще в PATH прописывать? Все равно в шаге 9 полный путь к exe. Так же можно написать в шаге 8. Даже лучше, чтоб строки совпадали. А то oscript и C:\Program...\oscript.exe могут быть разными, что может принести сюрприз при отладке.
6. Артур Аюханов (artbear) 925 15.01.18 10:51 Сейчас в теме
(0) Каким образом получаете/генерируете отчет в почту?

Делаете анализ отчет xUnitFor1C, разборку его и т.п.?

PS Спасибо за использование нашего продукта xUnitFor1C :)
7. Роман Кудаков (ripreal1) 188 15.01.18 15:53 Сейчас в теме
Да, использую ГенераторОтчетаJUnitXML
8. Олег Филиппов (comol) 3557 16.01.18 00:30 Сейчас в теме
Я что-то упустил в этой жизни или Обновление базы скриптом и автотесты теперь называют непрерывной интеграцией?
Не говоря уже о том что с хранилищем 1С она особенно актуальна! А то мы так страдаем когда мёрджим различные ветки хранилища :))))))))))
9. Артур Аюханов (artbear) 925 16.01.18 11:17 Сейчас в теме
(8) А причем здесь мерж? здесь главное от CI - непрерывная/периодическая проверка/тестирование изменений разработчиков
11. Олег Филиппов (comol) 3557 16.01.18 13:19 Сейчас в теме
(9)
А причем здесь мерж?
Интересно что значит слово "Интеграция" в словосочетании "Непрерывная интеграция"? :)))
13. Андрей Овсянкин (Evil Beaver) 5110 16.01.18 16:32 Сейчас в теме
(11) десять команд пилят сорок компонент, потом все это из разных веток хаотично вливается в ствол релиза. Работает оно?

А пес его знает...

Поэтому вся эта мешанина автоматически собирается и тестируется в комплексе. Т.е. "интегрируется" между собой.

Применительно к 1С: - 1С-ники пишут что-то в хранилище, ни в жизнь не тестируют перед коммитом, "я всего одну строчку исправил". Потом в течении 10-15 минут после коммита автор получает в почту отчет со словами "ААА, фсе сломал, гаденыш!" И результаты прогона тестов.
Volfy; Serg O.; +2 Ответить
16. Олег Филиппов (comol) 3557 16.01.18 17:53 Сейчас в теме
(13)
результаты прогона тестов
это автоматизированное тестирование всё-таки а не непрерывная интеграция.

течении 10-15 минут после коммита
в статье нет привязки к коммиту.

CI всё-таки подразумевает наличие ветвлений... Без веток оно не так и нужно... Не говоря уже о другой проблеме - 100% покрытия тестами в 1С не достигнешь да и не нужно оно...
21. Андрей Овсянкин (Evil Beaver) 5110 16.01.18 18:28 Сейчас в теме
(16) если есть CI-сервер, значит в каком-то виде есть и CI. Понятно, что терминология в данном случае не будет 100% верной, но это больше буквоедство, нежели существенная проблема. 1С, например, судя по их статье на Хабре запросто даже мержит ветки-хранилища ERP в общий ствол с помощью СППР. Я слабо себе представляю как это можно делать, не сойдя с ума, но наверное можно. Уже много лет у них этот процесс. Так что и CI им пригодится.
10. Владислав Мороз (vlad.frost) 177 16.01.18 13:03 Сейчас в теме
(8)
Я что-то упустил в этой жизни или Обновление базы скриптом и автотесты теперь называют непрерывной интеграцией?


Не просто обновление базы скриптом и автотесты, а ежедневное обновление базы скриптом + автотесты по итогам мерджей + интегральная оценка качества. Вроде, про это же речь в статье.

Вы удивитесь, но довольно много косяков вылезает просто по итогам слияния веток.
15. Олег Филиппов (comol) 3557 16.01.18 17:50 Сейчас в теме
(10)
итогам мерджей
нет в 1с меджей... без EDT нет.


(10)
ежедневное
и непрерывное - это по-моему несколько разные вещи...
19. Алексей Лустин (lustin) 908 16.01.18 18:09 Сейчас в теме
(15) И самого 1С нет - его не существует. И Владислава тоже нет - он всего лишь наша выдумка.
kuntashov; +1 Ответить
20. Владислав Мороз (vlad.frost) 177 16.01.18 18:20 Сейчас в теме
(15)
нет в 1с меджей... без EDT нет.

Ещё как есть: https://its.1c.ru/db/v8std#content:2149184358:hdoc

ежедневное
и непрерывное - это по-моему несколько разные вещи...

Да википедия нам говорит, чтобы называться "непрерывной", нужно несколько раз в день интегрироваться. Но, поскольку процесс прогона автотестов в 1С небыстрый, один прогон может почти на сутки растянуться :(

И Мартин Фаулер говорит, что "usually each person integrates at least daily - leading to multiple integrations per day.", т.е. хотя бы раз в день, уже достаточно, чтобы называться "Непрерывной" https://martinfowler.com/articles/continuousIntegration.html
Evil Beaver; kuntashov; artbear; lustin; +4 Ответить
22. Артур Аюханов (artbear) 925 16.01.18 18:28 Сейчас в теме
(20) Олег, практически нигде не говорится про ветки и CI. Главное - помещать свои изменения в рабочий ствол и интегрироваться с другими разрабами, системами и прочее.
например, Википедию почитать, первый же абзац
Непрерывная интеграция (CI, англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в слиянии рабочих копий в общую основную ветвь разработки несколько раз в день и выполнении частых автоматизированных сборок проекта для скорейшего выявления потенциальных дефектов и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий, но основным преимуществом является сокращение стоимости исправления дефекта, за счёт раннего его выявления. Непрерывная интеграция впервые названа и предложена Гради Бучем в 1991 г.[1]

Непрерывная интеграция является одним из основных приёмов экстремального программирования.
27. Олег Филиппов (comol) 3557 16.01.18 19:29 Сейчас в теме
(22)
которая заключается в слиянии рабочих копий в общую основную ветвь разработки
я даже как-то не знаю.... :)))
23. Алексей Лустин (lustin) 908 16.01.18 18:31 Сейчас в теме
(20) если процесс подразумевает мердж раз в день и действие данного правила непрерывается, то значит оно непрерывно.
26. Олег Филиппов (comol) 3557 16.01.18 19:28 Сейчас в теме
я не про извращения писал... я про ветвления....

хотя бы раз в день, уже достаточно, чтобы называться "Непрерывной"
хм. ну да по классике видимо так :). Но я думаю ребята "не из мира 1С" очень сильно этому удивились бы
36. Андрей Овсянкин (Evil Beaver) 5110 17.01.18 11:54 Сейчас в теме
(26)
ребята "не из мира 1С" очень сильно этому удивились бы

чему "этому" бы они удивились?
12. Анатолий Бритько (headMade) 135 16.01.18 14:41 Сейчас в теме
на xUnitFor1C много тестов написано для ваших конфигураций?
Сами тесты можно поДсмотреть где-нибудь ?
14. Роман Кудаков (ripreal1) 188 16.01.18 16:57 Сейчас в теме
У нас на 2 базах используются тесты. Сейчас это 3 теста.

Первый тест тестирует функцию печати различных печатных форм, второй - выборочное проведение документов из журнала "Реестр торговых документов" и отражения их в БУ (с отменой транзакции), третий - то же, что и второй только по производственным документам.

Этого маловато конечно, но главное, что работает система, а добавление новых тестов - это дело времени.

Скм код тестов не тайна. Я приложил их к сообщению.
Прикрепленные файлы:
tests.zip
headMade; artbear; +2 Ответить
17. Олег Филиппов (comol) 3557 16.01.18 17:54 Сейчас в теме
(14)
добавление новых тестов - это дело времени
Их прогон дело времени... Добавление то фигня. И вот тут возникает вопрос...
18. Алексей Лустин (lustin) 908 16.01.18 18:07 Сейчас в теме
(17) что за лютое сопротивление Олег. CI нет, интеграция тебе не интеграция. Тестов нет вообще и не нужны. Ты чего это ? Тебя на работе заставляют все таки сервер сборок запускать ? И ты готовишь аргументы против ?

P.S. И merge в 1С есть, просто ты не в курсе (без EDT)
24. Андрей Овсянкин (Evil Beaver) 5110 16.01.18 18:32 Сейчас в теме
(18) Выше ссылка на ИТС и было на Хабре. В 1С есть merge без EDT. Но в мою голову он не помещается, к сожалению. Хотя ERP разрабатывается много лет и успешно в таком виде. Значит оно работает.
29. Олег Филиппов (comol) 3557 16.01.18 19:40 Сейчас в теме
(24) Мне коллеги из CarMoney рассказывали про этот "Merge". Они его юзают и с СППР.
Это не совсем то, что я видел у Web-еров... Временные затраты настолько чудовищны, что CI назвать язык не поворачивается.
Но да - позволяет редактировать один объект 2-м разработчикам (в теории) и систематизирует процесс выпуска фич.
28. Олег Филиппов (comol) 3557 16.01.18 19:35 Сейчас в теме
(18)
что за лютое сопротивление Олег. CI нет, интеграция тебе не интеграция


Нуу... так скажем я очень хотел CI. Посвятил этому достаточно много времени....
Потом пытался понять почему "успешно зашло web-ерам" и "нихрена не зашло 1С-никам".
Тут дело не в том что мы 1С-ники.

CI спасает от веток и постоянных Merge-ей. У нас ветка одна.
CI спасает когда весь код покрыт тестами. Удачи вам в покрытии всего кода ERP.

Прочитал у SAP-ёров почему не зашло с тестами. Понял что в 1С у нас... до EDT по крайней мере CI не прокатит :(.
Ну по крайней мере я нормального решения не нашел. То, что описал коллега выше - профанация и определённый род извращений.
Вцелом наверное полезный, но не CI.
Evil Beaver; +1 1 Ответить
32. Евгений Мартыненков (JohnyDeath) 291 16.01.18 22:38 Сейчас в теме
(28)
Потом пытался понять почему "успешно зашло web-ерам" и "нихрена не зашло 1С-никам".

а оно вообще пыталось заходить?
Вон только с десяток-другой энтузиастов делают тесты и фрейморки к ним в 1С. И все заходит вроде бы.
Т.е. основная масса одинэсников вообще не знает что такое тесты и с чем его едят, а ты про какое-то "незашло"

Так и не понял при чем тут CI и ветки. Почему CI не может быть с одной веткой?
33. Олег Филиппов (comol) 3557 16.01.18 23:09 Сейчас в теме
(32)
Почему CI не может быть с одной веткой?
CI придумали чтобы решить проблему слияния веток... и внедряют для решения этой проблемы главным образом.
34. Евгений Мартыненков (JohnyDeath) 291 17.01.18 07:44 Сейчас в теме
(33) а мне казалось, что важнее было решить проблемы интеграции всех наработок в одну кучу и оценки ее качества и работоспособности. С одной веткой таких проблем тоже хватает.
38. Олег Филиппов (comol) 3557 17.01.18 17:05 Сейчас в теме
(34) С одной веткой "коммит" не "испортит билд". А у ребят с gitflow это сплош и рядом
44. Евгений Мартыненков (JohnyDeath) 291 17.01.18 20:39 Сейчас в теме
(38) мы, наверное, про что-то разное говорим )
Правки одного разраба могут легко сломать что-то в другом месте, о котором о и не думал
35. Алексей Сосновый (Labotamy) 17.01.18 08:30 Сейчас в теме
(33)CI придумали для того, чтобы максимально быстро узнавать о том, что новый код сломал старый.... А как там слияние проходит, особенно в 1с, вопрос десятый... Если так коробит от сочетания CI и 1с можно назвать это как нить еще. Ну и уже привыкли что в 1с все "особенное". И mrg в EDT будет "особенный" и git-flow будет EDT-flow.
39. Олег Филиппов (comol) 3557 17.01.18 17:07 Сейчас в теме
(35)
как там слияние проходит, особенно в 1с, вопрос десятый
Так в том то и вопрос что никак не проходит... нет его в 1С... что бы там не говорили выше
37. Юрий Гуреев (Gureev) 17.01.18 16:10 Сейчас в теме
(33) Чот не пойму, как CI решает проблему конфликтов при слияния? Какая еще проблема слияния веток?
40. Олег Филиппов (comol) 3557 17.01.18 17:07 Сейчас в теме
(37) Нет в 1С слияния веток и проблем слияния. Не нужен в 1С CI. Пока что. Если коротко.
41. Юрий Гуреев (Gureev) 17.01.18 17:16 Сейчас в теме
(40) причем тут 1с? я спросил про гит
43. Олег Филиппов (comol) 3557 17.01.18 18:59 Сейчас в теме
(41) эээ.. ну это можно в книжках прочитать конечно. Но общий смысл в том что master у вас всегда в актуальном состоянии.
31. Олег Филиппов (comol) 3557 16.01.18 19:54 Сейчас в теме
(18) Автотесты то у меня конечно есть... Сервер сборок тоже будет, только не у 1С части. Уже в очередной раз не у 1С части....
25. Евгений Сосна (pumbaE) 598 16.01.18 18:41 Сейчас в теме
Ну и я накину, разве в EDT есть merge работающий? В документации он конечно есть, в пунктах меню тоже, но вот что-б он работал такого нет.
30. Олег Филиппов (comol) 3557 16.01.18 19:43 Сейчас в теме
(25) Нуу... он же должен когда то появиться.... иначе на кой.... (цензура) EDT нужен?
Я так понял EDT = здравствуй GitFlow и здравствуй CI/CD (хотя тоже не уверен).
42. Евгения Карук (ekaruk) 3974 17.01.18 18:19 Сейчас в теме
Спасибо за упоминание InternetMail. Уже про него слышала, на как-то руки не доходили.
Посмотрела и перешла наконец на него с самодельного VBS скрипта. Действительно, удобнее.
Berckk; Evil Beaver; +2 Ответить
45. Владимир Крючков (ivanov660) 644 14.03.18 14:07 Сейчас в теме
Достаточно много действий. Можно же было создать обработку мастер установки развертывания CI с помощью этих утилит.
Вижу концепт: открыл обработку мастер, жмешь далее, вводишь требуемые данные, ожидаешь процедуру скачивания файлов/применения настроек.... и в завершении получаешь профит)

EDT пока сыроват и выполнять в нем полноценную работу в связке с GIT невозможно, ждем версию 1.8, в которой обещали поправить существующие явные "баги".
46. Павел Дворянинов (Pavel_Dv) 03.06.18 19:13 Сейчас в теме
Доброго всем!
Может кто подскажет, как быть с internetmail?
Пробовал настройку с несколькими серверами
Родной exchange позволяет подключиться, но не позволяет отсылать. Как понимаю проблема в методе аутентификации SMTP "Безаутентификации".
Отметил проблему в репозитории разработчика
https://github.com/dmpas/oscript-mail/issues/16

Затем пробовал с mail.ru, снова фиаско
{Модуль C:\Scripts\test.os / Ошибка в строке: 40 / Внешнее исключение (MailKit.S
ecurity.AuthenticationException): AuthenticationInvalidCredentials: Authenticati
on failed. Please verify your account by going to https://e.mail.ru/login?email=...

С google удается приконнектиться по POP3 (и то после включения двухфакторной аутентификации и генерации отдельного пароля для приложения)
Но при попытке отправки он шлет куда подальше с
"gmail the smtp server has unexpectedly disconnected"

Была надежда, что автор поправил пакет в версии 1.05. Она недоступна для получения из репозитория, но легко качается с github и устанавливается из пакета.
Но нет, 1.05 вообще отказалась работать.

Были ли примеры успешной настройки и отправки через internetmail? С oneScript только знакомлюсь, может что не так делаю

PS завел через пакет tmail, лучше чем ничего.
Но все же интересен пакет internetmail
47. Павел Дворянинов (Pavel_Dv) 03.06.18 19:56 Сейчас в теме
И сразу еще один вопрос.
Если хранилище поднято по tcp у кого-то удалось подключиться?
Выдает ошибку
"Модуль C:\Scripts\OneScript\lib\v8runner\src\v8runner.os / Ошибка в строке: 1105 / Ошибка связывания с хранилищем конфигурации по адресу: tcp://S01-1C07:2042/erp_pm2 Соединение с хранилищем конфигурации не установлено Ошибка связывания с хранилищем конфигурации по адресу: tcp://S01-1C07:2042/erp_pm2 Соединение с хранилищем конфигурации не установлено Ошибка обновления конфигурации из хранилища } ВызватьИсключение ВыводКоманды();"
Оставьте свое сообщение