Pruebe proyectos de GitHub con GitHub Actions y Testing Farm

Cada proyecto en GitHub destinado a Red Hat Enterprise Linux (RHEL), Fedora Linux, CentOS 7, CentOS Stream 8 y CentOS Stream 9 deben probarse antes de sincronizar sus cambios en un repositorio de distribución de Git (dist-git). Es importante detectar los problemas antes de entregar el software a los clientes y ayudar a los equipos de control de calidad a detectar los errores. debemos implementar Desplazamiento a la izquierda en nuestro proceso de flujos de trabajo.

Introducción

Granja de prueba es un sistema de pruebas de código abierto que se ofrece como un servicio. La idea de Testing Farm es similar a Compilación de granjas , pero con un enfoque en la ejecución de pruebas automatizadas. Su misión es brindar un servicio confiable y escalable para la ejecución de pruebas automatizadas de varios usuarios, tales como Fedora CI, Packit y otros. El punto de entrada para nuestros usuarios es un API basada en HTTP . Testing Farm se escala en muchas infraestructuras, incluidas las nubes públicas y privadas. Usando el compuesto testing-farm-as-a-github-action actualmente disponible en GitHub Marketplace, le permite probar su proyecto de manera eficiente.

GitHub Marketplace y ventajas de publicar acciones aquí

Mercado GitHub es un lugar donde los desarrolladores pueden encontrar, entre otros elementos, todas las GitHub Actions publicadas, en un solo lugar. Cualquiera está autorizado a publicar una acción en GitHub Marketplace.

Una acción, para ser publicada, debe residir en su propio repositorio de GitHub.

La ventaja de publicar una acción en Marketplace, además de publicarla en un repositorio público de GitHub, es la visibilidad de las acciones escritas para otros usuarios.

Prueba de granja como acción de GitHub

Testing-farm-as-a-github-action abreviado TFaGA, es una acción de GitHub compuesta, destinada a ser utilizada desde otras acciones de GitHub.

Su objetivo principal es programar pruebas en la infraestructura de Testing Farm provocadas por un evento que ocurre en un repositorio de GitHub y, opcionalmente, mostrar los resultados de las pruebas ejecutadas.

NOTA: Es importante que el código probado sea revisado por un Persona autorizada como un dueño o miembro para evitar ejecutar código malicioso en la infraestructura de Testing Farm.

Se puede ejecutar cualquier tipo de prueba que se pueda describir con un plan TMT. El entorno de prueba se puede elegir entre Fedora Linux, CentOS, incluido CentOS Stream o RHEL. Necesitamos probar nuestro software lo antes posible.

Para quién está destinado testing-farm-as-github-action

El TFaGA puede ser utilizado por desarrolladores o mantenedores, en general, cualquier persona que quiera probar un repositorio ubicado en GitHub. Cualquiera que desee agregar software a las distribuciones mencionadas anteriormente debe garantizar que entrega un software funcional. A los clientes les encanta el software que funciona y está probado.

Entradas de acción

La entrada TFaGA es altamente configurable, pero solo hay dos entradas que no tienen valores predeterminados y que el usuario debe insertar. Estos son:

  • api_key: clave API para Testing Farm
  • git_url – URL a un repositorio con planes TMT

NOTA: Puede obtener Clave API de [email protected] Para más información ver el sitio de incorporación .

el minimo example de usar TFaGA (en un repositorio ya verificado) se verá similar a esto:

                      - name: Schedule tests Testing Farm
  uses: sclorg/[email protected]
  with:
      api_key: ${{ secrets.TF_API_KEY }}
      git_url: <URL to a TMT plan>

                    

Todos los demás valores de entrada son opcionales y tienen valores predeterminados preasignados.

Las entradas se dividen en grupos lógicos:

  • Granja de prueba
    • contiene opciones para configurar la propia granja de pruebas. Los elementos configurables pueden ser la clave API, la URL de la API de TF y el alcance del TF utilizado: público o privado.
  • metadatos TMT
    • contiene opciones para configurar la especificación TMT, como la URL del repositorio de Git con el plan TMT o la expresión regular para seleccionar el plan.
  • Entorno de prueba
    • contiene opciones para configurar el sistema operativo y la arquitectura y dónde se ejecutaría la prueba. Las distribuciones de Linux compatibles son Fedora Linux y CentOS, incluidos CentOS Stream, RHEL7 y RHEL8. Además, los secretos y las variables de entorno necesarias para la ejecución de la prueba se pueden especificar con opciones pertenecientes a este grupo.
  • Artefactos de prueba
  • Misceláneas
    • contiene configuraciones para varias opciones misceláneas, como si el PR debe actualizarse con los resultados de la prueba después de terminar el trabajo o qué debe escribirse en él.

Puede encontrar más información sobre las entradas en el LÉAME.md .

Salidas de acción

La acción TFaGA proporciona, como salida, una ID_solicitud y un solicitud_url de una solicitud de granja de prueba programada. Combinatorio solicitud_url y ID_solicitud juntos, el usuario obtiene una dirección URL que apunta a un artefacto de registro. Los registros de prueba y los resultados de la prueba se recopilan aquí en forma de texto de Testing Farm.

Opcionalmente, si el evento que desencadena la acción Testing Farm está relacionado con una solicitud de extracción, el usuario puede habilitar una actualización de estado de la solicitud de extracción. Habilitar esta opción garantiza que los resultados de las pruebas se resuman en forma gráfica directamente en el PR. Un example de la salida gráfica se muestra en la siguiente imagen.

Estado de las pruebas entregadas por Testing Farm como GitHub Action

¿Cómo usar una granja de pruebas como acción de GitHub en su repositorio?

Como TFaGA es una acción compuesta de GitHub, se supone que está incrustada en otras acciones de GitHub especificadas por el usuario.

Ejemplo de acción, desencadenada al comentar un PR

La siguiente example demuestra cómo se puede usar TFaGA en un proyecto de GitHub. El conjunto example puede encontrarse en repositorios sclorg .

NOTA: Es importante verificar el contenido del PR probado para que no se ejecute ningún código malicioso en la infraestructura de Testing Farm. Por esta razón, solo los miembros y propietarios del repositorio deberían poder ejecutar las pruebas, como se muestra en la example abajo.

La prueba en este específico example se activaría con un comentario creado en un PR por un miembro o propietario de un repositorio específico. El comentario tiene que incluir la cadena ‘[test]’.

                      name: upstream tests at Testing Farm
on:
	issue_comment:
	  types:
Created
jobs:
	build:
	  name: A job run on explicit user request
	  run-ons: 
                      
                        ubuntu
                      
                      -20.04

  if: |
    github.event.issue.pull_request
    && contains(github.event.comment.body, '[test]')
    && contains(fromJson('["OWNER", "MEMBER"]'),        github.event.comment.author_association)

                    

Repositorio de clonación y pago en una rama de solicitud de extracción adecuada:

                      - name: Checkout repo
  uses: actions/[email protected]

                    

A continuación, se muestran las pruebas programadas en Testing Farm por GitHub Action. Esto pasará a testing-farm-as-a-github-action una api_key, almacenada en los secretos del repositorio, la URL de un plan TMT y las variables de entorno que requieren las pruebas activadas. El sistema operativo de prueba elegido es CentOS7.

                      - name: Schedule tests on external Testing Farm
  uses: sclorg/[email protected]
  with:
      api_key: ${{ secrets.TF_API_KEY }}
      git_url: "https://github.com/sclorg/sclorg-testing-farm"
      variables: "REPO_URL=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY;REPO_NAME=$GITHUB_REPOSITORY;PR_NUMBER=${{ github.event.issue.number }};OS=centos7;TEST_NAME=test"
      compose: "CentOS-7"

                    

Los resultados de la prueba se muestran, de forma predeterminada, como un estado directamente dentro de una solicitud de extracción con la API de estados de GitHub .

Resumen

¿Por qué usar esta acción de GitHub en tu proyecto? Eliminará la preocupación por probar el entorno de la infraestructura, escribir muchos flujos de trabajo nuevos de GitHub Action y manejar los estados de las solicitudes de incorporación de cambios.

Cuando usa TFaGA, obtiene toda la infraestructura de prueba de acuerdo con sus necesidades simplemente proporcionando un plan de prueba TMT y una clave API. El conjunto de entornos de prueba disponibles se compone de muchas arquitecturas de procesador y distribuciones de Linux.

Sus pruebas se desencadenan simplemente por una acción que especifique en el archivo de configuración. Los registros y los resultados de la ejecución de la prueba se recopilan, informan y almacenan en forma de texto y, opcionalmente, también se muestran de forma transparente en el estado de solicitud de extracción.

Su acción es solo obtener la ‘api_key’ del equipo de Testing Farm y escribir un flujo de trabajo simple de GitHub para usar nuestra acción de GitHub.

¡Así que probemos los cambios del proyecto lo antes posible antes de que el proyecto se envíe a los clientes!

Related Posts