Guía de Inicio Rápido

¿Tienes ganas de probar cómo funcionan las pruebas de IC de Fedora? ¿Quieres una experiencia práctica rápida sin tener que leer demasiada documentación? Esta breve introducción para impacientes te mostrará los pasos básicos para ejecutar las pruebas existentes y te proporcionará enlaces útiles a recursos donde puedes obtener más información.

Primeros Pasos

Instala los siguientes paquetes esenciales en tu sistema (considera utilizar una máquina virtual para experimentar de forma segura):

sudo dnf install fedpkg standard-test-roles

Utiliza fedpkg para clonar el repositorio Git del paquete. Consulta la Guía de Mantenimiento de Paquetes para obtener más información sobre la herramienta.

fedpkg clone -a bash
git checkout -b f33 remotes/origin/f33

Las pruebas están definidas de acuerdo con la Interfaz de Prueba Estándar en el directorio test:

cd bash/tests/

La cobertura de prueba que se ejecutará junto con el conjunto básico de metadatos se describe en el libro de jugadas tests.yml. Utiliza ansible-playbook para ejecutar todos los test disponibles para el entorno clásico en el host local (necesita ser ejecutado como root):

ansible-playbook --tags=classic tests.yml

Desde la salida de ansible puedes ver directamente un sumario de todo lo del testing. Si ve failed=0 al final de la bitácora entonces fueron aprobadas todas las pruebas:

localhost: ok=29 changed=11 unreachable=0 failed=0

Para obtener resultados de pruebas más detallados, consulte test.log y otros archivos en el directorio artifacts:

vim artifacts/test.log

¡Listo! Acabas de ejecutar la cobertura de pruebas del paquete Bash :)

Sujetos de Prueba

Para ejecutar pruebas con diferentes sujetos de prueba, necesitamos preparar el entorno. Almacenaremos los resultados detallados de las pruebas en /tmp/artifacts, usaremos el inventario dinámico según lo definido en Standard Test Roles y descargaremos la imagen más reciente de Atomic Host.

export TEST_ARTIFACTS=/tmp/artifacts
export ANSIBLE_INVENTORY=/usr/share/ansible/inventory
curl -Lo /tmp/atomic.qcow2 https://getfedora.org/atomic_qcow2_latest

Ahora intentemos ejecutar pruebas contra todos los sujetos de prueba admitidos.

Clásico

Ejecute las pruebas frente a rpms clásico instalado en el sistema:

export TEST_SUBJECTS=''
ansible-playbook --tags=classic tests.yml

Consulte Clásico para obtener documentación detallada.

Contenedor

Para probar contenedores se necesita una dependencia adicional:

sudo dnf install standard-test-roles-inventory-docker

Ejecuta las pruebas en un contenedor Docker:

export TEST_SUBJECTS=docker:docker.io/library/fedora:latest
ansible-playbook --tags=container tests.yml

Consulte Contenedor para obtener documentación detallada.

Atomic

Ejecute las pruebas frente al Atomic Host:

export TEST_SUBJECTS=/tmp/atomic.qcow2
ansible-playbook --tags=atomic tests.yml

Consulte Atomic para documentos detallados.

Consejos

Depurar

¿Le gustaría investigar por qué una prueba ha fallado? Habilite depuración para conectar fácilmente al Atomic o Container ejecutándose para investigar:

export TEST_DEBUG=1
ansible-playbook --tags=atomic tests.yml

Consulte Depuración para detalles sobre la depuración.

Ignorar

Utilice .gitignore para especificar archivos que Git ignoraría. Tales archivos son creados durante la ejecución de las pruebas. Cree un archivo test/.gitgnore con el contenido siguiente:

# Ignora las pruebas que ejecuta/artefactos.
artifacts/**
**/*.retry

Contribuir

¿Te interesa contribuir con una nueva cobertura de pruebas? ¡Bienvenido! Como has visto, ejecutar una prueba es bastante sencillo. Escribir una prueba nueva o encapsular una existente también es bastante sencillo. Aquí tienes algunas recomendaciones para crear una solicitud de extracción.

Bifurcar

A menos que sea el mantenedor del paquete, que tiene acceso directo a las confirmaciones, cree una bifurcación del repositorio git del paquete usando el botón Bifurcar en el interfaz de web Pagure y añade su bifurcación privada como un remoto nuevo. Crea una rama para tus tests nuevos. Por ejemplo:

git remote add fork ssh://psss@pkgs.fedoraproject.org/forks/psss/rpms/bash.git
git checkout -b tests

Si no empaqueta Fedora, use el comando fedpkg para clonar su bifurcación y configurar el repositorio Git para poder enviar paquetes. Consulte Solicitudes de extracción para obtener información más detallada.

fedpkg clone -a forks/psss/rpms/bash
git checkout -b tests

Añadir

Cree una nueva cobertura de pruebas en el directorio tests, actualice el archivo tests.yml según corresponda o cree uno nuevo. Ejecute las pruebas y verifique que sean estables y funcionen correctamente en todos los entornos compatibles. Añada los archivos a Git, confirme y envíe:

git add tests.yml test1 test2 test3
git commit -m "Agregar pruebas de CI mediante la interfaz de prueba estándar"
git push fork tests:tests

Es una buena idea incluir más detalles y enlaces en el mensaje de confirmación para que sea más fácil revisar la solicitud de extracción:

Habilitar pruebas de IC mediante la interfaz de prueba estándar

Se agregó un conjunto inicial de pruebas de funcionalidad
básica para bash, según la Interfaz de Pruebas Estándar [1].
Consulte la Guía de Inicio Rápido [2] para obtener una breve
introducción sobre cómo ejecutar estas pruebas y el portal de IC
de Fedora [3] para obtener información más detallada y enlaces.

[1] https://docs.fedoraproject.org/es/ci/standard-test-interface
[2] https://docs.fedoraproject.org/es/ci/quick-start-guide
[3] https://docs.fedoraproject.org/es/ci

Crea una solicitud nueva de extracción desde tu rama tests contra la rama rawhide en la interfaz web Pagure. Puedes incluir información adicional sobre las pruebas, como:

Hay tres pruebas disponibles: smoke y func se han probado en
todos los entornos (clásico, contenedor, atómico); login solo es
relevante para el clásico (debido a una dependencia faltante).
Fusione las pruebas en todas las ramas compatibles actualmente.

Resultado

Una vez creada la solicitud de extracción, Conducto IC la detectará y ejecutará pruebas. Una vez finalizada la ejecución de la prueba, verá los resultados en la página de la solicitud de extracción. Consulte la página Conducto para ver la lista de conductos activos y ejemplos de resultados.

Portón

Actualmente, la función de control del paquete según los resultados de las pruebas es opcional. Para habilitar esta función en su componente, cree un archivo gating.yaml en la raíz del repositorio git de su componente. Consulte Gating para más detalles.