Compartir a través de


Compilación y prueba de aplicaciones de Ruby

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Aprenda a usar Azure Pipelines para compilar, probar e implementar automáticamente las aplicaciones de Ruby.

Prerrequisitos

Ruby está preinstalado en agentes hospedados por Microsoft para Linux, macOS y Windows. No tiene que configurar nada más para compilar proyectos de Ruby. Para ver qué versiones de Ruby están preinstaladas, consulte Software.

Producto Requisitos
Azure DevOps - Un proyecto de Azure DevOps .
- Tener la capacidad de ejecutar canalizaciones en agentes hospedados por Microsoft. Puede comprar un trabajo paralelo o solicitar un nivel gratis.
- Conocimientos básicos de YAML y Azure Pipelines. Para obtener más información, consulte Creación de su primera canalización.
- Permisos:
     - Para crear una canalización: debe estar en el grupo de usuarios Colaboradores y el grupo de usuarios debe tener el permiso Crear canalización de compilación configurado en Permitir. Los miembros del grupo Administradores de proyectos pueden administrar canalizaciones.
    - Para crear conexiones de servicio: debe tener el rol Administrador o Creador para las conexiones de servicio.
GitHub - Una cuenta de GitHub .
- Una conexión de servicio de GitHub para autorizar Azure Pipelines.
Producto Requisitos
Azure DevOps - Un proyecto de Azure DevOps .
- Un agente autohospedado con Ruby instalado. Para crear uno, consulte Agentes autohospedados.
- Conocimientos básicos de YAML y Azure Pipelines. Para obtener más información, consulte Creación de su primera canalización.
- Permisos:
    - Para crear una canalización: debe estar en el grupo de usuarios Colaboradores y el grupo de usuarios debe tener el permiso Crear canalización de compilación configurado en Permitir. Los miembros del grupo Administradores de proyectos pueden administrar canalizaciones.
    - Para crear conexiones de servicio: debe tener el rol Administrador o Creador para las conexiones de servicio.
GitHub - Una cuenta de GitHub .
- Una conexión de servicio de GitHub para autorizar Azure Pipelines.

Creación de Azure Pipelines

Siga estos pasos para configurar una canalización para una aplicación de Ruby.

  1. Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.

  2. Vaya a Canalizaciones>Nueva canalización.

  3. Seleccione GitHub como la ubicación del código fuente.

    Puede que se le redirija a GitHub para iniciar sesión. Si es así, escriba sus credenciales de GitHub.

  4. Seleccione el repositorio de ejemplo de Ruby.

  5. Seleccione la plantilla de la Ruby canalización.

  6. Se genera un archivo YAML. Seleccione Guardar y ejecutar>Confirmar directamente en la rama principal y, a continuación, seleccione Guardar y ejecutar de nuevo.

  7. Espere a que se complete la ejecución de la canalización. Normalmente, esto tarda entre 2 y 5 minutos en un proyecto básico de Ruby.

Ahora tiene un archivo YAML en funcionamiento (azure-pipelines.yml) en el repositorio que se ejecuta automáticamente cuando se insertan cambios en el código. Este archivo se puede personalizar para satisfacer las necesidades específicas del proyecto.

Sugerencia

Para realizar cambios en el archivo YAML descrito en este artículo, seleccione la canalización en la página Canalizaciones y, a continuación, seleccione Editar para el azure-pipelines.yml archivo.

Entorno de compilación

Puede usar Azure Pipelines para compilar los proyectos de Ruby sin necesidad de configurar ninguna infraestructura propia. Ruby está preinstalado en agentes hospedados por Microsoft en Azure Pipelines. Puede usar agentes de Linux, macOS o Windows para ejecutar las compilaciones.

Para conocer las versiones exactas de Ruby que están preinstaladas, consulte Agentes hospedados por Microsoft. Para instalar una versión específica de Ruby en agentes hospedados por Microsoft, agregue la tarea Usar versión de Ruby al principio de la canalización.

Uso de una versión específica de Ruby

Agregue la tarea Use Ruby Version para establecer la versión de Ruby en la canalización. Este fragmento de código agrega Ruby 3.4 o posterior a la ruta de acceso y establece las tareas de canalización posteriores para usarlas. Para ver qué versiones de Ruby están preinstaladas en agentes hospedados por Microsoft, consulte Software.

pool:
  vmImage: 'ubuntu-latest' 

steps:
- task: UseRubyVersion@0 
  inputs:
    versionSpec: '>= 3.4' 
    addToPath: true
  displayName: 'Set Ruby version'

Instalación de Rails

Para instalar Rails, agregue el siguiente fragmento de código al azure-pipelines.yml archivo.

- script: gem install rails && rails -v
  displayName: 'Install Rails'

Instalación de dependencias

Use Bundler para instalar las dependencias de gemas del proyecto. Bundler lee tu Gemfile y tu Gemfile.lock para garantizar que las mismas versiones de gemas estén instaladas en la canalización como en tu entorno de desarrollo.

- script: |
    gem install bundler
    bundle install --retry=3 --jobs=4
  displayName: 'Install dependencies with Bundler'

La --retry=3 marca reintenta las instalaciones con errores hasta 3 veces y --jobs=4å permite la instalación paralela de gemas para compilaciones más rápidas.

Ejecutar Rake

Para ejecutar Rake en el contexto de la agrupación actual (como se define en el archivo Gemfile), agregue el siguiente fragmento de código al azure-pipelines.yml archivo.

- script: bundle exec rake
  displayName: 'bundle exec rake'

Publicación de resultados de pruebas

El código de ejemplo incluye pruebas unitarias escritas con RSpec. Cuando Rake se ejecuta en el paso anterior, ejecuta las pruebas de RSpec. El RSpec RakeTask del archivo Rakefile está configurado para generar resultados de estilo JUnit mediante RspecJUnitFormatter.

Agregue la tarea Publicar resultados de pruebas para publicar resultados de pruebas de estilo JUnit en el servidor.

- task: PublishTestResults@2
  condition: succeededOrFailed()
  inputs:
    testResultsFiles: '**/test-*.xml'
    testRunTitle: 'Ruby tests'

Publicar resultados de cobertura de código

El código de ejemplo usa SimpleCov para recopilar datos de cobertura de código cuando se ejecutan pruebas unitarias. SimpleCov está configurado para usar formateadores de informes Cobertura y HTML.

Agregue la tarea Publicar Resultados de Cobertura de Código para publicar los resultados en el servidor. Esto le permite ver las métricas de cobertura en el resumen de compilación y descargar informes HTML para su posterior análisis.

- task: PublishCodeCoverageResults@2
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
    reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage'
    failIfCoverageEmpty: true 

Flujo de trabajo de ejemplo completo

Este es un archivo completo azure-pipelines.yml que muestra todos los conceptos descritos en este artículo. Esta canalización:

  • Desencadenadores en los cambios en la rama principal
  • Usa Ubuntu como entorno de compilación
  • Configura la versión de Ruby especificada.
  • Instala las dependencias del proyecto.
  • Ejecuta pruebas mediante Rake
  • Publica resultados de pruebas y métricas de cobertura de código
# Ruby pipeline example
trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

variables:
  rubyVersion: '3.4.7'

steps:
- task: UseRubyVersion@0
  inputs:
    versionSpec: '$(rubyVersion)'
    addToPath: true
  displayName: 'Set Ruby version to $(rubyVersion)'

- script: |
    gem install bundler
    bundle install --retry=3 --jobs=4
  displayName: 'Install dependencies'

- script: bundle exec rake
  displayName: 'Run tests with Rake'

- task: PublishTestResults@2
  condition: succeededOrFailed()
  inputs:
    testResultsFiles: '**/test-*.xml'
    testRunTitle: 'Ruby tests'
  displayName: 'Publish test results'

- task: PublishCodeCoverageResults@2
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
    reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage'
    failIfCoverageEmpty: true
  displayName: 'Publish code coverage'