Рабочий процесс выпуска релиза

Выпуск новой версии Elgg.

Это процесс, которому следует команда ядра для выпуска нового релиза Elgg. Мы опубликовали эту информацию в духе открытости и для упрощения адаптации новых членов команды.

Требования

  • SSH-доступ к elgg.org

  • Доступ на коммит в http://github.com/Elgg/Elgg

  • Административный доступ к https://elgg.org/

  • Доступ к аккаунту Twitter

  • Установленные Node.js и Yarn

  • Установленный Sphinx (easy_install sphinx && easy_install sphinx-intl)

  • Установленный клиент Transifex (easy_install transifex-client)

  • Аккаунт Transifex с доступом к проекту Elgg

  • Административный доступ к Read The Docs

Слияние коммитов из нижних веток

Определите ветку LTS. Нам нужно слить любые новые коммиты оттуда вверх через другие ветки.

Для каждой ветки

Переключитесь на ветку, убедитесь, что она актуальна, и создайте новую рабочую ветку со слиянием. Например, здесь мы сливаем коммиты 1.12 в 2.0:

git checkout 2.0
git pull
git checkout -b merge112
git merge 1.12

Примечание

Если уже актуально (нет коммитов для слияния), мы можем остановиться здесь для этой ветки.

Если есть конфликты, разрешите их, выполните git add . и git merge.

Создайте запрос на слияние для ветки и дождитесь автоматических тестов и одобрения другими разработчиками.

git push -u my_fork merge112

После слияния мы повторяем процесс для слияния коммитов 2.0 в 2.1.

Подготовка к первому новому стабильному минорному/мажорному релизу

  • Обновите Политика поддержки, включив дату нового минорного/мажорного релиза и заполнив пропуски для предыдущего релиза.

  • Обновите бейджи в файле README.md, чтобы они указывали на правильные номера нового релиза.

Подготовка к новому мажорному релизу

  • Измените конфигурацию Transifex для отправки переводов в другой проект

Подготовьте релиз

Создайте запрос на слияние с обновлениями переводов

Установите необходимые компоненты:

easy_install transifex-client
easy_install sphinx
easy_install sphinx-intl

Примечание

В Windows вам нужно запускать эти команды в консоли с правами администратора

Запустите скрипт languages.php. Например, для получения переводов:

php .scripts/languages.php 3.x

Создайте запрос на слияние с новыми переводами и добейтесь его слияния перед следующим шагом.

Затем вручную перейдите на страницу /admin/site_settings и убедитесь, что она загружается. Если нет, возможно, файл языка из Transifex содержит синтаксическую ошибку PHP. Исправьте ошибку и дополните ваш коммит новым файлом:

# only necessary if you fixed a language file
git add .
git commit --amend

Создайте запрос на слияние для релиза

Обновите локальную копию вашего git-репозитория.

Слейте последние коммиты из самой нижней поддерживаемой ветки.

Перейдите по адресу https://github.com/Elgg/Elgg/compare/<new>...<old> и отправьте запрос на слияние, если есть что-то, что нужно слить.

Примечание

В Windows вам нужно запускать эти команды в консоли с правами администратора

Запустите скрипт release.php. Например, для выпуска версии 1.12.5:

git checkout 1.12
php .scripts/release.php 1.12.5

Это создаёт ветку release-1.12.5 в вашем локальном репозитории.

Затем отправьте запрос на слияние через GitHub для автоматического тестирования и одобрения другим разработчиком:

git push your-remote-fork release-1.12.5

Пометьте релиз тегом

После одобрения и слияния создайте релиз на GitHub:

  • Перейдите в раздел релизов

  • Нажмите „Создать черновик нового релиза“

  • Введите версию

  • Выберите правильную ветку (например, 1.12 для релиза 1.12.x, 2.3 для релиза 2.3.x и т.д.)

  • Установите заголовок релиза как „Elgg {version}“

  • Вставьте часть CHANGELOG.md, относящуюся к этому релизу, в описание

Примечание

GitHub настроен на отслеживание создания нового релиза для автоматического создания ZIP-архива релиза Elgg. После создания релиза подождите несколько минут, и ZIP-архив должен быть добавлен к релизу.

Некоторые заключительные административные действия

  • Отметьте вехи релиза GitHub как завершённые

  • Перенесите нерешённые тикеты в выпущенных вехах на более поздние вехи

Дополнительные действия для первого нового минорного/мажорного релиза

  • Создайте новую ветку на GitHub (например, 3.3)

  • Установите новую ветку как ветку по умолчанию (необязательно, но рекомендуется для стабильных релизов)

  • Настройте Read The Docs для сборки новой ветки (не нового тега)

  • Проверьте стартовый проект Elgg на предмет потенциальных изменений требований/конфигурации в composer.json

  • Добавьте новую минорную/мажорную версию в репозиторий Elgg/community_plugins, чтобы разработчики могли загружать плагины для нового релиза

  • Обновите конфигурацию сборки для справочника Elgg (на веб-сервере Elgg.org)

# in the file /root/elgg-scripts/cron/make_reference
# set the main build branch to the correct branch
# make sure if you change the main build branch to add the previous branch to the other branches to build
# the new configuration will be applied by the daily cron

Дополнительное действие для первого нового мажорного релиза

  • На GitHub добавьте правило защиты ветки (например, 4.*)

Обновите веб-сайт

Обновите страницу загрузки elgg.org

  • Клонируйте https://github.com/Elgg/community

  • Добавьте новую версию в classes/Elgg/Releases.php

  • Закоммитьте и отправьте изменения

  • Скачайте ZIP-архив релиза с GitHub

  • Загрузите ZIP-архив на веб-сервер elgg.org

sudo mv ~/elgg-x.y.z.zip /var/www/www.elgg.org/download
sudo chown deploy:deploy /var/www/www.elgg.org/download/elgg-x.y.z.zip

Обновите elgg.org

  • Клонируйте https://github.com/Elgg/www.elgg.org

  • (необязательно) Измените требуемую версию Elgg в composer.json

  • Обновите вендоров

composer update
  • Закоммитьте и отправьте изменения

  • Выполните pull на боевой сайт

sudo -su deploy
cd /var/www/www.elgg.org
git pull
composer install --no-dev
  • Перейдите в панель администратора сообщества

  • Очистите кеш APC

  • Запустите обновление

Сделайте объявление

Это должно быть самым последним, что вы делаете.

  1. Откройте https://github.com/Elgg/Elgg/blob/<tag>/CHANGELOG.md и скопируйте содержимое для этой версии

  2. Войдите на https://elgg.org/blog и создайте новый блог со сводкой

  3. Скопируйте содержимое CHANGELOG, очистите форматирование и вручную удалите якоря SVG

  4. Добавьте теги release и elgg2.x, где x — любая выпускаемая ветка

  5. Опубликуйте твит из аккаунта Twitter elgg