Рабочий процесс выпуска релиза
Выпуск новой версии 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
Запустите обновление
Сделайте объявление
Это должно быть самым последним, что вы делаете.
Откройте
https://github.com/Elgg/Elgg/blob/<tag>/CHANGELOG.mdи скопируйте содержимое для этой версииВойдите на https://elgg.org/blog и создайте новый блог со сводкой
Скопируйте содержимое CHANGELOG, очистите форматирование и вручную удалите якоря SVG
Добавьте теги
releaseиelgg2.x, где x — любая выпускаемая веткаОпубликуйте твит из аккаунта Twitter elgg