生成和测试 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

若要安装 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

若要在 Gemfile) 中定义的当前捆绑包 (的上下文中执行 Rake,请将以下代码片段添加到文件中 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 应用,还可以生成映像并将其推送到容器注册表