Цель проекта openEuler-Advisor — автоматизация проверок и предоставление рекомендаций для повседневной работы с хранилищами продуктов openEuler.
Значимые аспекты текущего проекта:
upstream-info: Этот каталог содержит информацию о версиях и зависимостях компонентов, используемых в хранилище продуктов openEuler.
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.
prow: Каталог для хранения скриптов, связывающих CI/CD-фреймворк Prow.
Команда @solarhu работает над разработкой инструмента для автоматизации запроса всех компонентов и их зависимостей в openEuler.
Улучшение скрипта simple_update_robot.py для повышения эффективности автоматических обновлений.
Расширение каталога upstream-info до полного покрытия всех пакетов в хранилище продуктов openEuler и объединение всех YAML-файлов из разных частей openEuler-сообщества в единую систему управления.
Улучшение oa_upgradable.py
для управления лицензиями сообщества, поддерживающими версионность, а также добавление поддержки протокола Fossil.
src-openEuler
должны иметь имя, совпадающее с названием репозитория. Например, для репозитория glibc
, YAML-файл будет называться glibc.yaml
и располагается в корневой директории репозитория.В YAML-файле требуется заполнение следующих полей: version_control
, src_repo
, tag_prefix
, separator
. Остальные поля генерируются автоматически и заполнять их не нужно.
version_control
:
Протокол версионного контроля, используемый в репозитории upstream. В настоящее время поддерживаются svn, git, hg, github, gnome, metacpan, pypi.
src_repo
:
Адрес репозитория upstream. Объединив version_control
и src_repo
, можно использовать инструмент для скачивания соответствующего кода.
tag_prefix
:
Предфикс версий в тэгах upstream. Если используется протокол git, то все тэги можно просмотреть командой git tag
. Если тэг upstream выглядит как v1_0_1
, то tag_prefix
следует установить как "^v", чтобы получить правильную версию 1_0_1
.
separator
:
Разделитель версий в тэге. Если тэг имеет вид v1_0_1
, а separator
установлен как "_", то при парсинге кода получится версия "1.0.1".
src_repo:
Если 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
Если version_control
равно hg, то src_repo
должно содержать полный адрес HG-репозитория. Пример можно найти здесь: https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/nginx.yaml
Если version_control
равно GitHub, то достаточно указать proj/repo
, полный URL не нужен. Пример можно найти здесь: https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/asciidoc.yaml
Если version_control
равно GNOME, то достаточно указать $proj
, полный URL не нужен. Пример можно найти здесь: https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/gnome-terminal.yaml. Обратите внимание, что многие проекты на gitlab.gnome.org требуют доступа с правами, поэтому они не могут быть использованы как репозитории upstream.
Если version_control
равно MetaCPAN
, то src_repo
требует только $proj
, полной URL не требуется. Пример можно найти по адресу https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/perl-Authen-SASL.yaml, обратите внимание на правила названий в MetaCPAN.
Если version_control
равно PyPI
, то src_repo
требует только $proj
, полной URL не требуется. Пример можно найти по адресу https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/python-apipkg, обратите внимание на правила названий в PyPI.
tag_prefix
):Различные проекты используют различные правила для тэгов. Например, если тэг равен v1.1
, то tag_prefix
следует установить как ^v
.##### 3. Разделитель (separator
):
Различные проекты используют различные разделители между частями тега. Некоторые используют "-"
, некоторые "_"
. Обычно используется "."
. Рекомендуется использовать двойные кавычки.
Git, SVN, Hg могут использоваться для получения информации о репозиториях без необходимости загрузки всего репозитория. Методы следующие:
- Git:
git ls-remote --tags $repo_url
- SVN:
svn ls -v $repo_url/tags
- Hg:
curl $repo_url/json-tags
- 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
)
Установка разделителя позволяет заменять этот символ на "."
.
Если программное обеспечение использует другой символ вместо "."
для разделения частей тега, установка разделителя позволяет нормализовать теги версий.
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 файл: ~/.gitee_personal_token.json
Формат JSON файла: {"user": "gitee имя пользователя", "access_token": "токен пароль"}
Путь для установки Gitee токена: https://gitee.com/profile/personal_access_tokens
Если ещё не настроено, обратитесь к: https://gitee.com/help/articles/4181
Если ещё не настроено, обратитесь к: 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
Автоматическое обновление одного пакета: 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:
Если вы хотите указать версию обновления для некоторых пакетов, можно настроить следующим образом: repositories:
Затем выполните автоматическое обновление через инструмент: python3 simple_update_robot.py -u repo upgrade-example master
#### б. oa_upgradable.py
Поиск информации о пакете и рекомендация версий: python3 oa_upgradable.py pkg_name
Пример: python3 oa_upgradable.py glibc
Запуск требует 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 )