Перейти к содержимому
Последнее обновление

Выпуск 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Используется для формирования имён пакетов, ссылок на сайте и писем о выпуске
Номер RCrc01 или rc02Используется для формирования тега Git и каталога dev SVN
Тег Git4.0.7-rc01Неизменяемая точка в истории исходного кода для кандидата в релиз
Ветка выпускаbranch-4.0Позволяет убедиться, что тег создан из ожидаемой ветки
Идентификатор ApachemorningmanИспользуется для SVN, KEYS, писем и сведений о подписи
Адрес электронной почты Apachemorningman@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 предполагают, что следующие работы уже выполнены:

  1. Менеджер релиза завершил обсуждение плана выпуска в сообществе.
  2. Ветка выпуска создана.
  3. Задачи, PR и важные исправления ошибок для целевой версии закрыты, включены в код или отложены.
  4. Необходимые патчи перенесены в ветку выпуска с помощью cherry-pick.
  5. QA или ответственные сопровождающие завершили проверку стабильности.
  6. Ветка успешно собирается.
  7. Примечания к выпуску готовы, обычно в виде задачи GitHub или документа Markdown.
  8. Тег 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

Скрипт выполняет следующие действия:

  1. Проверяет наличие локального тега.
  2. Проверяет наличие такого же тега в удалённом репозитории Apache Doris на GitHub.
  3. Проверяет, что локальный и удалённый теги указывают на один и тот же коммит.
  4. Создаёт tar-архив исходного кода с помощью git archive.
  5. Создаёт подпись GPG .asc.
  6. Создаёт контрольную сумму .sha512.
  7. Проверяет подпись и контрольную сумму.
  8. При необходимости подписывает готовые бинарные пакеты, перечисленные в BIN_FILES, и создаёт для них контрольные суммы.
  9. После двух подтверждений загружает 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

Скрипт:

  1. Проверяет наличие tar-архива исходного кода RC, прошедшего голосование, его подписи и контрольной суммы в dev SVN.
  2. Проверяет, что целевой каталог release SVN ещё не существует.
  3. Использует svnmucc для создания каталога release SVN.
  4. Перемещает файлы RC из dev SVN в release SVN.
  5. Удаляет суффикс RC из имён файлов окончательного выпуска.
  6. Удаляет каталог RC из dev SVN.
  7. Создаёт 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: Проверки после выпуска​

В завершение помогите менеджеру релиза выполнить следующие проверки:

Пункт проверкиТребование
Загрузки Apachehttps://downloads.apache.org/doris/<series>/<version>/ доступен
Страница загрузкиНа странице сайта /download/ отображается новая версия
Примечания к выпускуНа странице сайта /releases/ отображаются новые примечания к выпуску
GitHub ReleaseGitHub 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, помогите менеджеру релиза выполнить следующие действия:

  1. Исправить ветку выпуска.
  2. Создать и отправить новый тег, например перейти с rc01 на rc02.
  3. Обновить RC и TAG в release.env.
  4. Начать заново с этапа 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>