Code Monkey home page Code Monkey logo

yadt's Introduction

Yet another deploy tool (yadt)

Развертывание новой версии конфигурации на базах подключенных к хранилищу 1С.

Предполагается схема поставки с использованием хранилища разработки и рабочего (production) хранилища. Соответственно предполагается следующий порядок развертывания:

  1. Все доработки выполняются в базах, подключенных к хранилищу разработки
  2. В момент релиза из хранилища разработки выгружается последняя версия конфигурации.
  3. Конфигурация заливается в служебную базу для обновления рабочего (production) хранилища.
  4. Рабочая база (или базы) обновляются из рабочего хранилища

Storage Flow

Возможные команды

help - Вывод справки по параметрам
incver - Изменение версии подсистемы конфигурации
makecf - Создание cf-файла из последней версии указанного хранилища
updstorage - Обновление хранилища конфигурации из указанного cf-файла
updib - Обновление конфигурации ИБ из указанного хранилища конфигурации
batch - Последовательное выполнение команд по сценариям, заданным в файлах (json)

Для подсказки по конкретной команде наберите help <команда>

incver - Изменение версии подсистемы конфигурации

Исходим из того, что выполняется существенная доработка конфигурации, но при этом предполагается регулярное обновление типовой. Нужно как-то версионировать систему, для чего создается общий макет, в котором хранится "наша" версия системы. Данная команда выполняет:

  1. Извлечение макета, содержащего версию из хранилища конфигурации
  2. Изменение номера версии (инкремент) в соответствии с маской
  3. Загрузку измененного макета в конфигурацию и помещение в хранилище
Параметры:
-params - Файлы JSON содержащие значения параметров, могут быть указаны несколько файлов разделенные ";" (параметры командной строки имеют более высокий приоритет)
-storage-path - Адрес хранилища конфигурации
-storage-user - Имя пользователя хранилища конфигурации
-storage-pwd - Пароль пользователя хранилища конфигурации
-ver-tmplt - Имя общего текстового макета конфигурации, содержащего номер версии подсистемы
-ver-mask - Маска версии подсистемы
           # - оставить значение без изменения
           * - увеличить значение на 1
           $ - сбросить номер версии на 0 (для последнего числа на 1)
           <любые символы> - вставить указанные символы
   по умолчанию - "#.#.#.*"
-ver-comment - Комментарий к изменению версии подсистемы в хранилище
                по умолчанию: "Изменена версия <Номер новой версии>"
                для подстановки номера новой версии может использоваться символ подстановки %version%
-v8version - Версия платформы 1С

Пример:

yadt incver -storage-path "tcp://StorageServer/MyRepo" -storage-user MyStorageUser -ver-tmplt мое_ВерсияПодсистемы -ver-mask #.#.*.$ -ver-comment "Установлена версия %version%"

makecf - Создание cf-файл из последней версии указанного хранилища

Команда выполняет выгрузку cf-файла из хранилища конфигурации для последующего обновления рабочего хранилища.

Параметры:
-params - Файлы JSON содержащие значения параметров, могут быть указаны несколько файлов разделенные ";" (параметры командной строки имеют более высокий приоритет)
-storage-path - Адрес хранилища конфигурации
-storage-user - Имя пользователя хранилища конфигурации
-storage-pwd - Пароль пользователя хранилища конфигурации
-cf-path - Путь к выгружаемому cf-файлу
-v8version - Версия платформы 1С

Пример:

yadt makecf -storage-path "tcp://StorageServer/MyRepo" -storage-user MyStorageUser -cf-path d:\tmp\1cv8.cf

updstorage - Обновление хранилища конфигурации из указанного cf-файла

Команда выполняет обновление указанного хранилища конфигурацией из указанного cf-файла

Параметры:
-params - Файлы JSON содержащие значения параметров, могут быть указаны несколько файлов разделенные ";" (параметры командной строки имеют более высокий приоритет)
-storage-path - Адрес хранилища конфигурации
-storage-user - Имя пользователя хранилища конфигурации
-storage-pwd - Пароль пользователя хранилища конфигурации
-ib-path - Адрес служебной ИБ для выполнения обновления (если не указана, то используется временная ИБ)
-ib-user - Имя пользователя служебной ИБ
-ib-pwd - Пароль пользователя служебной ИБ
-upd-comment - Комментарий обновления
-cf-path - Путь к cf-файлу обновления
-delcf - Флаг удаления cf-файла после обновления
-v8version - Версия платформы 1С

Пример:

yadt updstorage  -storage-path "tcp://StorageServer/MyRepo" -storage-user MyStorageUser -ib-path "/FD:/data/MyDatabase" -cf-path d:\tmp\1cv8.cf -delcf

updib - Обновление ИБ из хранилища

Команда выполняет обновление указанной информационной базы из указанного хранилища конфигурации.

Параметры:
-params - Файлы JSON содержащие значения параметров, могут быть указаны несколько файлов разделенные ";" (параметры командной строки имеют более высокий приоритет)
-ib-path - Адрес ИБ для обновления
-ib-user - Имя пользователя ИБ
-ib-pwd - Пароль пользователя ИБ
-storage-path - Адрес хранилища конфигурации
-storage-user - Имя пользователя хранилища конфигурации
-storage-pwd - Пароль пользователя хранилища конфигурации
-upd-db - Флаг обновления конфигурации БД
-uccode - Код разрешения доступа к ИБ
-v8version - Версия платформы 1С

Пример:

yadt updib  -ib-path "/FMyServer\MyProductionDB" -ib-user Admin -ib-pwd P@ssw0rd -storage-path "tcp://StorageServer/MyRepo" -storage-user MyStorageUser

batch - Выполнить сценарий

Последовательно выполняет команды указнные в файле JSON

Параметры:
<Сценарии> - Файлы JSON содержащие команды и значения параметров, могут быть указаны несколько файлов разделенные "";"" (обработка файлов выполняется в порядке следования)

Пример:

yadt batch "./deploy_scenario.json"

Пример сценария:

{
    "params": {
        "-storage-path": "tcp://MyServer/MyStorage",
        "-storage-user": "__Robot",
        "-storage-pwd": "Pa@ssw0rd"
    },
    "stages": {
        "Изменение версии": {
            "description": "Изменение версии",
            "tool": "yadt",
            "command": "incver",
            "params": {
                "-ver-tmplt": "мое_ВерсияПодсистемы"
            }
        },
        "Выгрузка конфигурации": {
            "description": "Выгрузка конфигурации",
            "tool": "yadt",
            "command": "makecf",
            "params": {
                "-cf-path": "d:\\tmp\\1cv8.cf"
            }
        }
    }
}

Использование c Jenkins

В jenkinsfile описан конвейр выполняющий следующий сценарий:

  • Изменение версии конфигурации в хранилище разработки
  • Создание cf-файла для обновления рабочего хранилища
  • Обновление рабочего хранилища
  • Обновление рабочей ИБ из рабочего хранилища
Переменные окружения конвейера
dev_storage_path - Адрес хранилища разработки
dev_storage_cred - Идентификатор credentials для доступа к хранилищу разработки
ver_tmplt - Имя общего макета конфигурации, содержащего номер версии подсистемы
ver_mask - Маска версии
ver_comment - Комментарий к изменению версии
dev_cf_path - путь к файлу обновления конфигурации для выгрузки
upd_cf_path - путь к файлу обновления конфигурации для обновления
dev_agent_label - Метка агента Jenkins, где будут выполнятся манипуляции с хранилищем разработки
upd_agent_label - Метка агента Jenkins, где будет выполнятся обновление рабочего хранилища
prd_agent_label - Метка агента Jenkins, где будет выполнятся обновление рабочей базы
prd_storage_path - Адрес рабочего хранилища
upd_storage_cred - Идентификатор credentials для обновления рабочего хранилища
prd_storage_cred - Идентификатор credentials для получения конфигурации из рабочего хранилища
prd_ib_path - Путь к рабочей базе для обновления
prd_ib_cred - Идентификатор credentials для доступа к рабочей базе

yadt's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

yadt's Issues

Сделать не обязательность параметров подключения к хранилищу при обновлении

Помимо рабочей базы, есть еще и РИБ. Схема работы тогда немного изменится
n-шаг: Обновление боевой базы из хранилища
(n+1) шаг Запуск процедуры обмена с РИБ
(n+2) шаг Обновление узла РИБ.
Предложение: Сделать параметры не обязательными, тогда в случае если значение пустое производится только обновление ИБ

З.Ы. При реализации возможно стоит подумать тогда о переименовании процедуры. ОбновитьКонфигурациюИзХранилища - уже как то не будет подходить по смыслу, если только обновление ИБ

Если ПустаяСтрока(Хранилище_Адрес) Тогда

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.