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 アプリの場合は、イメージをビルドしてコンテナー レジストリにプッシュすることもできます。