Ramificar Fedora IoT

Branched is the name given to a version of Fedora that has "branched" from the rolling Rawhide tree and will become the next stable Fedora release. This document will detail the steps for branching Fedora IoT from Rawhide.

To complete these steps and open any pull requests you need a valid Fedora account.

Trabajar con el repositorio pungi-iot

Clone y bifurque el repositorio Fedora IoT Pungi para realizar cambios a los archivos de configuración utilizados para construir Fedora IoT.

git clone https://pagure.io/fedora-iot/pungi-iot.git

Cree la nueva rama y envíela al repositorio upstream. Cambie $release a la nueva rama numérica de Fedora. Esto no se hace como un PR y debe ser empujado directamente al repositorio upstream, para ello necesitará permisos de commit.

git checkout main; git pull; git checkout -b f$release; git push --set-upstream upstream f$release

Ejemplo, utilizado para Fedora 40:

git checkout main; git pull; git checkout -b f40 ; git push --set-upstream upstream f40

Ocultación (principal).

En su bifurcación local, cree una nueva rama para los cambios en Rawhide (main).

Update the signing key for Rawhide from the main Fedora Pungi repo. As of Fedora 40 branching you can find this here.

Copie la clave utilizada en Rawhide en fedora-iot.conf, sustituyendo la clave anterior.

Ejemplo:

sed -i 's|$OLD_SIGNING_KEY|$NEW_RAWHIDE_KEY|g' fedora-iot.conf

Ejemplo utilizado en la ramificación de Fedora 40:

sed -i 's|a15B79cc|e99d6ad1]|g' fedora-iot.conf

Main will remain as "Rawhide", but we need to update the release to the next version of Fedora.

sed -i 's|40|41|g' fedora-iot.conf nightly.sh sync-release.sh twoweek-nightly.sh

Confirme los cambios:

git commit -a -m "F-41: Update for branching" -s

Revisa los cambios y, si estás satisfecho, envíalos a tu fork y abre un pull request para que otros lo revisen. Example PR

Branched (la próxima versión estable de Fedora)

Ahora necesitamos trabajar en la nueva versión, o rama de Fedora que creamos al principio, y especificar el número de versión (por ejemplo '40') en lugar de 'Rawhide'.

Ejemplo:

git checkout f$release

Utilizado en la ramificación de Fedora 40:

git checkout f40

En su bifurcación local, cree una rama nueva para los cambios.

Update symlinks to ensure we are using the latest completed upstream compose in Fedora

sed -i 's|latest-Fedora-Rawhide|latest-Fedora-40|g' fedora-iot.conf

Actualice las URL de Fedora con 'branched':

sed -i 's|compose/rawhide|compose/branched|g' fedora-iot.conf

Actualiza los repos de iot para usar 'devel' en lugar de 'rawhide':

sed -i 's|fedora/rawhide/|fedora/devel/|g' fedora-iot.conf

Actualiza las instancias de 'main' a la versión:

sed -i 's|main|f40|g' fedora-iot.conf
Tendrá que cambiar manualmente los repos comps y bootc base-images a main. No hay ramas en comps o base-images. (Los archivos comps son archivos XML utilizados por varias herramientas de Fedora para realizar la agrupación de paquetes en grupos funcionales. Para más información, visite haga clic aquí.

Actualiza la 'global_ksurl':

sed -i 's|=HEAD|=origin/f40|g' fedora-iot.conf

Actualice la ubicación en la que se copia el comunicado durante el proceso de composición, y alojado para su descarga y rsync’ing a las distintas réplicas de Fedora. Esta ruta se crea cuando se ejecuta twoweek-nightly.sh y puede encontrarse en Proyecto Fedora master mirror.

sed -i 's|/pub/alt/iot/rawhide/|/pub/alt/iot/branched/|g' twoweek-nightly.sh

Confirme los cambios:

git commit -a -m "F-40: Actualización para la ramificación" -s

Revisa los cambios y, si estás satisfecho, envíalos a tu fork y abre un pull request para que otros lo revisen. Ejemplo PR

Trabajar con el repositorio OStree

Este repositorio se utiliza para configurar el ostree de Fedora IoT e incluye los paquetes, servicios y varias configuraciones incluyendo selinux y unified-core.

Clonar y bifurcar el upstream del repo ostree:

git clone https://pagure.io/fedora-iot/ostree.git

Create the new branch and push to the upstream repository. Change $release to the new numeric branch of Fedora:

git checkout main; git pull; git checkout -b f$release; git push --set-upstream upstream f$release

Example, used for Fedora 40 (the next stable release of Fedora):

git checkout main; git pull; git checkout -b f40 ; git push --set-upstream upstream f40

Cuero crudo (proincipal)

Crea una rama en tu bifurcación local y realiza los siguientes cambios para 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: Actualizar el cuero crudo para F-41" -s

Revisa los cambios y, si estás satisfecho, envíalos a tu fork y abre un pull request para que otros lo revisen.

Branched (la próxima versión estable de Fedora)

Revisa la rama recién creada para la próxima versión estable de Fedora y crea una rama en tu fork para el PR.

Cambia las urls de development/rawhide a development/40:

sed -i 's|development/rawhide|development/40|g' config.ini

Actualizar instancias de rawhide, sustituyendo por 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

Escribe el mensaje de confirmación:

git commit -a -m "Configuración para ramificaciones de F-40" -s

Revisa los cambios y, si estás satisfecho, envíalos a tu fork y abre un pull request para que otros lo revisen.

Comprobaciones adicionales

  • compruebe que la etiqueta Fedora IoT se ha creado en koji. Para verificarlo necesitará instalar el paquete koji en Fedora

    • Verifica que las etiquetas están listadas para las nuevas ramas koji list-tags|grep f*-iot

  • asegúrese de que la clave de firma se ha actualizado en Ansible (busque la parte iot)

  • Asegúrese de actualizar Ansible y crear una tarea cron para la versión de desarrollo (devel). Puedes encontrar cron jobs aquí.

  • Crea un árbol de archivo en los repositorios base-images y fedora-iot-bootc apuntando al lanzamiento de la nuevamente ramificada. Esto puede estar obsoleto con el mover a Konflux. Un ejemplo del árbol de archivo utilizado para composiciones de Fedora 41 pueden ser encontradas en aquí. Composiciones ramificadas utilizan fedora-devel.

Usted tendrá que crear el archivo, ya que se elimina en Final. Ejemplo para devel-iot (IMPORTANTE - Asegúrese de actualizar el ramificado utilizado, en el ejemplo es f41):

# composición de desarrollo IoT
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

Añádelo a la sección IoT de main.yml que se encuentra en here:

# poner cron job para 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')