Condividi tramite


Compilare e testare le app Ruby

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

Informazioni su come usare Azure Pipelines per compilare, testare e distribuire automaticamente le applicazioni Ruby.

Prerequisiti

Ruby è preinstallato in agenti ospitati da Microsoft per Linux, macOS e Windows. Non è necessario configurare altro per compilare progetti Ruby. Per vedere quali versioni di Ruby sono preinstallate, vedere Software.

Prodotto Requisiti
Azure DevOps - Un progetto Azure DevOps.
Possibilità di eseguire pipeline su agenti ospitati da Microsoft. È possibile acquistare un incarico parallelo oppure richiedere un piano gratuito.
- Conoscenza di base di YAML e Azure Pipelines. Per altre informazioni, vedere Creare la prima pipeline.
Autorizzazioni - :
     - Per creare una pipeline, è necessario trovarsi nel gruppo Collaboratori e il gruppo deve avere l'autorizzazione Crea pipeline di compilazione impostata su Consenti. I membri del gruppo Project Administrators possono gestire le pipeline.
    - Per creare connessioni al servizio: è necessario avere il ruolo Amministratore o Creator per le connessioni al servizio.
GitHub - Un account GitHub .
- Una connessione al servizio GitHub per autorizzare Azure Pipelines.
Prodotto Requisiti
Azure DevOps - Un progetto Azure DevOps.
- Un agente autogestito con Ruby installato. Per crearne uno, vedere la sezione su Agenti self-hosted.
- Conoscenza di base di YAML e Azure Pipelines. Per altre informazioni, vedere Creare la prima pipeline.
Autorizzazioni - :
    - Per creare una pipeline, è necessario trovarsi nel gruppo Collaboratori e il gruppo deve avere l'autorizzazione Crea pipeline di compilazione impostata su Consenti. I membri del gruppo Project Administrators possono gestire le pipeline.
    - Per creare connessioni al servizio: è necessario avere il ruolo Amministratore o Creator per le connessioni al servizio.
GitHub - Un account GitHub .
- Una connessione al servizio GitHub per autorizzare Azure Pipelines.

Creare le Azure Pipelines

Seguire questa procedura per configurare una pipeline per un'app Ruby.

  1. Accedere all'organizzazione di Azure DevOps e passare al progetto.

  2. Passare a Pipeline>Nuova pipeline.

  3. Selezionare GitHub come percorso del codice sorgente.

    Si potrebbe essere reindirizzati a GitHub per l'accesso. In questo caso, immettere le credenziali di GitHub.

  4. Seleziona il repository di esempio Ruby.

  5. Seleziona il modello Ruby per la tua pipeline.

  6. Viene generato un file YAML. Selezionare Salva ed esegui>Commit direttamente nel ramo principale e quindi selezionare Salva ed esegui di nuovo.

  7. Attendere il completamento dell'esecuzione della pipeline. Questo richiede in genere 2-5 minuti per un progetto Ruby di base.

È ora disponibile un file YAML funzionante (azure-pipelines.yml) nel repository che viene eseguito automaticamente quando si esegue il push delle modifiche del codice. Questo file può essere personalizzato per soddisfare le esigenze specifiche del progetto.

Suggerimento

Per apportare modifiche al file YAML descritto in questo articolo, selezionare la pipeline nella pagina Pipeline e quindi selezionare Modifica per il azure-pipelines.yml file.

Ambiente di sviluppo

È possibile usare Azure Pipelines per compilare i progetti Ruby senza dover configurare un'infrastruttura personalizzata. Ruby è preinstallato negli agenti ospitati da Microsoft in Azure Pipelines. È possibile usare agenti Linux, macOS o Windows per eseguire le compilazioni.

Per le versioni esatte di Ruby preinstallate, fare riferimento agli agenti ospitati da Microsoft. Per installare una versione specifica di Ruby negli agenti ospitati da Microsoft, aggiungere l'attività Usa versione Ruby all'inizio della pipeline.

Usare una versione specifica di Ruby

Aggiungere l'attività Usa versione Ruby per impostare la versione ruby nella pipeline. Questo frammento di codice aggiunge Ruby 3.4 o versione successiva al percorso e imposta le attività della pipeline successive per usarlo. Per vedere quali versioni di Ruby sono preinstallate in agenti ospitati da Microsoft, vedere Software.

pool:
  vmImage: 'ubuntu-latest' 

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

Installare Rails

Per installare Rails, aggiungere il frammento di codice seguente al azure-pipelines.yml file.

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

Installa le dipendenze

Usare Bundler per installare le dipendenze delle gemme del progetto. Bundler legge Gemfile e Gemfile.lock per assicurarsi che le stesse versioni delle gemme siano installate sia nella pipeline che nell'ambiente di sviluppo.

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

Il --retry=3 flag ritenta le installazioni non riuscite fino a 3 volte e --jobs=4å consente l'installazione parallela di gemme per compilazioni più veloci.

Eseguire Rake

Per eseguire Rake nel contesto del bundle corrente (come definito nel file Gemfile), aggiungere il frammento di codice seguente al azure-pipelines.yml file.

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

Pubblica risultati dei test

Il codice di esempio include unit test scritti con RSpec. Quando Rake viene eseguito nel passaggio precedente, esegue i test RSpec. RSpec RakeTask in Rakefile è configurato per produrre risultati in stile JUnit usando RspecJUnitFormatter.

Aggiungere l'attività Pubblica risultati test per pubblicare i risultati dei test in stile JUnit nel server.

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

Pubblicare i risultati della copertura del codice

Il codice di esempio usa SimpleCov per raccogliere i dati di code coverage quando vengono eseguiti unit test. SimpleCov è configurato per l'uso dei formattatori di report Cobertura e HTML.

Aggiungere l'attività Pubblica risultati code coverage per pubblicare i risultati del code coverage nel server. In questo modo è possibile visualizzare le metriche di copertura nel riepilogo della compilazione e scaricare i report HTML per ulteriori analisi.

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

Pipeline di esempio completa

Ecco un file completo azure-pipelines.yml che illustra tutti i concetti trattati in questo articolo. Questa pipeline:

  • Attivazioni sulle modifiche al ramo principale
  • Usa Ubuntu come ambiente di compilazione
  • Configura la versione di Ruby specificata
  • Installa le dipendenze del progetto
  • Esegue test con Rake
  • Pubblica i risultati dei test e le metriche di copertura del codice
# 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'