演習 - pull request を作成する
このユニットでは、pull request を送信し、あなたの変更を main
ブランチにマージして、全員が作業の恩恵を受けることができるようにするプロセスを練習します。
Azure Pipelines を使用したビルド パイプラインの作成では、build-pipeline
という名前の Git ブランチを作成しました。ここでは、Space Game Web サイトの基本的なビルド パイプラインを定義しました。 ビルド定義が azure-pipelines.yml という名前のファイルにあることを思い出してください。
あなたのブランチではビルド成果物が生成されますが、その作業は build-pipeline
ブランチにのみ存在します。 あなたのブランチを main
ブランチにマージする必要があります。
pull request は、コードのレビューの準備ができていることを他の開発者に伝え、main
ブランチなどの別のブランチにあなたの変更をマージしてほしいという意思を示すものであることを覚えておいてください。
開始する前に、Mara と Andy の様子を見てみましょう。
アンディ: こんにちは、Mara。 あなたが Azure で実行されるビルド パイプラインを準備したことは知っています。 私はウェブサイトに機能を追加しています、そして私は自分のビルドプロセスを見たいと思います。 それを行う準備はできていますか。
マラ: そうですよ。 ブランチにパイプラインを作成しました。 あなたもそのパイプラインを使用できるように、pull request を作成して、それを main
にマージしてみませんか。
アンディ: いいですね。 例を見てみましょう。
ブランチを作成してスタート コードを追加する
前のモジュールで構築したビルド パイプラインを使用することもできますが、code-workflow
という名前の新しいブランチを作成してみましょう。 その過程を最初から実習できるように、このブランチは main
に基づいています。
Visual Studio Code で、統合ターミナルを開きます。
main
ブランチに切り替えます。git checkout main
GitHub から最新バージョンのコードを入手していることを確認します。
git pull origin main
「
code-workflow
」という名前のブランチを作成します。git checkout -B code-workflow
-b
引数は、存在しない場合に新しいブランチを作成することを指定します。 既存のブランチに切り替える場合は、-b
引数を省略します。既定では、新しいブランチは、
git checkout
コマンドを実行した場所の前のブランチに基づいて構築されます。 ここでは、親ブランチはmain
ですが、別のブランチを親ブランチにすることができます。あなたが基盤にしたい、または試したいと考えている、他の誰かが開始した機能ブランチなどです。自分用のローカル ブランチを対象にしているため、どんな必要な変更でも安全に加えられるようになっています。 対象としているブランチを確認する場合は、
git branch -v
を実行します。エクスプローラーで azure-pipelines.yml を開き、その内容を次のように置き換えます。
trigger: - '*' pool: vmImage: 'ubuntu-20.04' demands: - npm variables: buildConfiguration: 'Release' wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '6.x' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK $(dotnetSdkVersion)' inputs: version: '$(dotnetSdkVersion)' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' displayName: 'Compile Sass assets' - task: gulp@1 displayName: 'Run gulp tasks' - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' displayName: 'Write build info' workingDirectory: $(wwwrootDir) - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Build the project - $(buildConfiguration)' inputs: command: 'build' arguments: '--no-restore --configuration $(buildConfiguration)' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Publish the project - $(buildConfiguration)' inputs: command: 'publish' projects: '**/*.csproj' publishWebProjects: false arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)' zipAfterPublish: true - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact: drop' condition: succeeded()
この構成は、前のモジュールで作成した基本的な構成と似ています。 簡潔にするため、これは、プロジェクトのリリース構成のみをビルドします。
GitHub にあなたのブランチをプッシュする
ここでは、GitHub に code-workflow
ブランチをプッシュして、Azure Pipelines によってアプリケーションがビルドされるのを観察します。
ターミナルで
git status
を実行して、あなたのブランチにどのようなコミットされていない作業が存在しているかを確認します。git status
azure-pipelines.ymlが変更されていることがわかります。 これをすぐにブランチにコミットしますが、最初に Git がファイルの ステージング と呼ばれるこのファイルを追跡していることを確認する必要があります。
git commit
を実行すると、ステージされている変更のみがコミットされます。 次に、git add
コマンドを実行して、ステージング領域またはインデックスに azure-pipelines.yml を追加します。次の
git add
コマンドを実行して、ステージング領域に azure-pipelines.yml を追加します。git add azure-pipelines.yml
次の
git commit
コマンドを実行して、ステージされたファイルをcode-workflow
ブランチにコミットします。git commit -m "Add the build configuration"
-m
引数では、コミット メッセージを指定します。 コミット メッセージは、変更されたファイルの履歴の一部になります。 これは、レビュー担当者が変更を理解すること、また、将来の保守担当者が時間の経過と共にファイルがどのように変更されたかを理解するのに役立ちます。ヒント
文を締めくくるのに最適なのは、"このコミットを適用すると、...となります" というコミット メッセージです。
-m
引数を省略すると、Git によってテキスト エディターが表示されます。そこで、変更の詳細を記述できます。 このオプションは、複数行にわたるコミット メッセージを指定する場合に便利です。 最初の空白行までのテキストでは、コミットのタイトルを指定します。この
git push
コマンドを実行して、GitHub 上にある自分のリポジトリにcode-workflow
ブランチをプッシュ (アップロード) します。git push origin code-workflow
省略可能なステップとして、Azure Pipelines であなたのプロジェクトに移動し、その実行中にビルドをトレースします。
このビルドは CI ビルドと呼ばれます。 パイプライン構成では、 トリガー と呼ばれるものを使用して、ビルド プロセスに参加するブランチを制御します。 ここでは、"*" で、すべてのブランチを指定しています。
trigger: - '*'
後で、必要なブランチだけから構築を行うようにパイプライン構成を制御する方法について説明します。
ビルドが正常に完了し、ビルドされた Web アプリケーションを含む成果物が生成されていることがわかります。
pull request を作成する
ここでは、あなたのブランチの pull request を作成します。
ブラウザーで GitHub にサインインします。
mslearn-tailspin-spacegame-web リポジトリに移動します。
[ ブランチ ] ドロップダウン リストで、
code-workflow
ブランチを選択します。pull request を開始するには、[ 投稿 ] を選択し、[ pull request を開く] を選択します。
ベースが、Microsoft リポジトリではなくフォークされたリポジトリを指定していることを確認します。
選択内容は次のようになります。
重要
Microsoft リポジトリにあなたの変更をマージすることはできないため、この手順は重要です。 基本リポジトリが、MicrosoftDocs ではなくあなたの GitHub アカウントを指し示していることを確認します。
MicrosoftDocs に対するプル要求が発生した場合は、pull request を閉じて、これらの手順を繰り返します。
フォークしたリポジトリから作業しているため、このプロセスには余分な手順が伴います。 フォークではなく独自リポジトリを直接操作するときは、
main
ブランチが既定で選択されます。pull request のタイトルと説明を入力します。
タイトル:
Azure Pipelines の構成
説明:
このパイプライン構成は、アプリケーションをビルドし、リリース構成のビルドを生成します。
pull request を完了するには、[ pull request の作成] を選択します。
この手順ではどのコードもマージしません。 これにより、
main
ブランチにマージする変更があなたによって提案されたことが他のユーザーに伝えられます。pull request のウィンドウが表示されます。 Azure Pipelines でのビルドの状態が、pull request の一部として表示されるように構成されていることがわかります。 そうすることで、あなたや他の人が、ビルドを実行しているときにその状態を表示できます。
GitHub にブランチをプッシュするときと同様に、pull request は既定で、Microsoft Azure Pipelines によるアプリケーションのビルドをトリガーします。
ヒント
ビルドの状態がすぐに表示されるように見えない場合は、少し待つか、ページを更新してください。
必要に応じて、[ 詳細 ] リンクを選択し、パイプライン内を移動するビルドをトレースします。
QA など、プロセスの次のステップにビルドを渡すことができます。 後で、あなたの変更を最後の QA ラボまたは運用環境までプッシュするようにパイプラインを構成できます。
GitHub で、あなたの pull request に戻ります。
ビルドが完了するまで待ちます。 これで、pull request をマージする準備ができました。
[ プル要求のマージ] を選択し、[ マージの確認] を選択します。
GitHub から
code-workflow
ブランチを削除するには、[ ブランチの削除] を選択します。pull request をマージした後は、GitHub からブランチを削除してもまったく安全です。 そのブランチはもう不要になっているため、実際にはこれが一般的なやり方です。 変更はマージされ、GitHub またはコマンド ラインから変更に関する詳細を引き続き確認できます。 マージされたブランチを削除すると、他の人が現在アクティブな作業のみを表示する助けにもなります。
Git ブランチは短期の使用が想定されています。 ブランチをマージした後は、そこに追加のコミットをプッシュしたり、2 回目のブランチのマージを行ったりすることはありません。 ほとんどの場合、新機能やバグ修正プログラムに取り掛かるたびに、
main
ブランチに基づくクリーンなブランチで作業を開始します。GitHub でブランチを削除しても、そのブランチはローカル システムから削除されません。 それを行うには、
-d
スイッチをgit branch
コマンドに渡します。
変更は何回ビルドされるか
この答えは、ビルド構成がどのように定義されているかに左右されます。 Azure Pipelines では、ビルドが発生する原因となるイベントを指定する トリガー を定義できます。 どのブランチをビルドするかを制御でき、どのファイルによってビルドをトリガーするかさえ制御できます。
たとえば、任意の Git ブランチで変更が GitHub にプッシュされたときにビルドが行われるようにするとします。 ただし、プロジェクトの docs フォルダー内のファイルに対する変更のみが行われる場合は、ビルドを行いたくありません。 ビルド構成には、次の trigger
セクションを含めることができます。
trigger:
branches:
include:
- '*' # build all branches
paths:
exclude:
- docs/* # exclude the docs folder
既定では、任意のブランチ上で、いずれかのファイルに対して変更がプッシュされると、ビルドがトリガーされます。
継続的インテグレーション (CI) ビルドは、ブランチに変更をプッシュするときに実行されるビルドです。
プル要求 (PR) ビルドは、 プル要求 を開いたとき、または既存のプル要求に追加の変更をプッシュするときに実行されるビルドです。
code-workflow
ブランチを通して加えた変更は、3 つの条件のもとでビルドされます。
- CI ビルドは、変更を
code-workflow
ブランチにプッシュしたときに行われます。 - PR ビルドは、
code-workflow
ブランチで、main
ブランチに対する pull request を開いたときに行われます。 - 最終的な CI ビルドは、pull request が
main
ブランチにマージされた後に行われます。
PR ビルドは、提案された変更がmain
または別のターゲット ブランチにマージされた後に正しく機能することを確認するのに役立ちます。
最終的な CI ビルドでは、PR がマージされた後も変更が正常であることが確認されます。
省略可能な手順として、Azure Pipelines にアクセスし、main
ブランチで最終的な CI ビルドが行われることを確認します。