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

Выпуск 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Загрузить пакет исходного кода, подпись и файлы контрольных сумм в SVNtar.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 локально создаются тег и ветка, а в текущую ветку добавляются два коммита:

  1. Первый коммит соответствует созданному тегу.
  2. Второй коммит соответствует ветке следующей версии.

Проверить это можно с помощью git log.

Убедившись, что локальный тег корректен, отправьте его в репозиторий:

git push upstream --tags

Здесь upstream указывает на репозиторий apache/doris-sdk.

Наконец, выполните команду perform, чтобы опубликовать артефакты сборки в Maven Staging:

mvn release:perform

После успешного выполнения команды опубликованную версию можно найти в репозиториях Apache Maven Staging:

Примечание: опубликованные артефакты должны включать файл подписи .asc.

Если что-то пошло не так, выполните откат в следующем порядке:

  1. Удалите локальный тег.
  2. Удалите тег в репозитории.
  3. Удалите два созданных локальных коммита.
  4. Выполните drop для промежуточного релиза на странице Staging Repository.
  5. Повторите описанные выше действия.

После проверки нажмите кнопку 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: Я допустил ошибку. Как выполнить откат?​

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

  1. Удалите локальный тег: git tag -d <tag>.
  2. Удалите удалённый тег: git push upstream --delete <tag>.
  3. Откатите два локальных коммита релиза.
  4. Выполните drop для промежуточного релиза на странице Staging Repositories.
  5. Снова выполните mvn release:prepare и mvn release:perform.