Выпуск Doris SDK
Исходный код Doris SDK хранится отдельно от основного репозитория Doris в репозитории apache/doris-sdk. В этом документе на примере выпуска Doris SDK v1.0.0 рассматривается весь процесс от публикации в Maven Staging до голосования сообщества.
Обзор процесса выпуска
| Этап | Цель | Основные артефакты |
|---|---|---|
| 1. Подготовка к выпуску | Выполнить предварительные требования для выпуска (KEYS, учётные записи, окружение и т. д.) | Ключ GPG, учётная запись Apache |
| 2. Подготовка ветки | Создать ветку релиза в репозитории | Ветка 1.0.0-release |
| 3. Публикация в Maven Staging | Создать тег релиза и опубликовать артефакты в Apache Maven Staging | Тег, репозиторий Staging |
| 4. Подготовка SVN | Загрузить пакет исходного кода, подпись и файлы контрольных сумм в SVN | tar.gz / .asc / .sha512 |
| 5. Начало голосования | Начать голосование в списке рассылки dev@doris | Письмо с объявлением голосования |
| 6. Завершение выпуска | Архивировать релиз и объявить о нём после успешного голосования | Пакет релиза |
1. Подготовка к выпуску
Выполните предварительные требования для выпуска, описанные в документе Подготовка к выпуску.
2. Публикация в Maven
2.1 Подготовка ветки
Создайте в репозитории ветку 1.0.0-release и переключитесь на неё:
git checkout -b 1.0.0-release
2.2 Публикация в Maven Staging
Выполните следующие команды, чтобы создать тег релиза:
mvn release:clean
mvn release:prepare -DpushChanges=false
Здесь -DpushChanges=false означает, что созданные ветка и тег не отправляются в репозиторий во время выполнения команды.
После запуска mvn release:prepare нужно последовательно указать следующие три значения:
| Вводимые данные | Описание | Пример |
|---|---|---|
| Версия Doris SDK | Выпускаемая версия в формате {sdk.version} | 1.0.0 |
| Имя тега релиза | Имя тега, создаваемого локально | 1.0.0 |
| Следующая версия | Используется только для создания локальной ветки; практического значения не имеет | 1.0.1-SNAPSHOT |
Распространённые проблемы:
-
mvn release:prepareможет запросить парольную фразу GPG. -
Если появляется ошибка
gpg: no valid OpenPGP data found, выполните следующую команду и повторите попытку:export GPG_TTY=$(tty)
После успешного выполнения mvn release:prepare локально создаются тег и ветка, а в текущую ветку добавляются два коммита:
- Первый коммит соответствует созданному тегу.
- Второй коммит соответствует ветке следующей версии.
Проверить это можно с помощью git log.
Убедившись, что локальный тег корректен, отправьте его в репозиторий:
git push upstream --tags
Здесь upstream указывает на репозиторий apache/doris-sdk.
Наконец, выполните команду perform, чтобы опубликовать артефакты сборки в Maven Staging:
mvn release:perform
После успешного выполнения команды опубликованную версию можно найти в репозиториях Apache Maven Staging:

Примечание: опубликованные артефакты должны включать файл подписи .asc.
Если что-то пошло не так, выполните откат в следующем порядке:
- Удалите локальный тег.
- Удалите тег в репозитории.
- Удалите два созданных локальных коммита.
- Выполните
dropдля промежуточного релиза на странице Staging Repository. - Повторите описанные выше действия.
После проверки нажмите кнопку close на странице, чтобы завершить публикацию в Staging.
2.3 Подготовка SVN
2.3.1 Получение рабочей копии репозитория SVN
svn co https://dist.apache.org/repos/dist/dev/doris/
2.3.2 Упаковка исходного кода из тега и создание подписи
В качестве примера используется 1.0.0; для других тегов действия аналогичны:
git archive --format=tar 1.14_2.12-1.0.0 --prefix=apache-doris-sdk-1.0.0-src/ | gzip > apache-doris-sdk-1.0.0-src.tar.gz
gpg -u xxx@apache.org --armor --output apache-doris-sdk-1.0.0-src.tar.gz.asc --detach-sign apache-doris-sdk-1.0.0-src.tar.gz
sha512sum apache-doris-sdk-1.14_2.12-1.0.0-src.tar.gz > apache-doris-sdk-1.0.0-src.tar.gz.sha512
В macOS используйте shasum вместо sha512sum:
shasum -a 512 apache-doris-sdk-1.0.0-src.tar.gz > apache-doris-sdk-1.0.0-src.tar.gz.sha512
В результате вы получите три файла:
apache-doris-sdk-1.0.0-src.tar.gz
apache-doris-sdk-1.0.0-src.tar.gz.asc
apache-doris-sdk-1.0.0-src.tar.gz.sha512
2.3.3 Загрузка в SVN
Переместите эти три файла в каталог SVN doris/doris-sdk/1.0.0/. Итоговая структура каталогов SVN будет выглядеть так:
├── 1.2.3-rc01
│ ├── apache-doris-1.2.3-src.tar.gz
│ ├── apache-doris-1.2.3-src.tar.gz.asc
│ ├── apache-doris-1.2.3-src.tar.gz.sha512
...
├── KEYS
├── doris-sdk
│ └── 1.0.0
│ ├── apache-doris-sdk-1.0.0-src.tar.gz
│ ├── apache-doris-sdk-1.0.0-src.tar.gz.asc
│ └── apache-doris-sdk-1.0.0-src.tar.gz.sha512
Каталог 1.2.3-rc01 относится к основному репозиторию Doris, а в doris-sdk/1.0.0 находятся файлы этого релиза.
Инструкции по подготовке файла KEYS приведены в документе Подготовка к выпуску.
2.4 Голосование
Начните голосование в списке рассылки dev@doris.apache.org. Используйте следующий шаблон письма:
Hi All,
This is a call for the vote to release Apache Doris-SDK 1.0.0
The git tag for the release:
https://github.com/apache/doris-sdk/releases/tag/1.0.0
Release Notes are here:
https://github.com/apache/doris-sdk/blob/1.0.0/CHANGE-LOG.txt
Thanks to everyone who has contributed to this release.
The release candidates:
https://dist.apache.org/repos/dist/dev/doris/doris-sdk/1.0.0/
KEYS file is available here:
https://downloads.apache.org/doris/KEYS
To verify and build, you can refer to following link:
https://doris.apache.org/community/release-and-verify/release-verify
The vote will be open for at least 72 hours.
[ ] +1 Approve the release
[ ] +0 No opinion
[ ] -1 Do not release this package because …
3. Завершение выпуска
После успешного голосования выполните все оставшиеся действия по выпуску, описанные в документе Завершение выпуска.
Приложение: публикация в SNAPSHOT
Snapshot не является релизной версией Apache и используется только для предварительного ознакомления перед выпуском. Опубликовать версию Snapshot можно после её обсуждения и одобрения со стороны PMC.
Перейдите в каталог Doris SDK и выполните:
mvn deploy
После этого версию Snapshot можно найти по адресу:
https://repository.apache.org/content/repositories/snapshots/org/apache/doris/doris-sdk/
Часто задаваемые вопросы
Q1: mvn release:prepare завершается ошибкой gpg: no valid OpenPGP data found
GPG не привязан к текущему терминалу. Выполните export GPG_TTY=$(tty) и повторите попытку.
Q2: Шаг close на этапе Staging завершается ошибкой No public key
Открытый ключ GPG не загружен на сервер ключей. Выполните следующую команду, чтобы отправить открытый ключ на общедоступный сервер ключей:
gpg --keyserver hkp://keyserver.ubuntu.com --send-keys <KEY_ID>
Узнать <KEY_ID> можно с помощью gpg -k.
Q3: Я допустил ошибку. Как выполнить откат?
Выполните следующие действия по порядку:
- Удалите локальный тег:
git tag -d <tag>. - Удалите удалённый тег:
git push upstream --delete <tag>. - Откатите два локальных коммита релиза.
- Выполните
dropдля промежуточного релиза на странице Staging Repositories. - Снова выполните
mvn release:prepareиmvn release:perform.