Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
Azure Pipelines を使用して、Ruby アプリケーションを自動的にビルド、テスト、デプロイする方法について説明します。
[前提条件]
Ruby は、Linux、macOS、および Windows 用の Microsoft がホストするエージェント にプレインストールされています。 Ruby プロジェクトをビルドするために、これ以上何も設定する必要はありません。 プレインストールされている Ruby バージョンを確認するには、「 ソフトウェア」を参照してください。
| 製品 | 必要条件 |
|---|---|
| Azure DevOps | - Azure DevOps プロジェクト。 - Microsoft がホストするエージェントでパイプラインを実行する機能。 並列ジョブを購入することも、Free レベルを要求することもできます。 - YAML と Azure Pipelines に関する基本的な知識。 詳細については、「最初のパイプラインの作成」を参照してください。 - アクセス許可: - パイプラインを作成するには、 共同作成者 グループに含まれている必要があり、グループには [ ビルド パイプラインの作成 ] アクセス許可が [許可] に設定されている必要があります。 プロジェクト管理者グループのメンバーは、パイプラインを管理できます。 - サービス接続を作成するには、サービス接続の管理者ロールまたは作成者ロールが必要です。 |
| GitHub | - GitHub アカウント。 - Azure Pipelines を承認するための GitHub サービス接続 。 |
| 製品 | 必要条件 |
|---|---|
| Azure DevOps | - Azure DevOps プロジェクト。 - Ruby がインストールされているセルフホステッド エージェント。 作成する方法については、「セルフホステッド エージェント」を参照してください。 - YAML と Azure Pipelines に関する基本的な知識。 詳細については、「最初のパイプラインの作成」を参照してください。 - アクセス許可: - パイプラインを作成するには、 共同作成者 グループに含まれている必要があり、グループには [ ビルド パイプラインの作成 ] アクセス許可が [許可] に設定されている必要があります。 プロジェクト管理者グループのメンバーは、パイプラインを管理できます。 - サービス接続を作成するには、サービス接続の管理者ロールまたは作成者ロールが必要です。 |
| GitHub | - GitHub アカウント。 - Azure Pipelines を承認するための GitHub サービス接続 。 |
Azure Pipelines を作成する
Ruby アプリのパイプラインを設定するには、次の手順に従います。
Azure DevOps 組織にサインインし、プロジェクトに移動します。
パイプライン>新しいパイプラインに移動します。
ソース コードの場所として [GitHub] を選択します。
サインインするために GitHub にリダイレクトされる場合があります。 その場合は、GitHub の資格情報を入力します。
Ruby サンプル リポジトリを選択します。
パイプラインの
Rubyテンプレートを選択します。YAML ファイルが生成されます。 [保存して実行] を選択>メイン ブランチに直接コミットし、[保存して再実行] を選択します。
パイプラインの実行が完了するまで待ちます。 これは通常、基本的な Ruby プロジェクトでは 2 ~ 5 分かかります。
これで、コードの変更をプッシュするときに自動的に実行される 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 3.4 以降をパスに追加し、それを使用するように後続のパイプライン タスクを設定します。 Microsoft がホストするエージェントにプレインストールされている Ruby バージョンを確認するには、「 ソフトウェア」を参照してください。
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UseRubyVersion@0
inputs:
versionSpec: '>= 3.4'
addToPath: true
displayName: 'Set Ruby version'
Rails をインストールする
Rails をインストールするには、次のスニペットを azure-pipelines.yml ファイルに追加します。
- script: gem install rails && rails -v
displayName: 'Install Rails'
依存関係のインストール
Bundler を使用して、プロジェクトの gem 依存関係をインストールします。 Bundler は、 Gemfile と Gemfile.lock を読み取り、開発環境と同じ gem バージョンがパイプラインにインストールされるようにします。
- script: |
gem install bundler
bundle install --retry=3 --jobs=4
displayName: 'Install dependencies with Bundler'
--retry=3 フラグは、失敗したインストールを最大 3 回再試行し、--jobs=4å を使用すると、gem を並列インストールしてビルドを高速化できます。
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@2
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage'
failIfCoverageEmpty: true
パイプラインの完全な例
この記事で説明するすべての概念を示す完全な azure-pipelines.yml ファイルを次に示します。 このパイプライン:
- メイン ブランチでの変更に対するトリガー
- ビルド環境として Ubuntu を使用する
- 指定した Ruby バージョンを設定します
- プロジェクトの依存関係をインストールします
- Rake を使用してテストを実行する
- テスト結果とコード カバレッジ メトリックを発行する
# 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'