Ruby アプリをビルドしてテストする
Azure DevOps Services
この記事では、Ruby プロジェクトを自動的にビルドする方法について説明します。
Azure Pipelines アプリを作成する
Ruby アプリのパイプラインを設定するには、次の手順を実行します。
Azure DevOps 組織にサインインし、プロジェクトに移動します。
[パイプライン]>[新しいパイプライン] を選択します。
ソース コードの場所として [GitHub] を選択します。
サインインするために GitHub にリダイレクトされる場合があります。 その場合は、GitHub の資格情報を入力します。
Ruby サンプル リポジトリを選択します。
パイプラインの
Ruby
テンプレートを選択します。YAML ファイルが生成されます。 [保存および実行]>[メイン ブランチに直接コミット] の順に選択し、[保存および実行] をもう一度選択します。
実行が終了するまで待ちます。
リポジトリで 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 アプリの場合は、イメージをビルドしてコンテナー レジストリにプッシュすることもできます。