1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-JanusGraph_old1

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
RELEASING.md 27 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 11.03.2025 00:34 c4c6660

Выпуск JanusGraph

Существует два возможных способа выпуска JanusGraph:

  • Автоматический — частично автоматизированный выпуск через GitHub Actions. Это предпочитаемый способ выпуска.
  • Ручной — полностью ручной выпуск. Этот способ является устаревшим и следует использовать только в случае проблем с использованием GitHub Actions или если требуется скомпилировать jar артефакты с помощью кастомной версии Java, которая недоступна в действии GitHub setup-java.

Общие предварительные требования: аккаунт Sonatype

Артефакты выпуска будут развернуты в Sonatype OSS с помощью плагина Maven Deploy. У вас должно быть зарегистрированное имя пользователя Sonatype, связанное с организацией JanusGraph. Подробнее см. здесь.

Список проверок перед выпуском* [ ] Начните новую тему [DISCUSS] на janusgraph-dev с предложениями того, что должно войти в выпуск и целевой даты

  • Убедитесь, что все pull requests и проблемы, добавленные с момента последнего выпуска, связаны с майлстоуном
  • Завершите все пункты, связанные с майлстоуном, или переместите незавершенные пункты на новый майлстоун при необходимости
  • Создайте pull requests с обновлением версий
  • Убедитесь, что все изменения были слиты в основную ветку
  • Отправьте тэг выпуска
  • Только для потока ручного выпуска Запустите деплой для создания Sonatype временного репозитория и генерации артефактов для страницы выпуска
  • Только для потока ручного выпуска Создайте черновик выпуска и загрузите артефакты в него
  • Обновите описание черновика выпуска
  • Закройте временное хранилище в Sonatype
  • Преобразуйте черновик выпуска в публичный предвыпуск
  • Создайте тему голосования [VOTE] на janusgraph-dev и получите необходимое количество голосов от трех членов TSC
  • Официально выпустите временное хранилище в Sonatype
  • Удалите метку предвыпуска со страницы выпусков
  • Объявите новый выпуск
  • Подготовьте следующий SNAPSHOT выпуск
  • Документируйте полученные уроки## Предварительные требования [только для потока ручного выпуска]

Пропустите всю эту секцию, если вы используете автоматический поток выпуска. Процесс выпуска был протестирован только на Linux и macOS. Необходимо установить следующие инструменты.

  • gpg — требует запущенного агента.

Подпись ключами GPG

Артефакты JanusGraph подписываются с помощью цифровой подписи GPG. Если у вас нет ключа подписи GPG, включённого в файл KEYS, вам потребуется создать его и обновить файл KEYS. Если ваш ключ уже включен в файл KEYS, пропустите этот шаг. Перейдите на страницу релизов и скачайте файл KEYS (расположенный в разделе Assets) последнего релиза. Сгенерируйте свой ключ:

gpg --full-generate-key

Выберите:

  • RSA и RSA
  • 4096 бит
  • без срока действия
  • комментарий: CODE SIGNING KEY

Добавьте свой ключ в файл KEYS:

(gpg --list-sigs <key id> && gpg --armor --export <key id>) >> KEYS

После создания ключа и добавления его в файл KEYS он должен быть опубликован на публичном сервере ключей. Вы можете загрузить ключ на несколько серверов в пуле или использовать альтернативный сервер, если pgp.mit.edu недоступен. Конфигурация Sonatype обычно включает следующие серверы ключей: keyserver.ubuntu.com, keys.openpgp.org, pgp.mit.edu.

gpg --keyserver <key server> --send-keys <key id>
```Пример:

```shell
gpg --keyserver pgp.mit.edu --send-keys 7F87F9BD4D9F71A6

Настройка Maven для паролей сервера

Артефакты выпуска будут загружены в временную директорию на Sonatype OSS. Если вы не настроите Maven с паролями сервера, плагин Maven Deploy столкнётся с ошибкой 401 Unauthorized. Шаги ниже взяты из этого руководства.

  • Создайте основной пароль: mvn --encrypt-master-password
  • Добавьте основной пароль в файл $HOME/.m2/settings-security.xml
<settingsSecurity>
  <master>{основной пароль}</master>
</settingsSecurity>

Обратите внимание: Пароль и окружающие фигурные скобки {} должны быть помещены в тег <master>. Пример: <master>{1234567ABCDEFG}</master>

  • После того как основной пароль будет добавлен в файл $HOME/.m2/settings-security.xml, зашифруйте пароль сервера: mvn --encrypt-password
  • Создайте файл $HOME/.m2/settings.xml используя ваш логин Sonatype и зашифрованный пароль сервера```xml
ossrh {sonatype username} {зашифрованный sonatype пароль} ```

Пароль GPG

Вы можете передать его как параметр командной строки Maven с помощью -Dgpg.passphrase=$GPG_PASS. Вы также можете зашифровать ключ GPG с помощью mvn --encrypt-password и добавить его в файл $HOME/.m2/settings.xml, как показано ниже. Может потребоваться один раз ввести ваш пароль GPG. Иначе вам придётся многократно вводить свой пароль GPG при каждом запросе во время сборки.```xml ossrh {sonatype username} {encrypted sonatype password} gpg <gpg.executable>gpg</gpg.executable> <gpg.passphrase>{encrypted gpg passphrase}</gpg.passphrase> gpg


# Шаги выпуска

### Создание темы обсуждения

Рекомендуется использовать предыдущие выпуски в качестве шаблона.
Вот [ссылка](https://groups.google.com/d/msg/janusgraph-dev/BGaCCH1cTCE/gR8OGm32AQAJ) на тему обсуждения для выпуска 0.2.1.
Важно выделить, какие незаконченные работы должны войти в текущий выпуск и назначить менеджера выпуска.

### Очистка меток выпусков

Пройдитесь по всем коммитам, добавленным с момента последнего выпуска, и убедитесь, что они правильно помечены текущим выпуском.
Любые закрытые задачи в результате этих коммитов также должны быть отмечены как часть текущего выпуска.

### Завершение всех незаконченных работ

Перед отправкой pull request с обновленными номерами версий убедитесь, что все задачи в [milestone выпуска](https://github.com/JanusGraph/janusgraph/milestones) завершены.
Любые незаконченные pull request, которые будут требовать переадресации на будущие milestones.

### Создание pull request с обновлением версий

До того как можно будет создать артефакты и провести голосование, номер версии следует обновить в файлах `pom.xml`.
Убедитесь, что последняя поддерживаемая версия в файле `.github/workflows/docker-release.yml` корректна.#### Обновление справочной документации конфигурации

```Shell
mvn --quiet clean install -DskipTests=true -pl janusgraph-doc -am

Обновление версии выпуска

Эта команда удалит SNAPSHOT из всех версий в файлах pom.

mvn versions:set -DremoveSnapshot=true -DgenerateBackupPoms=false

После установки версии обновите тэг SCM, открыв основной файл pom.xml и заменив <tag>HEAD</tag> на тэг выпуска.
Пример: <tag>v0.3.2</tag>

Обновление файлов, зависящих от версии

Обновите файлы, зависящие от версии, в корне и источниках документации в подпапке docs:

  • docs/changelog.md — Добавьте / завершите раздел выпуска
  • mkdocs.yml — Обновите latest_version и проверьте все остальные пакетные версии.
  • .github/workflows/docker-release-tags.yml — если вы публикуете последнюю младшую версию основной версии, вам также следует обновить LATEST_RELEASE в этом файле (игнорируя версию патча). Это временное решение до автоматизации процесса (см. задача #3905).

Вы можете также потребуется обновить следующие файлы в основном репозитории для любых новых или обновленных зависимостей:

  • NOTICE.txt

Создание коммита выпуска

Создайте коммит выпуска:

git commit -m "JanusGraph release <версия> [cql-tests] [tp-tests]" -s

Создание запроса на слияниеОткройте запросы на слияние для обновлений версий.

Рекомендуется добавить [tp-tests] в сообщение коммита, чтобы запустить тестовый набор TinkerPop. После одобрения и слияния обновлений продолжите процесс выпуска.### Отправка тега, связанного с версией

Создайте тег выпуска с помощью следующей команды:

git tag -a <тег выпуска> -m ""

Тег выпуска должен соответствовать следующему шаблону: v.[major].[minor].[patch]. Пример:

git tag -a v0.3.2 -m ""

Отправьте тег на удаленный репозиторий JanusGraph (обычно upstream):

git push upstream <тег выпуска>

В случае изменения выпуска после отправки тега вам потребуется удалить его, связать с новым коммитом и снова отправить. После этого продолжите выполнение следующего шага:

git tag --delete <тег выпуска>
git push upstream :<тег выпуска>
git tag -a <тег выпуска> -m ""
git push upstream <тег выпуска>

Создание артефактов выпуска [только для ручного потока выпуска]

Если вы используете автоматический поток выпуска пропустите этот раздел.

  • Получите последнюю объединенную версию кода с GitHub.
  • Сохраните любые незафиксированные изменения.
  • Удалите неотслеживаемые файлы и директории.
git fetch
git pull
git stash save
git clean -fdx
  • Разверните все JAR-файлы (включая javadoc и исходники) и все подписи для JAR-файлов в временном репозитории на Sonatype. Обратите внимание, что этот шаг включает два отдельных команды. Первая команда очистит репозиторий перед генерацией артефактов, а вторая — разместит эти сгенерированные артефакты. Вы должны ничего не менять в репозитории или запускать clean между первой и второй командами.
mvn clean install -Pjanusgraph-release -DskipTests=true
mvn deploy -Pjanusgraph-release -DskipTests=true
```* Установите MkDocs, если он ещё не установлен. Он необходим для сборки документации.
1. Установите `python3` и `pip3` (наиболее новую версию pip)
    * Также можно проверить руководство по установке [material-mkdocs](https://squidfunk.github.io/mkdocs-material/getting-started/)
2. Установите зависимости с помощью `pip3 install -r requirements.txt`

* Подготовьте файлы для выпуска на GitHub
```Shell
export JG_VER="janusgraph-0.5.0"
export JG_FULL_VER="janusgraph-full-0.5.0"
mkdir -p ~/jg-staging
cp janusgraph-dist/target/${JG_VER}.zip* ~/jg-staging/
cp janusgraph-dist/target/${JG_FULL_VER}.zip* ~/jg-staging/
mkdocs build
mv site ${JG_VER}-doc
zip -r ${JG_VER}-doc.zip ${JG_VER}-doc
gpg --armor --detach-sign ${JG_VER}-doc.zip
cp ${JG_VER}-doc.zip* ~/jg-staging/

Если это завершается ошибкой "Inappropriate ioctl for device", выполните:

export GPG_TTY=$(tty)
  • Проверьте правильность подписи (оба команды должны показывать хорошую подпись)
cd ~/jg-staging
gpg --verify ${JG_VER}.zip.asc ${JG_VER}.zip
gpg --verify ${JG_FULL_VER}.zip.asc ${JG_FULL_VER}.zip
gpg --verify ${JG_VER}-doc.zip.asc ${JG_VER}-doc.zip

Создайте черновик выпуска на GitHub#### Для автоматического потока выпуска

Если вы используете автоматическую последовательность выпусков, ваш черновик релиза будет создан автоматически,

и он будет заполнен всеми необходимыми артефактами релиза. Обратите внимание, вам потребуется подождать завершения действия ci-publish.yml

после того как вы отправите тег (обычно это занимает около 10–15 минут до завершения этого CI) для создания черновика релиза.

Вам потребуется изменить текстовое содержание черновика релиза и заменить *MILESTONE_NUMBER* правильным номером майлстоуна,

связанным с этим релизом. Вам также потребуется добавить "Замечательные новые возможности", "Проверенная совместимость",

"Установленные версии в Предварительно Упакованной Распределении" и "Контрибьюторы" в текстовое содержание релиза.

Используйте предыдущие релизы в качестве шаблона. Версии можно скопировать из журнала изменений.

Вам потребуется самостоятельно определить и отметить новых участников проекта. Рекомендуется сохранять выпуск в статусе черновика до тех пор, пока вы полностью не готовы начать голосование.Обратите внимание, если ваш выпуск уже создан из-за повторной отправки тэга, то содержание вашего выпуска не будет изменено.
Изменятся только связанные с ним артефакты. Вам также потребуется удалить предыдущий Sonatype стейджинговый выпуск.

Для ручного процесса выпуска

При входе в систему GitHub перейдите на страницу выпусков JanusGraph и нажмите кнопку Создать новый выпуск. Укажите номер тэга, целевую ветвь и заголовок.
Для описания используйте предыдущие выпуски как шаблон и обновите проверенные версии соответственно.
Все артефакты, созданные и перемещённые в ~/jg-staging/ в предыдущем шаге, должны быть добавлены в черновик выпуска.
Не забудьте отметить его как предварительный выпуск.
Рекомендуется сохранять выпуск в статусе черновика до тех пор, пока вы полностью не готовы начать голосование.
Кроме артефактов в ~/jg-staging/, файл KEYS также должен быть добавлен в выпуск.

Закрытие стейджингового репозитория

Войдите на Sonatype и выберите разделы Стейджинговых репозиториев под Управлением сборками. Если вы недавно загрузили, вы легко найдёте свой стейджинговый выпуск, выполнив сортировку по убыванию. Убедитесь, что содержимое полное, затем проверьте выпуск перед тем, как закрыть его.Этот шаг выполнит проверку всех артефактов. В частности, это проверит наличие действительной подписи GPG для всех артефактов. Если этот шаг завершится ошибкой, вам потребуются изменения перед началом голосования.

Создайте [VOTE] тему

Как только все артефакты будут загружены на страницу выпусков GitHub и стейджинговый репозиторий будет заполнен и закрыт, пришло время создать тему [VOTE]. Вот пример темы голосования для JanusGraph 0.3.1, которую можно использовать как шаблон. Подобно политике голосования Apache для выпуска требуется согласие трёх членов TSC для прохождения голосования. См. документацию по политике выпуска JanusGraph для получения более подробной информации.

Завершение выпускаЭто точка невозврата.

После выпуска артефактов в Maven Central и отправки истории в публичный репозиторий GitHub, выпуск больше не может быть отменён.

Опубликовать стейджинговый репозиторийПосле завершения голосования и успешной проверки следует завершить выпуск.

Войдите в Sonatype и выберите закрытый ранее стейджинговый репозиторий.
После выбора выпуска нажмите кнопку Опубликовать.
Стейджинговая директория должна быть автоматически удалена после завершения выпуска.
Артефакты выпуска будут синхронизированы с Maven Central примерно через два часа.### Создайте новую ветвь при необходимости

Если выпуск происходил в ветви master (которая используется для последней минорной или основной версии), вам потребуется создать новую ветвь в формате v${major_version}.${minor_version} (патч версия игнорируется). Также, если это новый основной выпуск, убедитесь, что ветвь защищена, перейдя на страницу правил защиты ветвей и создав те же правила защиты, что были использованы для ветви master. Этот шаг необходим для того, чтобы следующий коммит (коммит восстановления сборки) запускал процесс сборки документации и новое имя ветви было добавлено в выпадающем меню документации как последний выпуск.

Подготовьте следующий промежуточный выпуск

mvn versions:set -DnewVersion=0.3.0-SNAPSHOT -DgenerateBackupPoms=false

Восстановите <scm> до <tag>HEAD</tag> в корневом файле pom.xml. Также обновите snapshot_version в файле mkdocs.yml. Если вы создали новую ветвь, убедитесь, что также обновили targetBranchChoices в файле .backportrc.json и labels в файле .github/dependabot.yml. Эти изменения могут быть отправлены одним коммитом.

Обновление с промежуточного выпуска до окончательного

Редактируйте выпуск на GitHub и снимите флажок для промежуточного выпуска. Убедитесь, что на странице выпуска он теперь помечен как "Окончательный выпуск".

Объявление нового выпускаПосле подтверждения, что артефакты появились в Nexus, менеджер выпуска должен объявить о выпуске в janusgraph-user, janusgraph-dev и janusgraph-announce.

Вот пример объявления о выпуске. После объявления выпуска на наших рассылках также объяви о нем в Twitter и Discord. Прошлые объявления также можно использовать как вдохновение. Убедитесь, что вы опубликовали пост в канале объявлений Discord. Это позволит другим серверам Discord получать наши объявления.

Документация уроков,学到的教训不需要翻译,因为它是中文内容,保持原文即可。

Если вы найдете что-либо неправильным или незавершенным в этом документе во время подготовки выпуска, важно вернуть эту информацию сообществу. Детали должны быть добавлены в этот документ, а высокие уровни могут потребовать обновлений в политике выпуска.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-JanusGraph_old1.git
git@api.gitlife.ru:oschina-mirror/mirrors-JanusGraph_old1.git
oschina-mirror
mirrors-JanusGraph_old1
mirrors-JanusGraph_old1
master