建置及測試 Ruby 應用程式

Azure DevOps Services

本文說明如何自動建置 Ruby 專案。

建立 Azure Pipelines

請執行下列步驟來設定 Ruby 應用程式的管線。

  1. 登入您的 Azure DevOps 組織並前往您的專案。

  2. 選取[管線>][新增管線]。

  3. 選取 [GitHub ] 作為原始程式碼的位置。

    系統可能會將您重新導向至 GitHub 以進行登入。 若是如此,請輸入您的 GitHub 認證。

  4. 選取您的 Ruby 範例存放庫。

  5. Ruby選取管線的範本。

  6. 會產生 YAML 檔案。 選取 [儲存並直接執行>認可至主要分支],然後選擇 [儲存並再次執行]。

  7. 等待執行完成。

您的存放庫中有運作中的 YAML 檔案 (azure-pipelines.yml) ,可供您自訂。

提示

若要變更本文所述的 YAML 檔案,請在 [ 管線 ] 頁面中選取管線,然後 編輯azure-pipelines.yml 檔案。

建置環境

您可以使用 Azure Pipelines 來建置 Ruby 專案,而不需要設定您自己的任何基礎結構。 Ruby 已預先安裝在 Azure Pipelines 中的 Microsoft 裝載代理程式 上。 您可以使用 Linux、macOS 或 Windows 代理程式來執行組建。

如需預先安裝的 Ruby 確切版本,請參閱 Microsoft 裝載的代理程式。 若要在 Microsoft 裝載的代理程式上安裝特定版本的 Ruby,請將 [使用 Ruby 版本 ] 工作新增至管線的開頭。

使用特定的 Ruby 版本

新增 [使用 Ruby 版本 ] 工作,以設定管線中使用的 Ruby 版本。 此程式碼片段會將 Ruby 2.4 或更新版本新增至路徑,並設定要使用的後續管線工作。

# https://learn.microsoft.com/azure/devops/pipelines/ecosystems/ruby
pool:
  vmImage: 'ubuntu-latest' # other options: 'macOS-latest', 'windows-latest'

steps:
- task: UseRubyVersion@0
  inputs:
    versionSpec: '>= 2.5'
    addToPath: true

安裝滑軌

若要安裝 Rails,請將下列程式碼片段新增至您的 azure-pipelines.yml 檔案。

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

安裝相依性

若要使用 Bundler 來安裝相依性,請將下列程式碼片段新增至您的 azure-pipelines.yml 檔案。

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

執行 Rake

若要在目前套件組合的內容中執行 Rake, (如 Gemfile) 中所定義,請將下列程式碼片段新增至檔案 azure-pipelines.yml

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

發佈測試結果

範例程式碼包含使用 RSpec撰寫的單元測試。 當上一個步驟執行 Rake 時,它會執行 RSpec 測試。 Rakefile 中的 RSpec RakeTask 已設定為使用 RspecJUnitFormatter 產生 JUnit 樣式結果。

新增 [發佈測試結果] 工作,將 JUnit 樣式測試結果發佈至伺服器。 您可以取得豐富的測試報告體驗,可用來針對任何失敗的測試進行疑難排解,以及測試計時分析。

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

發佈程式碼涵蓋範圍結果

範例程式碼會使用 SimpleCov 在單元測試執行時收集程式碼涵蓋範圍資料。 SimpleCov 已設定為使用 Cobertura 和 HTML 報表格式器。

新增 [發佈程式碼涵蓋範圍結果] 工作,將程式碼涵蓋範圍結果發佈至伺服器。 當您這麼做時,可以在組建摘要中看到涵蓋範圍計量,而 HTML 報表則可下載以供進一步分析。

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

建置映射並推送至容器登錄

針對 Ruby 應用程式,您也可以 建置映射 ,並將其 推送至容器登錄