Skip to content

About

Расширение 1С:Предприятие 8: менеджер пакетов. Ставит расширения, внешние обработки и отчёты из GitLab Package Registry и GitHub Releases

Topics

Resources

Stars

7 stars

Watchers

0 watching

Forks

Repository files navigation

Менеджер пакетов

Расширение 1С, которое ставит в базу другие расширения, внешние обработки и отчёты (.cfe, .epf, .erf), забирая их из GitLab или GitHub.

Вместо «скинь мне cfe в почту» получается обычный список пакетов с версиями: видно, что установлено, что вышло новее, и можно обновиться в один клик.

Менеджер пакетов: список пакетов с версиями и источники

Требуется платформа 8.3.23 или новее: ниже расширение не применяется.

Как это устроено

Работа делится на две независимые половины.

Публикация. Ваш пайплайн собирает пакет и выкладывает файл в реестр провайдера. Менеджер в этом не участвует.

Установка. Менеджер читает у провайдера уже опубликованное и ставит выбранную версию в базу.

Где менеджер ищет пакеты:

Провайдер Откуда берутся пакеты Что считается именем и версией
GitLab Generic Package Registry проекта имя и версия package в реестре
GitHub Releases репозитория имя ассета без расширения, тег без ведущей v

Файл pm-packages.json нужен только пайплайну, чтобы знать, что собирать. Менеджер его не читает и не требует.

Быстрый старт

  1. Настройте публикацию в своём репозитории — см. «Публикация пакетов». Если пакеты уже лежат в реестре или в релизах, шаг пропускается.
  2. Заведите источник: справочник Источники пакетов, кнопка «Создать». Укажите провайдера, адрес сервера и путь проекта (группа/проект для GitLab, owner/repo для GitHub). Для закрытого проекта — токен на чтение. Кнопка «Проверить источник» сразу скажет, виден ли проект.
  3. Откройте Менеджер пакетов, нажмите «Заполнить», отметьте нужные пакеты и нажмите «Установить».

Одна строка справочника — это проект, а не отдельный пакет. Все пакеты проекта появятся в списке сами. Поле «Имя пакета» — необязательный фильтр: заполните его, если из проекта нужен только один package.

Публикация пакетов

В корне репозитория заведите pm-packages.json — список того, что собирать:

{
  "packages": [
    { "path": "src/cfe/my-extension", "kind": "cfe" },
    { "path": "src/epf/my-report", "kind": "erf" }
  ]
}
  • path — каталог с исходниками в формате выгрузки Конфигуратора. Может лежать внутри сабмодуля, каталог не обязан называться src/cfe.
  • kind — cfe, epf или erf, необязателен.
  • Что не перечислено, не публикуется. Каталог src целиком не сканируется.

Заготовку шага CI отдаёт обработка Генератор шаблонов публикации: GitLab CI, GitHub Actions и Jenkins. Для GitLab файлы кладутся в tools/ci/. Она же подсказывает, какие переменные и токены завести в самой системе CI.

Что важно знать про версии:

  • версия пакета берётся из метаданных, а не из тега. У расширения это Версия в свойствах, у .epf и .erf — ПараметрыРегистрации.Версия в СведенияОВнешнейОбработке;
  • тег только запускает пайплайн. В GitLab его формат может быть любым и с версией пакета не связан;
  • в GitHub версия обязана совпасть с тегом, иначе ассет не попадёт в релиз;
  • пайплайн считает сумму исходников. Та же версия и та же сумма — публикация пропускается. Та же версия и другая сумма — ошибка: поднимите версию.

Установка и обновления

Установщик выбирается по типу файла:

Файл Что происходит
.cfe расширение записывается в базу, нужен перезапуск сеанса
.epf, .erf файл открывается сразу, в базу не устанавливается

Несколько пакетов ставятся одной пачкой: сначала скачиваются все, потом записываются, и перезапуск предлагается один раз в конце.

Кнопка «Проверить обновления» помечает пакеты, у которых в источнике есть версия новее установленной.

Регламентное задание Проверка обновлений пакетов по умолчанию выключено. Если включить его и настройку «Обновлять отмеченные пакеты по расписанию», фон будет ставить последнюю версию, но только у пакетов с галкой «Автообновление». Всё подряд не обновляется никогда.

Расширение, установленное мимо менеджера — вручную через Конфигуратор или ещё до появления менеджера, — подхватывается при заполнении списка: в графе «Установленная версия» появится версия из свойств самого расширения. Менеджер узнаёт его по имени пакета либо по транслитерации этого имени: в реестре GitLab имя пакета обязано быть ASCII, поэтому пайплайн транслитерирует имя расширения (БИТАдаптер → BITAdapter).

При старте сеанса менеджер сверяет свой список с расширениями базы. Если расширение сняли вручную, запись об установке снимется сама. Сверка идёт по имени расширения в базе, а не по имени пакета: они не совпадают.

Права

Роль Что даёт
пм_РаботаСМенеджеромПакетов работа с менеджером и установка пакетов
пм_ЧтениеИсточниковПакетов просмотр источников
пм_ДобавлениеИзменениеИсточниковПакетов заведение и правка источников

Адрес сервера, путь проекта и токен живут только в карточке источника. В код, шаблоны CI, логи и эту документацию они не попадают.

Если что-то не так

«Код ответа: 403» и речь про лимит запросов. GitHub без токена быстро упирается в лимит по IP. Укажите токен в источнике — лимит станет выше — или повторите позже: в тексте ошибки будет время, когда лимит сбросится.

«Код ответа: 403» или «401» с токеном. Токен просрочен либо не даёт чтения. Для GitHub достаточно Contents: Read, для GitLab — read_api.

«Код ответа: 404». Обычно путь проекта. Для GitHub он строго owner/repo, лишние сегменты и .git не годятся.

Пакет установлен, но платформа сообщила о применимости. Расширение записано, а платформа увидела некритичные замечания. Проверка идёт по всем расширениям базы, поэтому в сообщение попадают и замечания чужих расширений. Если после перезапуска расширение работает, замечание можно игнорировать. Полный текст остаётся в журнале регистрации.

«Новая версия не применяется к этой конфигурации». Платформа нашла критичную проблему, и пакет не установлен — прежняя версия осталась на месте. Частая причина: расширение заимствует объект Language, а в заимствованном объекте хранится UUID языка той конфигурации, где расширение разрабатывали. В любой другой базе UUID другой, и контролируемое свойство ExtendedConfigurationObject не совпадает. Лечится в самом пакете: язык заимствовать не нужно.

«Версия содержит несколько файлов». В одной версии пакета лежит больше одного устанавливаемого файла, и выбрать наугад нельзя. Публикуйте один файл на версию либо укажите имя файла.

Пропала установленная версия. Расширение сняли из базы вручную — сверка при старте убрала запись. Нажмите «Заполнить»: если расширение на месте, версия подхватится обратно, иначе поставьте пакет заново.

About

Расширение 1С:Предприятие 8: менеджер пакетов. Ставит расширения, внешние обработки и отчёты из GitLab Package Registry и GitHub Releases

Topics

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages