Ветвление Fedora IoT
Branched — это имя, данное версии Fedora, которая «ответвилась» от развивающегося дерева Rawhide и станет следующим стабильным выпуском Fedora. В этом документе подробно описаны шаги по ветвлению Fedora IoT из Rawhide.
Чтобы выполнить эти шаги и открыть любые pull request-ы, вам нужна действующая учётная запись Fedora.
Работа с репозиторием pungi-iot
Клонируйте и создайте форк репозитория Fedora IoT Pungi, чтобы внести изменения в файлы конфигурации, используемые для сборки Fedora IoT.
git clone https://pagure.io/fedora-iot/pungi-iot.git
Создайте новую ветку и отправьте её в вышестоящий репозиторий. Замените $release на новый числовой номер ветки Fedora. Это не делается как PR и должно быть отправлено напрямую в вышестоящий репозиторий; для этого вам понадобятся права на коммит.
git checkout main; git pull; git checkout -b f$release; git push --set-upstream upstream f$release
Пример, использованный для Fedora 40:
git checkout main; git pull; git checkout -b f40 ; git push --set-upstream upstream f40
Rawhide (main)
В вашем локальном форке создайте новую ветку для изменений в Rawhide (main).
Обновите ключ подписи для Rawhide из основного репозитория Fedora Pungi. Начиная с ветвления Fedora 40, вы можете найти его здесь.
Скопируйте ключ, используемый в Rawhide, в fedora-iot.conf, заменив предыдущий ключ.
Пример:
sed -i 's|$OLD_SIGNING_KEY|$NEW_RAWHIDE_KEY|g' fedora-iot.conf
Пример, использованный при ветвлении Fedora 40:
sed -i 's|a15B79cc|e99d6ad1]|g' fedora-iot.conf
Main останется как «Rawhide», но нам нужно обновить выпуск до следующей версии Fedora.
sed -i 's|40|41|g' fedora-iot.conf nightly.sh sync-release.sh twoweek-nightly.sh
Зафиксируйте изменения:
git commit -a -m "F-41: Update for branching" -s
Просмотрите изменения и, если они вас устраивают, отправьте их в ваш форк и откройте pull request для проверки другими. Пример PR
Branched (следующий стабильный выпуск Fedora)
Теперь нам нужно поработать над новым выпуском, или веткой Fedora, которую мы создали в начале, и указать номер выпуска (например, «40») вместо «Rawhide».
Пример:
git checkout f$release
Использовано при ветвлении Fedora 40:
git checkout f40
В вашем локальном форке создайте новую ветку для изменений.
Обновите символические ссылки, чтобы убедиться, что мы используем последний завершённый вышестоящий compose в Fedora
sed -i 's|latest-Fedora-Rawhide|latest-Fedora-40|g' fedora-iot.conf
Обновите URL-адреса Fedora на «branched»:
sed -i 's|compose/rawhide|compose/branched|g' fedora-iot.conf
Обновите репозитории iot, чтобы использовать «devel» вместо «rawhide»:
sed -i 's|fedora/rawhide/|fedora/devel/|g' fedora-iot.conf
Обновите вхождения «main» на номер выпуска:
sed -i 's|main|f40|g' fedora-iot.conf
Вам потребуется вручную вернуть репозитории comps и bootc base-images обратно на main. В comps или base-images нет веток. (Файлы comps — это XML-файлы, используемые различными инструментами Fedora для группировки пакетов в функциональные группы. Для получения дополнительной информации посетите нажмите здесь.
|
Обновите «global_ksurl»:
sed -i 's|=HEAD|=origin/f40|g' fedora-iot.conf
Обновите расположение, куда копируется выпуск во время процесса compose и где он размещается для загрузки и rsync-синхронизации на различные зеркала Fedora. Этот путь создаётся при выполнении twoweek-nightly.sh и может быть найден на главном зеркале проекта Fedora.
sed -i 's|/pub/alt/iot/rawhide/|/pub/alt/iot/branched/|g' twoweek-nightly.sh
Зафиксируйте изменения:
git commit -a -m "F-40: Update for branching" -s
Просмотрите изменения и, если они вас устраивают, отправьте их в ваш форк и откройте pull request для проверки другими. Пример PR
Работа с репозиторием OStree
Этот репозиторий используется для настройки ostree Fedora IoT и включает пакеты, службы и различные параметры, включая selinux и unified-core.
Клонируйте и создайте форк вышестоящего репозитория ostree:
git clone https://pagure.io/fedora-iot/ostree.git
Создайте новую ветку и отправьте её в вышестоящий репозиторий. Замените $release на новый числовой номер ветки Fedora:
git checkout main; git pull; git checkout -b f$release; git push --set-upstream upstream f$release
Пример, использованный для Fedora 40 (следующего стабильного выпуска Fedora):
git checkout main; git pull; git checkout -b f40 ; git push --set-upstream upstream f40
Rawhide (main)
Создайте ветку в вашем локальном форке и внесите следующие изменения для Rawhide:
sed -i 's|40|41|g' config.ini fedora-40.repo fedora-iot-base.yaml fedora-iot.yaml mv fedora-40.repo fedora-41.repo git add fedora-41.repo git commit -a -m "IoT: Update rawhide for F-41" -s
Просмотрите изменения и, если они вас устраивают, отправьте их в ваш форк и откройте pull request для проверки другими.
Branched (следующий стабильный выпуск Fedora)
Переключитесь на недавно созданную ветку для следующего стабильного выпуска Fedora и создайте ветку в вашем форке для PR.
Измените URL-адреса с development/rawhide на development/40:
sed -i 's|development/rawhide|development/40|g' config.ini
Обновите вхождения rawhide, заменив их на devel:
sed -i 's|rawhide|devel|g' config.ini fedora-40.repo fedora-iot-base.yaml fedora-iot.yaml fedora-iot-updates-stable.yaml fedora-iot-updates-testing.yaml
Напишите сообщение коммита:
git commit -a -m "Setup for F-40 branched" -s
Просмотрите изменения и, если они вас устраивают, отправьте их в ваш форк и откройте pull request для проверки другими.
Дополнительные проверки
-
проверьте, что тег Fedora IoT был создан в koji. Для проверки вам потребуется установить пакет
kojiв Fedora-
Убедитесь, что теги перечислены для новых веток:
koji list-tags|grep f*-iot
-
-
убедитесь, что ключ подписи был обновлён в Ansible (ищите часть, относящуюся к iot)
-
Начиная с Fedora 40, вы можете найти соответствующий раздел здесь.
-
Обязательно обновите Ansible и создайте задание cron для выпуска разработки (devel). Задания cron можно найти здесь.
-
Создайте treefile в репозиториях
base-imagesиfedora-iot-bootc, указывающий на недавно ответвлённый выпуск. Это может устареть с переходом на Konflux. Пример treefile, использованного для compose Fedora 41, можно найти здесь. В branched compose используетсяfedora-devel.
Вам потребуется создать файл, так как он удаляется на этапе Final. Пример для devel-iot (ВАЖНО — обязательно обновите используемую ветку, в примере это f41):
# IoT devel compose MAILTO=releng-cron@lists.fedoraproject.org 00 14 * * * root touch /tmp/fedora-compose-devel-iot && TMPDIR=`mktemp -d /tmp/devel.XXXXXX` && cd $TMPDIR && git clone https://pagure.io/fedora-iot/pungi-iot.git && cd pungi-iot && git checkout f41 && ./twoweek-nightly.sh RC-$(date "+\%Y\%m\%d").0 && rm /tmp/fedora-compose-devel-iot
Добавьте его в раздел IoT файла main.yml, найденного здесь:
# put cron job in for IoT devel compose
- name: IoT devel compose cron
ansible.builtin.copy:
src: devel-iot
dest: /etc/cron.d/devel-iot
mode: "644"
when: inventory_hostname.startswith('compose-iot01.iad2')
Want to help? Learn how to contribute to Fedora Docs ›