1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openeuler-openEuler-Advisor

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 17 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 10.03.2025 22:07 bc65723

openEuler-Advisor

1. Введение

Цель проекта openEuler-Advisor — автоматизация проверок и предоставление рекомендаций для повседневной работы с хранилищами продуктов openEuler.

Значимые аспекты текущего проекта:

  1. upstream-info: Этот каталог содержит информацию о версиях и зависимостях компонентов, используемых в хранилище продуктов openEuler.

  2. advisors: В этом каталоге находятся автоматизированные скрипты, среди которых:

    2.1. oa_upgradable.py - Python-скрипт, основанный на информации из каталога upstream-info, который используется для запроса версий пакетов и рекомендаций по обновлению.

    2.2. simple_update_robot.py - Python-скрипт для автоматического обновления пакетов в src-openeuler, включая скачивание рекомендованной версии исходников, модификацию spec-файлов, локальное сборочное окружение OBS, создание PR и issue.

    2.3. check_missing_file.py - Python-скрипт для проверки наличия spec-файлов в различных репозиториях src-openeuler. Если spec-файл отсутствует, создаётся задача для его создания.

    2.4. check_source_url.py - Python-скрипт для проверки адресов источника пакетов в src-openeuler. Если адрес недействителен или некорректен, создаётся issue для исправления.

    2.5. create_repo.py и create_repo_with_srpm - Python-скрипты для массового создания новых репозиториев. 2.6. which_archived.py - скрипт для проверки, находится ли продукт в состоянии архивации в сообществе его происхождения, что помогает команде поддержки своевременно корректировать стратегию поддержки пакетов. 2.7. check_repeated_repo.py — скрипт для проверки повторяющихся пакетов в src-openeuler.

    2.8. psrtool.py — скрипт для получения информации о принадлежности пакета SIG и списке управляемых пакетов конкретному SIG.

    2.9. tc_reminder.py — автоматический генератор напоминаний для членов TC в openEuler.

    2.10. review_tool.py — скрипт для создания списка для просмотра PR для указанного репозитория, чтобы стандартизировать процесс просмотра PR.

    2.11. issue_report.py — инструмент для автоматической генерации таблиц с информацией об issue и CVE (CSV) и отчётов (markdown) для управления версией и CVE.

  3. prow: Каталог для хранения скриптов, связывающих CI/CD-фреймворк Prow.

2. Будущие планы

  1. Команда @solarhu работает над разработкой инструмента для автоматизации запроса всех компонентов и их зависимостей в openEuler.

  2. Улучшение скрипта simple_update_robot.py для повышения эффективности автоматических обновлений.

  3. Расширение каталога upstream-info до полного покрытия всех пакетов в хранилище продуктов openEuler и объединение всех YAML-файлов из разных частей openEuler-сообщества в единую систему управления.

  4. Улучшение oa_upgradable.py для управления лицензиями сообщества, поддерживающими версионность, а также добавление поддержки протокола Fossil.

3. Инструкция по использованию вспомогательных инструментов:

3.1. Нормы для YAML-файловYAML-файлы в репозитории src-openEuler должны иметь имя, совпадающее с названием репозитория. Например, для репозитория glibc, YAML-файл будет называться glibc.yaml и располагается в корневой директории репозитория.

В YAML-файле требуется заполнение следующих полей: version_control, src_repo, tag_prefix, separator. Остальные поля генерируются автоматически и заполнять их не нужно.

3.1.1. Описание полей YAML

1. version_control:

Протокол версионного контроля, используемый в репозитории upstream. В настоящее время поддерживаются svn, git, hg, github, gnome, metacpan, pypi.

2. src_repo:

Адрес репозитория upstream. Объединив version_control и src_repo, можно использовать инструмент для скачивания соответствующего кода.

3. tag_prefix:

Предфикс версий в тэгах upstream. Если используется протокол git, то все тэги можно просмотреть командой git tag. Если тэг upstream выглядит как v1_0_1, то tag_prefix следует установить как "^v", чтобы получить правильную версию 1_0_1.

4. separator:

Разделитель версий в тэге. Если тэг имеет вид v1_0_1, а separator установлен как "_", то при парсинге кода получится версия "1.0.1".

3.1.2. Конкретные требования и примеры для полей

1. src_repo:
  1. Если version_control равно svn, то src_repo должно содержать полный адрес SVN-репозитория. Пример можно найти здесь: https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/amanda.yaml2) Если version_control равно git, то src_repo должно содержать полный адрес GIT-репозитория. Пример можно найти здесь: https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/mdadm.yaml

  2. Если version_control равно hg, то src_repo должно содержать полный адрес HG-репозитория. Пример можно найти здесь: https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/nginx.yaml

  3. Если version_control равно GitHub, то достаточно указать proj/repo, полный URL не нужен. Пример можно найти здесь: https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/asciidoc.yaml

  4. Если version_control равно GNOME, то достаточно указать $proj, полный URL не нужен. Пример можно найти здесь: https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/gnome-terminal.yaml. Обратите внимание, что многие проекты на gitlab.gnome.org требуют доступа с правами, поэтому они не могут быть использованы как репозитории upstream.

  5. Если version_control равно MetaCPAN, то src_repo требует только $proj, полной URL не требуется. Пример можно найти по адресу https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/perl-Authen-SASL.yaml, обратите внимание на правила названий в MetaCPAN.

  6. Если version_control равно PyPI, то src_repo требует только $proj, полной URL не требуется. Пример можно найти по адресу https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/python-apipkg, обратите внимание на правила названий в PyPI.

2. Префикс тэга (tag_prefix):

Различные проекты используют различные правила для тэгов. Например, если тэг равен v1.1, то tag_prefix следует установить как ^v.##### 3. Разделитель (separator):

Различные проекты используют различные разделители между частями тега. Некоторые используют "-", некоторые "_". Обычно используется ".". Рекомендуется использовать двойные кавычки.

3.1.3. Методы проверки информации об открытых источниках

1. Общие методы управления версионностью кода

Git, SVN, Hg могут использоваться для получения информации о репозиториях без необходимости загрузки всего репозитория. Методы следующие:

- Git:

git ls-remote --tags $repo_url

- SVN:

svn ls -v $repo_url/tags

- Hg:

curl $repo_url/json-tags
2. Общие методы использования сайтов хранения кода

- GitHub:

curl https://api.github.com/repos/$user/$repo/releases

Позволяет получить полную информацию о выпусках в JSON формате. Однако это не всегда поддерживается всеми проектами.

curl https://api.github.com/repos/$user/$repo/tags

Позволяет получить полную информацию о тегах в JSON формате. Но это также не всегда поддерживается всеми проектами, и было замечено, что информация иногда неверна.

- MetaCPAN:

curl https://fastapi.metacpan.org/release/$repo

Позволяет получить информацию о последней версии в JSON формате.

- PyPI:

curl https://pypi.org/pypi/$repo/json

Позволяет получить информацию о последнем выпуске проекта.

- Использование префикса тега (tag_prefix) и шаблона тега (tag_pattern)

Многие программы используют префикс для своих тегов, например, release-1.2.3 или v1.2.3.Установка tag_prefix позволяет удалить одинаковый префикс из всех тегов.

Например, программа может иметь два тега — 1.2.3 и release-1.2.2. Установив tag_prefix как release-, получаем обработанные теги 1.2.3 и 1.2.2.

Шаблон тега (tag_pattern) используется для более сложных случаев, но его использование не рекомендуется.

- Использование разделителя (separator)

Установка разделителя позволяет заменять этот символ на ".".

Если программное обеспечение использует другой символ вместо "." для разделения частей тега, установка разделителя позволяет нормализовать теги версий.

3.2 Описание advisors

3.2.1 Настройка окружения

а. Установка необходимых пакетов

pip3 install python-rpm-spec (вер >= 0.10)
pip3 install PyYAML (вер >= 5.3.1)
pip3 install requests (вер >= 2.24.0)
yum install rpmdevtools (вер >= 8.3)
pip3 install beautifulsoup4 (вер >= 4.9.3)
yum install yum-utils (вер >= 1.1.31)
yum install libabigail (вер >= 1.6)

б. Конфигурация JSON файла

Создайте JSON файл: ~/.gitee_personal_token.json Формат JSON файла: {"user": "gitee имя пользователя", "access_token": "токен пароль"}

Путь для установки Gitee токена: https://gitee.com/profile/personal_access_tokens

в. Настройка SSH для Gitee

Если ещё не настроено, обратитесь к: https://gitee.com/help/articles/4181

г. Настройка OBS

Если ещё не настроено, обратитесь к: https://openeuler.org/zh/docs/20.09/docs/ApplicationDev/%D0%B0%D0%BA%D1%82%D0%B5%D0%BD%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2RPM%D0%BF%D0%B0%D0%BA%D0%B5%D1%82.html#### Д. Настройка окружения Python Если вы работаете в режиме разработки, используйте этот инструмент, сначала настройте путь окружения Python: source ./develop_env.sh

3.2.2 Инструкции по использованию

А. simple_update_robot.py

Автоматическое обновление одного пакета: python3 simple_update_robot.py -u pkg pkg_name branch_name [-n new_version] Пример: python3 simple_update_robot.py -u pkg snappy masterРучное обновление одного пакета: python3 simple_update_robot.py pkg_name branch_name [-fc] [-d] [-s] [-n new_version] [-b] [-p] Пример: python3 simple_update_robot.py snappy openEuler-20.03-LTS -fc -d -s -n 1.8.1

Обновление нескольких пакетов в репозитории: python3 simple_update_robot.py -u repo repo_name branch_name Пример: python3 simple_update_robot.py -u repo src-openeuler master

Вы можете настроить YAML файл автоматического обновления в локальном рабочем каталоге, например: upgrade-example.yaml repositories:

  • name: A-Tune
  • name: python-py
  • name: python-ply

Если вы хотите указать версию обновления для некоторых пакетов, можно настроить следующим образом: repositories:

  • name: A-Tune u_ver: x.y.z
  • name: python-py
  • name: python-ply

Затем выполните автоматическое обновление через инструмент: python3 simple_update_robot.py -u repo upgrade-example master#### б. oa_upgradable.py Поиск информации о пакете и рекомендация версий: python3 oa_upgradable.py pkg_name Пример: python3 oa_upgradable.py glibc

с. issue_report.py

Запуск требует Python версии 3.8 и выше
Использование инструмента:

python3 issue_report.py --milestone "openEuler 20.03-LTS" "openEuler 20.09" --branch "openEuler-21.03" "openEuler-20.09" --output_path /Users/lilu/Downloads

или

python3 issue_report.py -m "openEuler 20.03-LTS" "openEuler 20.09" -b "openEuler-21.03" "openEuler-20.09" -o /Users/lilu/Downloads

Параметры командной строки:
--milestone: милицейные камни версий openEuler, поддерживаются несколько значений. Например: "openEuler-21.03", "openEuler 21.03-RC1" и так далее.
--branch: конкретные ветки в репозитории src-openEuler, поддерживаются несколько значений. Например: "openEuler-21.03", "openEuler-20.09" и так далее.
--output_path: путь генерации отчетов управления версиями и отчетов выпуска версий.#### 3.2.3 Консультация Advisors: Если возникли другие вопросы или сомнения, свяжитесь по электронной почте: licihua@huawei.com, zwfeng@huawei.com, shanshishi@huawei.com

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/openeuler-openEuler-Advisor.git
git@api.gitlife.ru:oschina-mirror/openeuler-openEuler-Advisor.git
oschina-mirror
openeuler-openEuler-Advisor
openeuler-openEuler-Advisor
master