最初のパイプラインの作成
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
これは、Azure Pipelines を使用して Git リポジトリからサンプル アプリケーションを構築するためのステップ バイ ステップ ガイドです。 このガイドでは、YAML パイプライン エディターで構成した YAML パイプラインを使います。 代わりにクラシック パイプラインを使う場合は、「クラシック パイプラインを定義する」を参照してください。 TFVC の使用に関するガイダンスについては、「TFVC リポジトリのビルド」を参照してください。
前提条件 - Azure DevOps
以下のものがそろっていることを確認してください。
リポジトリを作成できる GitHub アカウント。 無料で作成できます。
Azure DevOps 組織。 無料で作成できます。 チームに既にある場合は、使用する Azure DevOps プロジェクトの管理者であることを確認します。
Microsoft によってホストされるエージェントでパイプラインを実行する機能。 Microsoft ホステッド エージェントを使用するには、Azure DevOps 組織が Microsoft ホステッド並列ジョブにアクセスできる必要があります。 並列ジョブを購入するか、無料の許可を要求することができます。
最初のパイプラインの作成
Java サンプル コードを入手する
はじめに、次のリポジトリを自分の GitHub アカウントにフォークします。
https://github.com/MicrosoftDocs/pipelines-java
最初の Java パイプラインを作成する
Azure DevOps 組織にサインインし、プロジェクトに移動します。
[パイプライン] に移動し、最初のパイプラインを作成する場合は [新しいパイプライン] または [[パイプラインの作成] を選択します。
最初に、ソース コードの場所として GitHub を選択し、ウィザードの手順を実行します。
サインインするために GitHub にリダイレクトされる場合があります。 その場合は、GitHub の資格情報を入力します。
リポジトリの一覧が表示されたら、目的のリポジトリを選択します。
Azure Pipelines アプリをインストールするために、GitHub にリダイレクトされる場合があります。 その場合は、[承認してインストール] を選択します。
Azure Pipelines によってリポジトリが分析され、Maven パイプライン テンプレートが推奨されます。
新しいパイプラインが表示されたら、YAML に目を通し、その動作を確認します。 準備ができたら、[保存および実行] を選択します。
新しい
azure-pipelines.yml
ファイルをリポジトリにコミットするように求められます。 メッセージを確認したら、[保存および実行] をもう一度選びます。パイプラインの動作を観察する場合は、ビルド ジョブを選びます。
今作成して実行したパイプラインは、コードが Maven テンプレートに適しているように見えるため、自動的に作成されました。
これで、リポジトリで YAML パイプライン (
azure-pipelines.yml
) が稼働し、カスタマイズできるようになりました。パイプラインを変更する準備ができたら、[パイプライン] ページでそのパイプラインを選び、
azure-pipelines.yml
ファイルを編集します。
詳細については、パイプラインでの Java の使用に関する記事を参照してください。
パイプラインの表示と管理
左側のメニューから [パイプライン] を選んでパイプラインのランディング ページに移動すると、パイプラインを表示し、管理することができます。
パイプラインのランディング ページからは、パイプラインとパイプライン実行の表示、パイプラインの作成とインポート、セキュリティの管理、パイプラインと実行の詳細へのドリルダウンを行うことができます。
[最近] を選んで最近実行したパイプラインを表示するか (既定の表示)、[すべて] を選んですべてのパイプラインを表示します。
パイプラインを選んで、そのパイプラインを管理し、実行を表示することができます。 最後の実行のビルド番号を選ぶとそのビルドの結果が表示され、ブランチ名を選ぶとその実行のブランチが表示され、コンテキスト メニューを選ぶとパイプラインを実行し、その他の管理アクションを実行することができます。
[実行] を選ぶと、すべてのパイプライン実行が表示されます。 必要に応じて、表示される実行をフィルター処理できます。
パイプライン実行を選ぶと、その実行に関する情報が表示されます。
コンテキスト メニューから、実行の [保持] または [削除] を選択できます。 実行の保持の詳細については、ビルドとリリースの保持ポリシーに関するページを参照してください。
パイプラインの詳細を編集する
パイプラインの詳細ページでは、そのパイプラインを表示および管理できます。
[編集] を選ぶと、パイプラインを編集できます。 詳細については、「YAML パイプライン エディター」を参照してください。 パイプラインをホストするリポジトリで azure-pipelines.yml ファイルを直接変更して、パイプラインを編集することもできます。
パイプライン実行の詳細を表示する
パイプライン実行の概要からは、実行中と完了時に、実行の状態を表示できます。
概要ペインからは、ジョブとステージの詳細を表示する、成果物をダウンロードする、リンクされたコミット、テスト結果、作業項目に移動することができます。
ジョブとステージ
[ジョブ] ペインには、ステージとジョブの状態の概要が表示されます。 このペインには、パイプラインにステージとジョブがあるか、またはジョブのみがあるかに応じて、複数のタブが表示される場合があります。 この例では、パイプラインには Build と Deploy という名前の 2 つのステージがあります。 [ステージ] ペインまたは [ジョブ] ペインのどちらかからジョブを選ぶと、パイプライン ステップにドリルダウンできます。
ジョブを選ぶと、そのジョブのステップが表示されます。
ステップ ビューからは、各ステップの状態と詳細を確認できます。 [その他のアクション] から、タイムスタンプを切り替えたり、パイプライン内のすべてのステップの生のログを表示したりできます。
パイプラインのキャンセルと再実行
パイプラインが実行されている場合は、[キャンセル] を選んで取り消すことができます。 実行が完了している場合は、[新しい実行] を選んでパイプラインを再実行することができます。
パイプライン実行の [その他のアクション] メニュー
[その他のアクション] メニューから、ログのダウンロード、タグの追加、パイプラインの編集、実行の削除、および実行の構成 保持を行うことができます。
注意
実行が保持されている場合、実行を削除することはできません。 [削除] が表示されていない場合は、[保持されている実行の停止] を選んでから、実行を削除します。 [削除] と [View retention releases] (保持リリースの表示) の両方が表示される場合、1 つ以上の構成済みアイテム保持ポリシーがまだ実行に適用されています。 [View retention releases] (保持リリースの表示) を選び、ポリシーを削除してから (選んだ実行のポリシーのみが削除されます)、実行を削除します。
状態バッジをリポジトリに追加する
多くの開発者は、リポジトリに状態バッジを表示して、コードの品質を高く保とうとします。
状態バッジをクリップボードにコピーするには:
Azure Pipelines で [パイプライン] ページに移動してパイプラインの一覧を表示します。 前のセクションで作成したパイプラインを選びます。
を選び、[状態バッジ] を選びます。
[状態バッジ] を選びます。
サンプル Markdown セクションのサンプル Markdown をコピーします。
クリップボードにバッジの Markdown をコピーした状態で、GitHub で以下の手順を実行します。
ファイルの一覧に移動し、
Readme.md
を選びます。 鉛筆アイコンを選んで編集します。状態バッジの Markdown をファイルの先頭に貼り付けます。
変更を
main
ブランチにコミットします。リポジトリの説明に状態バッジが表示されていることに注目してください。
プライベート プロジェクトのバッジへの匿名アクセスを構成するには:
ページの左下隅にある プロジェクト設定 に移動します
[パイプライン] の [設定] タブを開きます。
[全般] の [バッジへの匿名アクセスを無効にする] スライダーを切り替えます。
注意
プライベート プロジェクトでも、匿名バッジ アクセスは既定で有効になっています。 匿名バッジ アクセスが有効な場合、組織外のユーザーが、バッジ状態 API を使ってプロジェクト名、ブランチ名、ジョブ名、ビルドの状態などの情報のクエリを実行できる可能性があります。
このリポジトリの Readme.md
ファイルを変更したばかりなので、リポジトリのルートにある azure-pipelines.yml
ファイルの構成に従って、Azure Pipelines によってコードは自動的にビルドされます。 Azure Pipelines に戻り、新しい実行が表示されることを確認します。 編集するたびに、Azure Pipelines によって新しい実行が開始されます。
Azure DevOps Server 2019 のクラシック エディターを使って、"Hello world" を出力するビルドとリリースを作成する方法について説明します。
Azure Repos に移動します。 (前のナビゲーションの [コード] ハブ)
プロジェクトが空の場合、リポジトリにコードを追加する画面が表示されます。 一番下の選択肢を選び、
readme
ファイルを使ってリポジトリを初期化します。
Azure Repos に移動します。
ファイルを追加します。
ダイアログ ボックスで、新しいファイルに名前を付けて作成します。
HelloWorld.ps1
このスクリプトをコピーして貼り付けます。
Write-Host "Hello world"
ファイルを [コミット] (保存) します。
このチュートリアルでは、CI/CD に重点を置いているため、コード部分はシンプルにしています。 私たちは、Web ブラウザーで直接、Azure Repos Git リポジトリで作業しています。
実際のアプリのビルドと配置を始める準備ができたら、Azure Pipelines CI ビルドを使ってさまざまなバージョン管理クライアントやサービスを使用できます。 詳細については、こちらを参照してください。
ビルド パイプラインを作成する
"Hello world" を出力するビルド パイプラインを作成します。
[Azure Pipelines] を選ぶと、自動的に [ビルド] ページが表示されます。
新しいパイプラインを作成する。
新しい Azure DevOps ユーザーの場合、この操作で [YAML pipeline creation experience] (YAML パイプラインの作成エクスペリエンス) に自動的に移動します。 クラシック エディターに移動し、このガイドを完了するには、[New YAML pipeline creation experience] (新しい YAML パイプラインの作成エクスペリエンス) のプレビュー機能をオフにする必要があります。
ソース、プロジェクト、リポジトリ、既定のブランチがスクリプトを作成した場所と一致することを確認します。
[空のジョブ] から始めます。
左側にある [パイプライン] を選び、使う [名前] を指定します。 [エージェント プール] の [Hosted VS2017] を選びます。
左側にあるプラス記号 (+) を選び、[ジョブ 1] にタスクを追加します。 右側にある [ユーティリティ] カテゴリを選び、[PowerShell] タスクを一覧から選び、[追加] を選びます。
左側にある新しい PowerShell スクリプト タスクを選びます。
[スクリプト パス] の引数で ボタンを選び、リポジトリを参照して作成したスクリプトを選びます。
[保存してキューに登録] を選択し、[保存] を選択します。
ビルド パイプラインは、自動ビルド パイプラインを定義するエンティティです。 ビルド パイプラインには一連のタスク (それぞれがビルド内のステップを実行するもの) を構成します。 タスク カタログには、すぐに使い始めることができる豊富なタスクが用意されています。 また、ビルド パイプラインに PowerShell やシェル スクリプトを追加することもできます。
ビルドから成果物を発行する
一般的なビルドでは、成果物を生成し、リリースのさまざまなステージに配置できます。 ここでは、この機能を簡単に説明するために、スクリプトを単に成果物として発行します。
[タスク] タブでプラス記号 (+) を選び、[ジョブ 1] にタスクを追加します。
[ユーティリティ] カテゴリを選び、[ビルド成果物の発行] タスクを選び、[追加] を選びます。
発行するためのパス: ボタンを選び、作成したスクリプトを参照して選びます。
[成果物名]: 「
drop
」と入力します。成果物の発行場所: [Azure Artifacts/TFS] を選びます。
成果物とは、ビルドで生成するファイルのことです。 チームにとってアプリのテストや配置に必要なほぼすべてのものが成果物に該当します。 たとえば、C# または C++ .NET Windows アプリの .DLL、.EXE 実行可能ファイル、.PDB シンボル ファイルなどです。
成果物を生成できるように、パターン マッチングを使ったコピーなどのツールや、発行前の成果物をまとめておくことができるステージング ディレクトリが用意されています。 Azure Pipelines の成果物に関するページを参照してください。
継続的インテグレーション (CI) を有効にする
[トリガー] タブを選択します。
[継続的インテグレーション] を有効にします。
ビルド パイプラインの継続的インテグレーション トリガーを使って、コードの変更がコミットされるたびに、新しいビルドを自動的にキューに登録する必要があることをシステムに示します。 このトリガーをより汎用化したり、より具体的にしたりすることができます。また、ビルドをスケジュールすることもできます (たとえば、毎晩など)。 ビルド トリガーに関する記事を参照してください。
ビルドを保存してキューに登録する
ビルドを手動で保存してキューに登録し、ビルド パイプラインをテストします。
[保存してキューに登録] を選び、[保存してキューに登録] を選びます。
ダイアログ ボックスで、もう一度 [保存してキューに登録] を選びます。
これにより、Microsoft ホステッド エージェントに新しいビルドがキューに登録されます。
ページの上部に新しいビルドへのリンクが表示されます。
そのリンクを選んで、新しいビルドが行われるのを確認します。 エージェントが割り当てられると、ビルドのライブ ログが表示されるようになります。 PowerShell スクリプトがビルドの一部として実行され、コンソールに "Hello world" と出力されていることを確認します。
ビルドの概要に移動します。 ビルドの [成果物] タブで、スクリプトが成果物として発行されていることを確認します。
一部の変数を追加して変更をスクリプトにコミットする
パイプラインをより興味深いものにするために、いくつかのビルド変数をスクリプトに渡します。 次に変更をスクリプトにコミットして、CI パイプラインが自動的に実行され、変更が検証されるのを確認します。
ビルド パイプラインを編集します。
[タスク] タブで PowerShell スクリプト タスクを選びます。
これらの引数を追加します。
引数
-greeter "$(Build.RequestedFor)" -trigger "$(Build.Reason)"
最後に、ビルド パイプラインを保存します。
次に、スクリプトに引数を追加します。
Azure Repos の [ファイル] に移動します (前の操作と TFS の [コード] ハブです)。
HelloWorld.ps1 ファイルを選び、ファイルを [編集] します。
スクリプトを次のように変更します。
Param( [string]$greeter, [string]$trigger ) Write-Host "Hello world" from $greeter Write-Host Trigger: $trigger
スクリプトを [コミット] (保存) します。
これで、変更の結果を確認できるようになりました。 [Azure Pipelines] に移動し、[キュー済み] を選びます。 [キューに入っている、または実行中] セクションで、コミットした変更によってビルドが自動的にトリガーされていることに注目してください。
作成された新しいビルドを選び、そのログを表示します。
コードを変更したユーザーの名前があいさつメッセージに出力されていることに注目してください。 これが CI ビルドだったことも出力されています。
以上の手順では、単にビルド変数の概念について紹介しただけです。 ここでは、システムによって自動的に事前定義され、初期化された変数の値を出力しました。 カスタム変数を定義して、タスクの引数で、またはスクリプト内の環境変数として使うこともできます。 変数の詳細については、「ビルド変数」を参照してください。
これでビルド パイプラインが完成しました。 次の操作
チームによってチェックインされたコードを自動的にビルドして検証するというビルド パイプラインを作成しました。 この時点で、次のセクションに進み、リリース パイプラインについて学ぶことができます。 または、先に進んで、アプリのビルド パイプラインを作成することもできます。
リリース パイプラインを作成する
スクリプトを実行するプロセスを 2 つのステージで定義します。
[パイプライン] タブに移動し、[リリース] を選びます。
[新しいパイプライン] を作成するアクションを選びます。 リリース パイプラインが既に作成されている場合は、プラス記号 (+) を選び、[リリース パイプラインの作成] を選びます。
[空のジョブ] から始めるアクションを選びます。
このステージに「QA」と名前を付けます。
[成果物] パネルで [+ 追加] を選び、[ソース (ビルド パイプライン)] を指定します。 [追加] を選択します。
継続的デプロイをトリガーする稲妻を選び、右側の [継続的配置トリガー] を有効にします。
[タスク] タブを選び、[QA] ステージを選びます。
ジョブのプラス記号 (+) を選び、ジョブにタスクを追加します。
[タスクの追加] ダイアログ ボックスで [ユーティリティ] を選び、PowerShell タスクを見つけて、その [追加] ボタンを選びます。
左側にある新しい PowerShell スクリプト タスクを選びます。
[スクリプト パス] の引数で ボタンを選び、成果物を参照して作成したスクリプトを選びます。
これらの [引数] を追加します。
-greeter "$(Release.RequestedFor)" -trigger "$(Build.DefinitionName)"
[パイプライン] タブで [QA] ステージを選び、[複製] を選びます。
複製したステージ Production の名前を変更します。
リリース パイプライン Hello world の名前を変更します。
リリース パイプラインを保存します。
リリース パイプラインは、アプリケーションのビルド成果物を配置するステージのコレクションです。 また、各ステージの実際の配置パイプラインと、成果物があるステージから別のステージへと昇格する方法も定義されています。
また、スクリプトの引数でいくつかの変数を使っていることに注目してください。 この例では、ビルド パイプラインに使ったビルド変数ではなく、リリース変数を使いました。
リリースを配置する
各ステージでスクリプトを実行します。
新しいリリースを作成します。
[リリースの新規作成] が表示されたら、[作成] を選びます。
作成されたリリースを開きます。
ログを表示し、リリースに関するリアルタイムのデータを取得します。
各リリースが全ステージに配置されたかどうか、進行状況を追跡することができます。 各リリースの一部であるコミット、関連付けられている作業項目、リリース パイプラインに追加したテスト実行の結果を追跡できます。
コードを変更し、それが自動的に運用環境に配置されることを確認します。
スクリプトにもう 1 つ変更を加えます。 今回は、自動的にビルドし、運用環境ステージまで配置します。
[コード] ハブの [ファイル] タブに移動し、HelloWorld.ps1 ファイルを編集して、次のように変更します。
Param( [string]$greeter, [string]$trigger ) Write-Host "Hello world" from $greeter Write-Host Trigger: $trigger Write-Host "Now that you've got CI/CD, you can automatically deploy your app every time your team checks in code."
スクリプトを [コミット] (保存) します。
[ビルド] タブを選び、キューに登録され、実行されたビルドを確認します。
ビルドが完了したら、[リリース] タブを選び、新しいリリースを開き、[ログ] に移動します。
新しいコードは自動的に QA ステージ、運用環境ステージの順に配置されます。
多くの場合、何らかのテストと承認が行われた後にのみ運用環境に配置されるように、リリース パイプラインを編集する必要があります。 承認とゲートの概要に関する記事を参照してください。
次のステップ
Azure で最初のパイプラインを作成する方法を説明しました。 次に、選択した言語でパイプラインを設定する方法について詳しく説明します。
または、作成したパイプラインのカスタマイズに進むことができます。
パイプラインをコンテナーで実行するには、コンテナー ジョブに関する記事を参照してください。
GitHub リポジトリのビルドの詳細については、「GitHub リポジトリをビルドする」を参照してください。
パイプライン成果物を発行する方法については、「パイプライン成果物の公開」を参照してください。
YAML パイプラインで他にできることについては、YAML スキーマのリファレンスを参照してください。
クリーンアップ
作成したテスト パイプラインは、作業が終了したときに簡単に削除できます。
パイプラインを削除するには、そのパイプラインの概要ページに移動し、ページの右上にある [...] メニューから [削除] を選びます。 確認するパイプラインの名前を入力し、[削除] を選びます。
ここでは、パイプラインの作成と実行の基本について学習しました。 これで、お使いのプログラム言語に合わせてビルド パイプラインを構成する準備が整いました。 新しいビルド パイプラインを作成してください。今回は以下のテンプレートのいずれかを使います。
Language | 使用するテンプレート |
---|---|
.NET | ASP.NET |
.NET Core | ASP.NET Core |
C++ | .NET デスクトップ |
Go | Go |
Java | Gradle |
JavaScript | Node.js |
Xcode | Xcode |
よく寄せられる質問
DevOps や CI/CD に関する記事はどこで読めますか?
どのバージョン管理システムを使用できますか?
アプリの CI/CD を始める準備ができたら、任意のバージョン管理システムを使用できます。
クライアント
サービス
- Azure Pipelines
- Azure Repos Git、GitHub、Bitbucket Cloud などの Git サービス プロバイダー
- Subversion
クライアント
サービス
- Azure Pipelines
- GitHub や Bitbucket Cloud などの Git サービス プロバイダー
- Subversion
パイプラインをレプリケートするにはどうすればよいですか?
他のパイプラインにレプリケートするパターンがパイプラインにある場合は、それを複製するか、エクスポートするか、テンプレートとして保存します。
パイプラインを複製したら、変更を加えて保存できます。
パイプラインをエクスポートした後、[すべてのパイプライン] タブからパイプラインをインポートできます。
テンプレートを作成すると、チーム メンバーはそれを使い、新しいパイプラインでパターンに従うことができます。
ヒント
[新しいビルド エディター] を使っている場合、カスタム テンプレートは一覧の一番下に表示されます。
下書きはどのように使用しますか?
ビルド パイプラインを編集していて、まだ運用環境の準備ができていない変更をテストする場合は、下書きとして保存できます。
必要に応じて、下書きを編集してテストできます。
準備ができたら、下書きを公開して、変更をビルド パイプラインにマージできます。
また、下書きを破棄する場合は、上に示した [すべてのパイプライン] タブから削除できます。
パイプラインを削除するにはどうすればよいですか?
パイプラインを削除するには、そのパイプラインの概要ページに移動し、ページの右上にある [...] メニューから [削除] を選びます。 確認するパイプラインの名前を入力し、[削除] を選びます。
ビルドは自動的にまたは手動でキューに登録することができます。
手動でビルドをキューに登録する場合、ビルドの 1 回の実行に対して、次のことができます。
ビルドは自動的にまたは手動でキューに登録することができます。
手動でビルドをキューに登録する場合、ビルドの 1 回の実行に対して、次のことができます。
パイプライン設定の詳細はどこで確認できますか?
ビルド パイプラインをプログラムで作成するにはどうすればよいですか?
REST API リファレンス: ビルド パイプラインを作成する
注意
Azure Pipelines CLI を使って、コマンド ラインまたはスクリプトからビルドおよびビルド パイプラインを管理することもできます。