Partager via


Créer et tester des applications Ruby

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

Découvrez comment utiliser Azure Pipelines pour générer, tester et déployer automatiquement vos applications Ruby.

Prerequisites

Ruby est préinstallé sur les agents hébergés par Microsoft pour Linux, macOS et Windows. Vous n’avez pas besoin de faire plus de configuration pour construire des projets Ruby. Pour voir quelles versions ruby sont préinstallées, consultez Software.

Produit Exigences
Azure DevOps - Un projet Azure DevOps .
- Possibilité d’exécuter des pipelines sur des agents hébergés par Microsoft. Vous pouvez acheter un travail parallèle ou demander un niveau gratuit.
- Connaissance de base de YAML et d’Azure Pipelines. Pour plus d’informations, consultez Créer votre premier pipeline.
- Autorisations:
     - Pour créer un pipeline : vous devez être dans le groupe Contributeurs et le groupe doit avoir l'autorisation Créer un pipeline de construction définie sur Autoriser. Les membres du groupe Administrateurs de projet peuvent gérer les pipelines.
    - Pour créer des connexions de service : vous devez avoir le rôle Administrateur ou Créateur pour les connexions de service.
GitHub - Un compte GitHub .
- Connexion de service GitHub pour autoriser Azure Pipelines.
Produit Exigences
Azure DevOps - Un projet Azure DevOps .
- Agent auto-hébergé avec Ruby installé. Pour en créer un, consultez les agents auto-hébergés.
- Connaissance de base de YAML et d’Azure Pipelines. Pour plus d’informations, consultez Créer votre premier pipeline.
- Autorisations:
    - Pour créer un pipeline : vous devez être dans le groupe Contributeurs et le groupe doit avoir l'autorisation Créer un pipeline de construction définie sur Autoriser. Les membres du groupe Administrateurs de projet peuvent gérer les pipelines.
    - Pour créer des connexions de service : vous devez avoir le rôle Administrateur ou Créateur pour les connexions de service.
GitHub - Un compte GitHub .
- Connexion de service GitHub pour autoriser Azure Pipelines.

Créer Azure Pipelines

Suivez ces étapes pour configurer un pipeline pour une application Ruby.

  1. Connectez-vous à votre organisation Azure DevOps et accédez à votre projet.

  2. Accédez à Pipelines>New pipeline.

  3. Sélectionnez GitHub comme emplacement de votre code source.

    Vous serez peut-être redirigé vers GitHub pour vous connecter. Si c’est le cas, entrez vos informations d’identification GitHub.

  4. Sélectionnez votre exemple de référentiel Ruby.

  5. Sélectionnez le Ruby modèle de votre pipeline.

  6. Un fichier YAML est généré. Sélectionnez Enregistrer et exécuter>Commit directement dans la branche principale, puis sélectionnez Enregistrer et réexécuter .

  7. Attendez la fin de l’exécution du pipeline. Cela prend généralement 2 à 5 minutes pour un projet Ruby de base.

Vous disposez maintenant d’un fichier YAML opérationnel (azure-pipelines.yml) dans votre référentiel qui s’exécute automatiquement lorsque vous envoyez des modifications de code. Ce fichier peut être personnalisé pour répondre aux besoins spécifiques de votre projet.

Conseil / Astuce

Pour apporter des modifications au fichier YAML décrit dans cet article, sélectionnez le pipeline dans la page Pipelines , puis sélectionnez Modifier pour le azure-pipelines.yml fichier.

Environnement de génération

Vous pouvez utiliser Azure Pipelines pour générer vos projets Ruby sans avoir besoin de configurer une infrastructure de votre choix. Ruby est préinstallé sur les agents hébergés par Microsoft dans Azure Pipelines. Vous pouvez utiliser des agents Linux, macOS ou Windows pour exécuter vos builds.

Pour connaître les versions exactes de Ruby préinstallées, reportez-vous aux agents hébergés par Microsoft. Pour installer une version spécifique de Ruby sur des agents hébergés par Microsoft, ajoutez la tâche Utiliser la version de Ruby au début de votre pipeline.

Utiliser une version spécifique de Ruby

Ajoutez la tâche Utiliser la version de Ruby pour définir la version Ruby dans votre pipeline. Cet extrait de code ajoute Ruby 3.4 ou version ultérieure au chemin d’accès et définit les tâches de pipeline suivantes pour l’utiliser. Pour voir quelles versions Ruby sont préinstallées sur les agents hébergés par Microsoft, consultez Software.

pool:
  vmImage: 'ubuntu-latest' 

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

Installer Rails

Pour installer Rails, ajoutez l’extrait de code suivant à votre azure-pipelines.yml fichier.

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

Installer des dépendances

Utilisez Bundler pour installer les dépendances de gemme de votre projet. Bundler lit vos Gemfile et Gemfile.lock pour s'assurer que les mêmes versions de gems sont installées dans le pipeline que dans votre environnement de développement.

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

L’indicateur --retry=3 retente les installations ayant échoué jusqu’à 3 fois, et --jobs=4å permet l’installation parallèle de gemmes pour des builds plus rapides.

Exécuter Rake

Pour exécuter Rake dans le contexte du bundle actuel (tel que défini dans votre Gemfile), ajoutez l’extrait de code suivant à votre azure-pipelines.yml fichier.

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

Publier les résultats des tests

L’exemple de code inclut des tests unitaires écrits avec RSpec. Lorsque Rake s’exécute dans l’étape précédente, il exécute les tests RSpec. Le RSpec RakeTask dans le Rakefile est configuré pour produire des résultats de style JUnit à l’aide de RspecJUnitFormatter.

Ajoutez la tâche Publier les résultats des tests pour publier les résultats de test de style JUnit sur le serveur.

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

Publier les résultats de la couverture du code

L’exemple de code utilise SimpleCov pour collecter les données de couverture du code lors de l’exécution de tests unitaires. SimpleCov est configuré pour utiliser les formateurs de rapports Cobertura et HTML.

Ajoutez la tâche Publier les résultats de couverture du code pour publier les résultats de couverture du code sur le serveur. Cela vous permet d’afficher les métriques de couverture dans le résumé de build et de télécharger des rapports HTML pour une analyse plus approfondie.

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

Exemple de pipeline complet

Voici un fichier complet azure-pipelines.yml qui illustre tous les concepts abordés dans cet article. Ce pipeline :

  • Déclencheurs d'événements liés aux modifications de la branche principale
  • Utilise Ubuntu comme environnement de build
  • Configure la version de Ruby spécifiée
  • Installe les dépendances de projet
  • Exécute des tests à l’aide de Rake
  • Publie les résultats des tests et les métriques de couverture du code
# 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'