Packit – embalaje en Fedora con el mínimo esfuerzo

que es packit

Empácalo (https://packit.dev/) es una herramienta CLI que lo ayuda a mantener automáticamente sus proyectos upstream en el Fedora Sistema operativo. ¿Pero qué significa realmente?

Como desarrollador, es posible que desee actualizar su paquete en Fedora. Si lo ha hecho en el pasado, sabe que no es una tarea fácil. Si no me ha dejado reiterar: no es tarea fácil.

Y aquí es exactamente donde packit puede ayudar: una vez que tenga su paquete en Fedorapuede mantener su archivo SPEC en sentido ascendente y, con solo un archivo de configuración adicional, packit lo ayudará a actualizar su paquete en Fedora cuando actualiza su código fuente en sentido ascendente.

Además, packit puede sincronizar los cambios posteriores a un archivo SPEC en el repositorio anterior. Esto podría ser útil si el archivo SPEC de su paquete se cambia en Fedora repositorios y le gustaría sincronizarlo con su proyecto upstream.

Packit también proporciona una forma de crear un paquete SRPM basado en una verificación de repositorio ascendente, que se puede usar para crear paquetes RPM en COPR.

Por último, pero no menos importante, packit proporciona un comando de estado. Este comando proporciona información sobre repositorios ascendentes y descendentes, como solicitudes de extracción, liberación y más.

Packit proporciona también otros dos comandos: build y create-update.

El comando packit build realiza una construcción de producción de su proyecto en Fedora sistema de construcción – koji. Puede Fedora versión contra la que desea construir usando una opción –dist-git-branch. El comando packit create-updates crea una actualización de Bodhi para la rama específica usando la opción —dist-git-branch.

Instalación

Puedes instalar packit en Fedora usando dnf:

sudo dnf install -y packit

Configuración

Para el caso de uso de demostración, he seleccionado el repositorio ascendente de colin (https://github.com/user-cont/colin). Colin es una herramienta para verificar reglas genéricas y mejores prácticas para contenedores, dockerfiles e imágenes de contenedores.

En primer lugar, clonar colin repositorio git:

$ git clone https://github.com/user-cont/colin.git
$ cd colin

Packit espera ejecutarse en la raíz de su repositorio git.

Empácalo (https://github.com/packit-service/packit/) necesita información sobre su proyecto, que debe almacenarse en el repositorio ascendente en el archivo .packit.yaml (https://github.com/packit-service/packit/blob/master/docs/configuration.md#projects-configuration-file).

Consulte el archivo de configuración de colin’s packit:

$ cat .packit.yaml
specfile_path: colin.spec
synced_files:
 -.packit.yaml
 - colin.spec
upstream_project_name: colin
downstream_package_name: colin

¿Qué significan los valores?

  • specfile_path: una ruta relativa a un archivo de especificaciones dentro del repositorio ascendente (obligatorio)
  • synced_files: una lista de rutas relativas a archivos en el repositorio ascendente que deben copiarse en dist-git durante una actualización
  • upstream_project_name: nombre del repositorio upstream (por ejemplo, en PyPI); esto se usa en la sección %prep
  • downstream_package_name – nombre del paquete en Fedora (obligatorio)

Para obtener más información, consulte la documentación de configuración de packit (https://github.com/packit-service/packit/blob/master/docs/configuration.md)

¿Qué puede hacer Packit?

El requisito previo para usar packit es que se encuentre en un directorio de trabajo de un git checkout de su proyecto ascendente.

Antes de ejecutar cualquier comando de packit, debe realizar varias acciones. Estas acciones son obligatorias para la presentación de un RP en los repositorios aguas arriba o aguas abajo y para tener acceso a los Fedora repositorios dist-git.

Exportar token de GitHub tomado de https://github.com/settings/tokens:

$ export GITHUB_TOKEN=<YOUR_TOKEN>

Obtenga su boleto Kerberos necesario para Fedora Sistema de Cuentas (FAS) :

$ kinit <yourname>@FEDORAPROJECT.ORG

Exporte sus claves API de Pagure tomadas de https://src.fedoraproject.org/settings#nav-api-tab:

$ export PAGURE_USER_TOKEN=<PAGURE_USER_TOKEN>

Packit también necesita un token de bifurcación para crear una solicitud de extracción. La ficha se toma de https://src.fedoraproject.org/fork/YOU/rpms/PACKAGE/settings#apikeys-tab

Hazlo ejecutando:

$ export PAGURE_FORK_TOKEN=<PAGURE_FORK_TOKEN>

O almacene estas fichas en el ~/.config/paquete.yaml expediente:

$ cat ~/.config/packit.yaml

github_token: <GITHUB_TOKEN>
pagure_user_token: <PAGURE_USER_TOKEN>
pagure_fork_token: <PAGURE_FORK_TOKEN>

Proponer una nueva versión upstream en Fedora

El comando para este primer caso de uso se llama proponer-actualizar (https://github.com/jpopelka/packit/blob/master/docs/propose_update.md). El comando crea una nueva solicitud de extracción en Fedora dist-git repositorio utilizando una versión ascendente seleccionada o la última.

$ packit propose-update

INFO: Running 'anitya' versioneer
Version in upstream registries is '0.3.1'.
Version in spec file is '0.3.0'.
WARNING  Version in spec file is outdated
Picking version of the latest release from the upstream registry.
Checking out upstream version 0.3.1
Using 'master' dist-git branch
Copying /home/vagrant/colin/colin.spec to /tmp/tmptfwr123c/colin.spec.
Archive colin-0.3.0.tar.gz found in lookaside cache (skipping upload).
INFO: Downloading file from URL https://files.pythonhosted.org/packages/source/c/colin/colin-0.3.0.tar.gz
100%[=============================>]     3.18M  eta 00:00:00
Downloaded archive: '/tmp/tmptfwr123c/colin-0.3.0.tar.gz'
About to upload to lookaside cache
won't be doing kinit, no credentials provided
PR created: https://src.fedoraproject.org/rpms/colin/pull-request/14

Una vez que finaliza el comando, puede ver un PR en el Fedora Instancia de Pagure que se basa en la última versión ascendente. Una vez que lo revise, se puede fusionar.

Sincronice los cambios posteriores con el repositorio anterior

Otro caso de uso es sincronizar los cambios posteriores con el repositorio del proyecto anterior.

El comando para este propósito se llama sincronizar desde abajo (https://github.com/jpopelka/packit/blob/master/docs/sync-from-downstream.md). Los archivos sincronizados en el repositorio ascendente se mencionan en el archivo de configuración packit.yaml bajo el valor synced_files.

$ packit sync-from-downstream

upstream active branch master
using "master" dist-git branch
Copying /tmp/tmplvxqtvbb/colin.spec to /home/vagrant/colin/colin.spec.
Creating remote fork-ssh with URL [email protected]:phracek/colin.git.
Pushing to remote fork-ssh using branch master-downstream-sync.
PR created: https://github.com/user-cont/colin/pull/229

Tan pronto como finaliza packit, puede ver los últimos cambios tomados de la Fedora repositorio dist-git en el repositorio ascendente. Esto puede ser útil, por ejemplo, cuando Release Engineering realiza reconstrucciones masivas y actualizan su archivo SPEC en el Fedora repositorio dist-git.

Obtenga el estado de su proyecto upstream

Si es un desarrollador, es posible que desee obtener toda la información sobre los últimos lanzamientos, etiquetas, solicitudes de incorporación de cambios, etc. desde el repositorio ascendente y descendente. Packit proporciona la estado comando para este fin.

$ packit status
Downstream PRs:
 ID  Title                             URL
----  --------------------------------  ---------------------------------------------------------
 14  Update to upstream release 0.3.1  https://src.fedoraproject.org//rpms/colin/pull-request/14
 12  Upstream pr: 226                  https://src.fedoraproject.org//rpms/colin/pull-request/12
 11  Upstream pr: 226                  https://src.fedoraproject.org//rpms/colin/pull-request/11
  8 Upstream pr: 226                  https://src.fedoraproject.org//rpms/colin/pull-request/8

Dist-git versions:
f27: 0.2.0
f28: 0.2.0
f29: 0.2.0
f30: 0.2.0
master: 0.2.0

GitHub upstream releases:
0.3.1
0.3.0
0.2.1
0.2.0
0.1.0

Latest builds:
f27: colin-0.2.0-1.fc27
f28: colin-0.3.1-1.fc28
f29: colin-0.3.1-1.fc29
f30: colin-0.3.1-2.fc30

Latest bodhi updates:
Update                Karma  status
------------------  ------- --------
colin-0.3.1-1.fc29        1  stable
colin-0.3.1-1.fc28        1  stable
colin-0.3.0-2.fc28        0  obsolete

Crear un SRPM

El último caso de uso de packit es generar un paquete SRPM basado en una verificación de git de su proyecto ascendente. El comando packit para la generación de SRPM es spm.

$ packit srpm
Version in spec file is '0.3.1.37.g00bb80e'.
SRPM: /home/phracek/work/colin/colin-0.3.1.37.g00bb80e-1.fc29.src.rpm

Packit como servicio

En el verano, a la gente detrás de packit le gustaría presentar packit como un servicio (https://github.com/packit-service/packit-servicio). En este caso, la aplicación packit GitHub se instalará en el repositorio ascendente y packit realizará todas las acciones automáticamente, según los eventos que reciba de GitHub o fedmsg.

Related Posts