Выпуск Apache Doris Core с помощью ИИ-агента
Эта страница представляет собой пошаговое руководство по выпуску Doris Core для ИИ-агентов. Его цель не в том, чтобы агент принимал решения о выпуске за менеджера релиза. Цель в том, чтобы агент мог провести менеджера релиза через весь процесс шаг за шагом: подготовить ветку и тег, создать пакет исходного кода RC, подписать его, загрузить в Apache dev SVN, начать голосование, завершить официальный выпуск и обновить сайт Doris.
Если вы агент, следуйте этому документу по порядку. Для каждого шага объясняйте его цель, какие входные данные должен подтвердить менеджер релиза, какую команду вы выполните или попросите выполнить менеджера релиза и какой проверяемый результат означает завершение шага.
Область применения и ограничения
Этот документ относится к Apache Doris Core, то есть к выпуску исходного кода из репозитория apache/doris. Вспомогательные скрипты для выпуска находятся в репозитории Doris:
tools/release-tools/
Вспомогательные инструкции по обновлению сайта находятся в репозитории Doris Website:
doc-tools/skills/add-release/SKILL.md
Агент должен соблюдать следующие ограничения:
| Пункт | Требование |
|---|---|
| Решения о выпуске | Решения о выпуске принимают менеджер релиза и сообщество. Агент только напоминает, проверяет и систематизирует информацию |
| Учётная запись ASF и пароль | Не записывайте учётные данные в файлы, не выводите их в логи и не добавляйте в коммиты Git |
| Закрытый ключ GPG и парольная фраза | Менеджер релиза управляет ими локально. Агент не должен запрашивать или хранить парольную фразу |
| Запись в публичный SVN | Перед каждой записью просите менеджера релиза подтвердить целевой URL и список файлов |
| Отправка писем | Скрипты только создают черновики писем. Менеджер релиза должен проверить и вручную отправить письма с адреса @apache.org |
| Результат голосования | Агент может помочь подсчитать голоса, но менеджер релиза должен подтвердить, что результат соответствует правилам голосования ASF |
| Готовые бинарные пакеты | Скрипты могут подписывать локальные готовые бинарные пакеты и создавать контрольные суммы, но не загружают бинарные пакеты |
Входные данные, которые агент должен собрать в первую очередь
Перед началом процесса выпуска попросите менеджера релиза подтвердить следующие входные данные. Не переходите к упаковке или загрузке, если отсутствует какой-либо ключевой пункт.
| Входные данные | Пример | Назначение |
|---|---|---|
| Версия выпуска | 4.0.7 | Используется для формирования имён пакетов, ссылок на сайте и писем о выпуске |
| Номер RC | rc01 или rc02 | Используется для формирования тега Git и каталога dev SVN |
| Тег Git | 4.0.7-rc01 | Неизменяемая точка в истории исходного кода для кандидата в релиз |
| Ветка выпуска | branch-4.0 | Позволяет убедиться, что тег создан из ожидаемой ветки |
| Идентификатор Apache | morningman | Используется для SVN, KEYS, писем и сведений о подписи |
| Адрес электронной почты Apache | morningman@apache.org | Используется как адрес подписанта в письмах о голосовании |
| Ключ подписи | Отпечаток GPG или пустое значение для автоматического определения | Используется для создания подписи .asc |
| URL примечаний к выпуску | URL задачи GitHub или примечаний к выпуску на сайте | Используется в письмах о голосовании и при обновлении сайта |
| Готовые бинарные пакеты | Локальные пути к tar-архивам для x64, x64-noavx2 и arm64 | Для необязательной подписи и указания в письме о голосовании |
| Разрешение PMC на запись в release SVN | Есть или требуется помощь PMC | Необходимо для этапа официального выпуска в SVN |
| Время обновления сайта | Сейчас или позже | Определяет, нужно ли запускать процесс обновления Doris Website |
Собрав входные данные, ещё раз изложите план выпуска. Например:
This release plan is for Apache Doris 4.0.7, RC rc01, tag 4.0.7-rc01.
The RC source artifacts will be uploaded to https://dist.apache.org/repos/dist/dev/doris/4.0.7-rc01/.
After the vote passes, the final source artifacts will be published to https://dist.apache.org/repos/dist/release/doris/4.0/4.0.7/.
Этап 1: Подтвердите готовность к выпуску
Не переходите сразу к вспомогательным скриптам. Сначала убедитесь, что подготовка к выпуску завершена. Вспомогательные скрипты выпуска Doris предполагают, что следующие работы уже выполнены:
- Менеджер релиза завершил обсуждение плана выпуска в сообществе.
- Ветка выпуска создана.
- Задачи, PR и важные исправления ошибок для целевой версии закрыты, включены в код или отложены.
- Необходимые патчи перенесены в ветку выпуска с помощью cherry-pick.
- QA или ответственные сопровождающие завершили проверку стабильности.
- Ветка успешно собирается.
- Примечания к выпуску готовы, обычно в виде задачи GitHub или документа Markdown.
- Тег Git создан и отправлен в удалённый репозиторий, указывающий на
apache/doris.
Попросите менеджера релиза выполнить следующие проверки в репозитории Doris:
git fetch --tags <apache-remote>
git rev-parse <version>-<rc>
git ls-remote --tags <apache-remote> refs/tags/<version>-<rc>
Критерии завершения:
- Локальный тег существует.
- В удалённом репозитории Apache Doris на GitHub есть такой же тег.
- Локальный и удалённый теги указывают на один и тот же коммит.
- Менеджер релиза подтверждает готовность ветки выпуска, примечаний к выпуску и результатов проверок.
Если тег отсутствует или коммиты тегов не совпадают, остановите процесс выпуска и попросите менеджера релиза исправить тег, прежде чем продолжать.
Этап 2: Настройте release.env
Попросите менеджера релиза перейти в каталог инструментов выпуска в репозитории Doris:
cd tools/release-tools
Затем отредактируйте release.env. Для 4.0.7-rc01 основные поля выглядят так:
VERSION="4.0.7"
RC="rc01"
TAG="${VERSION}-${RC}"
GIT_REMOTE="upstream-apache"
APACHE_ID="<your-apache-id>"
APACHE_EMAIL="<your-apache-id>@apache.org"
SIGNER_NAME="<your display name>"
SIGNING_KEY="<your signing key fingerprint, or empty if only one secret key exists>"
RELEASE_NOTES_URL="<release notes issue or page URL>"
ANNOUNCE_RELEASE_NOTES_URL="<release notes URL for announce email, or empty to reuse>"
Напомните менеджеру релиза проверить следующие производные значения:
| Поле | Ожидаемое значение |
|---|---|
TAG | Должно включать суффикс RC, например 4.0.7-rc01 |
PKG_BASE | Имя пакета исходного кода для этапа голосования с суффиксом RC, например apache-doris-4.0.7-rc01-src |
RELEASE_PKG_BASE | Имя пакета исходного кода окончательного выпуска без суффикса RC, например apache-doris-4.0.7-src |
DEV_SVN_DIR | Каталог RC в dev SVN, например https://dist.apache.org/repos/dist/dev/doris/4.0.7-rc01 |
RELEASE_SVN_DIR | Каталог release SVN, например https://dist.apache.org/repos/dist/release/doris/4.0/4.0.7 |
VERIFY_GUIDE_URL | Указывает на руководство по проверке выпуска Doris |
Если в письме о голосовании нужно перечислить готовые бинарные пакеты, менеджер релиза может указать абсолютные локальные пути к бинарным tar-архивам в BIN_FILES. Чётко объясните ограничения:
02-package-sign-upload.shподписывает файлы изBIN_FILESи создаёт рядом с ними файлы.ascи.sha512.- Скрипт не загружает эти бинарные пакеты в Apache dev SVN.
- Артефакты выпуска для голосования ASF содержат только исходный код.
Этап 3: Экспортируйте учётные данные ASF SVN
Попросите менеджера релиза экспортировать учётные данные ASF в текущей оболочке:
export ASF_USERNAME=<your-apache-id>
export ASF_PASSWORD='<your-apache-ldap-password>'
Не просите менеджера релиза передавать вам пароль. Не записывайте пароль в release.env.
Критерии завершения:
ASF_USERNAMEзадана в текущей оболочке.ASF_PASSWORDзадана в текущей оболочке.- Ни одна из переменных не добавлена в коммиты Git.
Этап 4: Проверьте окружение для подписи и выпуска
Выполните:
./01-check-env.sh
Этот скрипт проверяет:
- Наличие необходимых инструментов, включая
git,gpg,svn,sha512sum,curlиgzip. - Пригодность
GPG_TTYдля работы. - Наличие настроек предпочтительного алгоритма хеширования SHA512 в
gpg.conf. - Наличие пригодного для использования локального закрытого ключа GPG.
- Наличие ключа подписи в Doris KEYS.
- Работоспособность локальной тестовой подписи и её проверки.
- Наличие учётных данных ASF SVN.
Если скрипт предлагает отредактировать gpg.conf, импортировать ключ, создать ключ или опубликовать KEYS, сначала объясните, что именно он изменит. Затем дайте менеджеру релиза решить, подтверждать ли действие.
Строка успешного завершения:
environment looks READY for <version>-<rc>
Если эта строка не появилась, не переходите к упаковке и загрузке.
Этап 5: Упакуйте, подпишите и загрузите артефакты исходного кода RC
Перед запуском скрипта загрузки ещё раз укажите целевой URL dev SVN:
https://dist.apache.org/repos/dist/dev/doris/<version>-<rc>/
После подтверждения менеджера релиза выполните:
./02-package-sign-upload.sh
Скрипт выполняет следующие действия:
- Проверяет наличие локального тега.
- Проверяет наличие такого же тега в удалённом репозитории Apache Doris на GitHub.
- Проверяет, что локальный и удалённый теги указывают на один и тот же коммит.
- Создаёт tar-архив исходного кода с помощью
git archive. - Создаёт подпись GPG
.asc. - Создаёт контрольную сумму
.sha512. - Проверяет подпись и контрольную сумму.
- При необходимости подписывает готовые бинарные пакеты, перечисленные в
BIN_FILES, и создаёт для них контрольные суммы. - После двух подтверждений загружает tar-архив исходного кода,
.ascи.sha512в Apache dev SVN.
В обоих случаях, когда требуется подтверждение, напоминайте менеджеру релиза проверить следующее:
- Целевой URL SVN указан верно.
- Список загрузки содержит только tar-архив исходного кода, подпись и контрольную сумму.
- Имена файлов включают суффикс RC.
- Сообщение коммита SVN соответствует этому RC.
Критерии завершения:
- Каталог dev SVN содержит следующие три файла:
apache-doris-<version>-<rc>-src.tar.gz
apache-doris-<version>-<rc>-src.tar.gz.asc
apache-doris-<version>-<rc>-src.tar.gz.sha512
- В конце работы скрипт предлагает менеджеру релиза выполнить
./03-vote-mail.sh.
Если перед загрузкой обнаружено, что версия, тег, имя файла или URL SVN указаны неверно, остановитесь и не позволяйте менеджеру релиза подтвердить коммит.
Этап 6: Создайте и отправьте письмо [VOTE]
Выполните:
./03-vote-mail.sh
Скрипт записывает следующие файлы в WORK_DIR:
vote-email.txt
vote-email.eml
Помогите менеджеру релиза проверить черновик письма:
| Пункт проверки | Требование |
|---|---|
| Тема | [VOTE] Release Apache Doris <version>-<rc> |
| Ссылка на тег GitHub | Указывает на https://github.com/apache/doris/releases/tag/<version>-<rc> |
| Примечания к выпуску | Указывают на примечания к выпуску этой версии |
| Артефакты RC | Указывают на каталог RC в dev SVN |
| Ключ PGP | Отпечаток, адрес электронной почты Apache и URL KEYS указаны верно |
| Руководство по проверке | Указывает на руководство по проверке выпуска Doris |
| Продолжительность голосования | Указано, что голосование открыто не менее 72 часов |
| Готовые бинарные пакеты | Если они указаны, URL tar-архива, .asc и .sha512 должны быть верными |
Менеджер релиза должен вручную отправить письмо с адреса @apache.org на адрес:
dev@doris.apache.org
Агент не должен отправлять письмо автоматически.
Критерии завершения:
- Письмо
[VOTE]отправлено на адресdev@doris.apache.org. - Менеджер релиза зафиксировал время начала голосования.
- Голосование остаётся открытым не менее 72 часов.
Этап 7: Отслеживайте голосование и отправьте письмо [RESULT]
Во время голосования помогайте менеджеру релиза вести таблицу голосов:
| Участник голосования | Идентификатор Apache | Голос | Решающий голос | Примечания |
|---|---|---|---|---|
<name> | <apache-id> | +1 | да/нет | <verification summary> |
Напоминайте менеджеру релиза:
- Учитываются только явно выраженные голоса в ответах.
- У менеджера релиза нет неявного голоса
+1. Если менеджер релиза хочет проголосовать, он должен явно выразить свой голос в ответе. - Голоса PMC имеют решающую силу. Голоса остальных участников сообщества носят рекомендательный характер.
- Голосование должно оставаться открытым не менее 72 часов.
- Для выпуска обычно требуется не менее 3 решающих голосов
+1, а число голосов+1должно превышать число голосов-1. - При наличии обоснованного голоса
-1или серьёзной проблемы, выявленной при проверке, менеджер релиза должен решить, следует ли отменить этот RC и подготовить новый.
После успешного голосования менеджер релиза вручную отправляет письмо [RESULT]. Агент может подготовить текст письма, но менеджер релиза должен проверить число голосов, их решающую силу и ссылки на ветки обсуждения в списке рассылки.
Критерии завершения:
- Письмо
[RESULT][VOTE]отправлено на адресdev@doris.apache.org. - Менеджер релиза подтвердил, что этот RC прошёл голосование.
Этап 8: Опубликуйте окончательные артефакты исходного кода и создайте письмо [ANNOUNCE]
Запускайте скрипт завершения только после успешного голосования и отправки письма [RESULT]:
./04-release-complete.sh
Скрипт:
- Проверяет наличие tar-архива исходного кода RC, прошедшего голосование, его подписи и контрольной суммы в dev SVN.
- Проверяет, что целевой каталог release SVN ещё не существует.
- Использует
svnmuccдля создания каталога release SVN. - Перемещает файлы RC из dev SVN в release SVN.
- Удаляет суффикс RC из имён файлов окончательного выпуска.
- Удаляет каталог RC из dev SVN.
- Создаёт
announce-email.txtиannounce-email.eml.
Напоминайте менеджеру релиза:
- Для записи в release SVN обычно требуются права PMC.
- Целевой каталог release SVN не должен включать суффикс RC.
- Имена файлов окончательного пакета исходного кода не должны включать суффикс RC.
- На этом шаге каталог RC удаляется из dev SVN.
- Перед коммитом изменений SVN скрипт запрашивает окончательное подтверждение.
Если перемещение в release SVN уже выполнено и нужно только заново создать письмо с объявлением о выпуске, используйте:
./04-release-complete.sh --mail-only
Критерии завершения:
- Каталог release SVN содержит следующие файлы:
apache-doris-<version>-src.tar.gz
apache-doris-<version>-src.tar.gz.asc
apache-doris-<version>-src.tar.gz.sha512
- Соответствующий каталог
<version>-<rc>удалён из dev SVN. - Черновик письма с объявлением о выпуске создан.
Этап 9: Отправьте письмо [ANNOUNCE]
Помогите менеджеру релиза проверить announce-email.txt:
| Пункт проверки | Требование |
|---|---|
| Тема | [ANNOUNCE] Apache Doris <version> release |
| Страница загрузки | Указывает на https://doris.apache.org/download/ |
| Артефакты исходного кода | Указывают на окончательный каталог release SVN |
| Примечания к выпуску | Указывают на окончательные примечания к выпуску |
| Подпись | Содержит верное имя менеджера релиза |
Менеджер релиза вручную отправляет письмо с объявлением о выпуске с адреса @apache.org на адрес:
dev@doris.apache.org
Критерии завершения:
- Письмо
[ANNOUNCE]отправлено. - Менеджер релиза сохранил ссылку на ветку обсуждения в списке рассылки для ссылок на сайте или в GitHub Release.
Этап 10: Обновите информацию о выпуске на сайте Doris
После успешного голосования по выпуску перейдите в репозиторий Doris Website и прочитайте:
doc-tools/skills/add-release/SKILL.md
Сначала соберите или подтвердите следующие входные данные:
| Входные данные | Описание |
|---|---|
| Версия | Например, 4.0.7 |
| Серия выпусков | Например, 4.0 |
| Источник примечаний к выпуску | Задача GitHub, текст Markdown или существующие примечания к выпуску |
| Дата выпуска | Предпочтительно использовать время каталога загрузок Apache или дату объявления |
| URL пакета исходного кода | https://downloads.apache.org/doris/<series>/<version>/apache-doris-<version>-src.tar.gz |
| URL бинарных пакетов | x64, x64-noavx2, arm64, а также .asc и .sha512 |
| Суффикс имени файла исходного кода | Подтвердите, что у окончательного пакета исходного кода нет суффикса RC |
| Размещение на сайте | Нужно ли обновить Latest, Prev или только историю выпусков |
| Локализация | По умолчанию поддерживайте соответствие примечаний к выпуску на английском и китайском языках |
Обычно требуется обновить следующие файлы:
src/constant/download.data.ts
releasenotes/v<series>/release-<version>.md
i18n/zh-CN/docusaurus-plugin-content-docs-releases/current/v<series>/release-<version>.md
releasenotes/all-release.md
i18n/zh-CN/docusaurus-plugin-content-docs-releases/current/all-release.md
sidebarsReleases.json
Особенно внимательно проверьте следующее:
- И
DORIS_VERSIONS, иALL_VERSIONSвключают новую версию. - Если новая версия становится основной на странице,
VersionEnum.LatestилиVersionEnum.Prevобновлено правильно. - Поля
sourceиversionдля исходного кода формируют действительный URL пакета исходного кода. - Для каждого бинарного пакета есть ссылки на
.tar.gz,.ascи.sha512. - Примечания к выпуску на английском и китайском языках имеют одинаковую структуру.
all-release.mdсохраняет сортировку по дате выпуска в обратном хронологическом порядке.sidebarsReleases.jsonвключает идентификатор новых примечаний к выпуску и остаётся корректным JSON.
Рекомендуемые команды проверки:
curl -sI https://downloads.apache.org/doris/<series>/<version>/apache-doris-<version>-src.tar.gz
curl -sI https://download.velodb.io/apache-doris-<version>-bin-x64.tar.gz
curl -sI https://download.velodb.io/apache-doris-<version>-bin-x64-noavx2.tar.gz
curl -sI https://download.velodb.io/apache-doris-<version>-bin-arm64.tar.gz
git diff --check
node -e "JSON.parse(require('fs').readFileSync('sidebarsReleases.json','utf8')); console.log('sidebarsReleases.json ok')"
rg -n "<version>|release-<version>|apache-doris-<version>" src/constant/download.data.ts releasenotes i18n/zh-CN/docusaurus-plugin-content-docs-releases/current sidebarsReleases.json
Если менеджер релиза разрешает проверку сборкой, выполните обычную сборку Docusaurus или команду локальной проверки для репозитория Doris Website. Если менеджер релиза явно отказывается от сборки, укажите это в итоговом отчёте.
Критерии завершения:
- Данные для загрузки на сайте включают новую версию.
- Примечания к выпуску на английском и китайском языках добавлены или обновлены.
- Указатель выпусков и боковая панель обновлены.
- Ссылки на пакет исходного кода, бинарные пакеты, подписи и контрольные суммы доступны.
- Соответствующие команды проверки выполнены успешно либо пропущенные проверки явно указаны.
Этап 11: Проверки после выпуска
В завершение помогите менеджеру релиза выполнить следующие проверки:
| Пункт проверки | Требование |
|---|---|
| Загрузки Apache | https://downloads.apache.org/doris/<series>/<version>/ доступен |
| Страница загрузки | На странице сайта /download/ отображается новая версия |
| Примечания к выпуску | На странице сайта /releases/ отображаются новые примечания к выпуску |
| GitHub Release | GitHub Release для тега обновлён |
| Старые версии | Если этого требует политика сайта, ссылки на старые версии указывают на архивные URL |
| Список рассылки | Ссылки на ветки обсуждения [VOTE], [RESULT] и [ANNOUNCE] сохранены |
| Проверка исходного кода | Файл по окончательному URL загрузки проходит проверку подписи и контрольной суммы |
Используйте окончательный URL загрузки для пробной проверки:
wget https://downloads.apache.org/doris/<series>/<version>/apache-doris-<version>-src.tar.gz
wget https://downloads.apache.org/doris/<series>/<version>/apache-doris-<version>-src.tar.gz.asc
wget https://downloads.apache.org/doris/<series>/<version>/apache-doris-<version>-src.tar.gz.sha512
wget https://downloads.apache.org/doris/KEYS
gpg --import KEYS
gpg --verify apache-doris-<version>-src.tar.gz.asc apache-doris-<version>-src.tar.gz
sha512sum --check apache-doris-<version>-src.tar.gz.sha512
Условия для остановки и повторной оценки
Если произойдёт что-либо из перечисленного ниже, посоветуйте менеджеру релиза приостановить процесс выпуска:
- Локальный и удалённый теги указывают на разные коммиты.
01-check-env.shне выводитenvironment looks READY.- Проверка подписи GPG или контрольной суммы завершается ошибкой.
- Целевой каталог dev SVN или release SVN предназначен для другой версии.
- Голосование открыто менее 72 часов.
- Набрано менее 3 решающих голосов
+1. - Есть неурегулированный обоснованный голос
-1. - Проверяющий обнаружил неожиданные бинарные файлы или артефакты сборки в пакете исходного кода.
- Проверки LICENSE, NOTICE или лицензионных заголовков завершились ошибкой.
- Ссылки на сайте указывают на отсутствующие пакеты исходного кода, бинарные пакеты, подписи или контрольные суммы.
Если проблема требует нового RC, помогите менеджеру релиза выполнить следующие действия:
- Исправить ветку выпуска.
- Создать и отправить новый тег, например перейти с
rc01наrc02. - Обновить
RCиTAGвrelease.env. - Начать заново с этапа 4.
Рекомендуемый шаблон ответа агента
Когда менеджер релиза говорит «начни выпуск Doris 4.0.7», агент может ответить:
I will guide you through the Doris Core release flow. First I need to confirm a few inputs:
1. Is this rc01 or a later RC?
2. Has the 4.0.7-rcXX tag already been created and pushed to apache/doris?
3. What is the Git remote name in your Doris checkout that points to apache/doris?
4. What is the Release Notes URL?
5. Should this vote email list convenience binaries?
6. Do you have release SVN write permission, or do you need a PMC member to help with the final release step?
After confirming these, I will check the tag and release.env, then run 01-check-env.sh. I will stop for your confirmation before any public SVN write or email send.
Шаблон итогового отчёта
После завершения выпуска отправьте менеджеру релиза краткий отчёт:
Apache Doris <version> release flow is complete.
- RC tag: <version>-<rc>
- Vote artifacts: <dev SVN URL>
- Release artifacts: <release SVN URL>
- Vote thread: <mail thread URL>
- Result thread: <mail thread URL>
- Announce thread: <mail thread URL>
- Website PR/commit: <URL or commit>
- Validation:
- Signature/checksum: passed
- Website links: passed
- Docusaurus build: passed/skipped
Remaining manual follow-ups:
- <none or list remaining follow-ups>