プロジェクトチームとのカスタマイズの共有
学習の目的
- プルリクエストとは何か、いつ使用するかを説明する。
- GitHub の機能ブランチのしくみを説明する。
- Git プロジェクトで他のメンバーとコラボレーションする方法を説明する。
これから Tasha はカスタマイズを機能ブランチに取り込み、Isabel が作業内容をレビューできるようにします。機能ブランチを使用すると、確実にすべてのカスタマイズをレビューして承認でき、各変更セットは互いに分離されます。
GitHub に機能ブランチを作成する
ブランチを使用して開発作業内容、つまり「機能」を他のチームメンバーの変更と分離します。機能ブランチを作成して変更を追加するには、次の手順を実行します。
- GitHub Desktop でリポジトリを開きます。
dev
スクラッチ組織から取得された、最後のモジュールでの変更が表示されます。 - [Current Branch: main (現在のブランチ: メイン)] というタブを選択します。
- [New Branch (新規ブランチ)] をクリックして、メインから新しいブランチを作成します。
- ブランチ名として「
feature/deliveries
」 (機能/配送) と入力し、[Create Branch (ブランチを作成)] をクリックします。 - [Bring my changes to feature/deliveries (変更を feature/deliveries に取り込む)] を選択します。これにより、すでに加えた変更で新しいブランチを開始するように GitHub Desktop に指示します。
- [Switch Branch (ブランチを切り替え)] をクリックします。
次は、機能ブランチ上にこれらの変更を保持するためのコミットを作成します。コミットとはプロジェクトの履歴内に定義された位置であり、加えた変更はコミットを使用してバージョン管理に追加されます。
- [Summary (概要)] と [Description (説明)] に「
Created Delivery and Delivery Item objects
」 (配送オブジェクトと配送品目オブジェクトの作成) と入力します。 - [Commit to feature/deliveries (feature/deliveries にコミット)] をクリックします。
変更を GitHub にプッシュする
現在、カスタマイズを含む新しいブランチはローカルコンピューター上に保存されています。これをチームメンバーと共有するには、変更を GitHub にプッシュします。GitHub ではプルリクエストを作成することで、提案した変更のレビューを他のメンバーに依頼できます。チームはプルリクエストを使用して各チームメンバーの作業内容を追跡、レビュー、結合できます。
- 変更を GitHub で公開します。GitHub Desktop で [feature/deliveries (機能/デリバリー)] ブランチが選択されていることを確認し、[Publish Branch (ブランチを公開)] をクリックします。
- [Branch (ブランチ)] > [Create Pull Request (プルリクエストを作成)] を選択してプルリクエストを作成します。GitHub がブラウザーウィンドウで開きます。
- プルリクエストの本文に複数のヘッダーが入力されます。CumulusCI で、プルリクエストの本文に入力されたコンテンツを使用したプロジェクトのリリースの累積リリースノート生成が処理されます。次のセクションを編集します。
- [Changes (変更)] に作業内容の説明を入力します。たとえば「
- Created Delivery and Delivery Items objects and fields
」 (- 配送および配送品目オブジェクトと項目) などです。 - [Issues Closed (クローズしたイシュー)] に「
Fixes #1
」 (修正 1) と入力します。1 は、このモジュールの単元 2 「アプリケーションのカスタマイズとその取得」で作成したイシュー番号です。
- [Changes (変更)] に作業内容の説明を入力します。たとえば「
- 加える変更に関する詳細を追加し終えたら、[Create pull request (プルリクエストを作成)] をクリックします。
この単元で後ほど、このプルリクエストをメインブランチとマージする方法を学習します。
プルリクエストに基づいてコラボレーションする
プルリクエストとブランチを使用するとコラボレーションをサポートしやすくなります。変更のレビューやカスタマイズに対する品質保証 (QA) プロセスの実行を同僚に依頼する必要があるとき、プルリクエストを使用します。
Tasha と Isabel が Tasha のカスタマイズに対してどのようにレビューと承認のプロセスを行うかを見ていきましょう。Isabel がこのプロジェクトでコラボレーションするのは初めてであるため、Tasha はまず Isabel を GitHub Food Bank リポジトリへの「Write」 (書き込み) 権限のあるコラボレーターとして追加します。この操作はブラウザーの GitHub [Settings (設定)] タブ内で行います。Isabel がリポジトリにアクセスできるようになったので、Tasha は Isabel をプルリクエストのレビュー担当者として追加します。
Isabel は Tasha の作業内容のレビューを始める用意ができています。最初のステップは、ブラウザーで GitHub リポジトリのプルリクエストを参照することです。[Files changed (変更されたファイル)] タブで、Isabel はアプリケーションのメタデータへの変更を行単位で確認してレビューコメントを追加できます。これにより Tasha は必要な作業を明確にし、潜在的なリスクを特定しやすくなります。変更の全範囲を確認するために、Isabel が Tasha のブランチに基づいてスクラッチ組織を作成することもできます。Isabel のローカルコンピューター上に Food Bank リポジトリのコピーがない場合は、ローカルコンピューターにスクラッチ組織を作成する前にリポジトリをコピーする必要があります。
カスタマイズについてコードのレビューと動作の確認を終えたので、Isabel は Tasha の作業内容を承認できます。これを行うには、GitHub で [Review changes (変更をレビュー)] をクリックし、[Approve (承認)]、[Submit review (レビューを送信)] の順に選択します。次に、Isabel は Tasha の作業内容をリポジトリのメインブランチにマージしてパッケージに含めることができます。
皆さんはこれを 1 人で実行していてレビュー前半の手順をほとんど省略することになるので、別のスクラッチ組織でカスタマイズをレビューしてからプルリクエストをメインブランチにマージする方法を確認しましょう。
新しいスクラッチ組織で変更をレビューする
- GitHub Desktop で [Repository (リポジトリ)] → [Open in Visual Studio Code (Visual Studio Code で開く)] を選択して現在のリポジトリとブランチを開きます。
- VS Code ターミナルで
cci flow run qa_org --org qa
コマンドを入力し、機能ブランチに基づいてスクラッチ組織を作成します。 - スクラッチ組織の準備ができたら、Web ブラウザーに
cci org browser qa
コマンドを入力して開きます。
スクラッチ組織を調べ、加えた次のようなカスタマイズを確認します。
- Delivery (配送) と Delivery Item (配送品目) という 2 つの新規カスタムオブジェクトがある
- Delivery (配送) ではカスタムタブを使用できる
- Delivery Item (配送品目) は Delivery (配送) オブジェクトの関連リストである
- カスタム項目のデータ型が正しい
変更をメインブランチにマージする
プルリクエストのレビューが終わったので、変更をメインブランチにマージできます。Tasha と Isabel のようにチームで作業している場合は通常、作業内容のレビュー担当者が変更をメインにマージします。
- Web ブラウザーに表示されたプルリクエストの [Conversation (会話)] タブで、[Merge pull request (プルリクエストをマージ)] をクリックして
feature/deliveries
ブランチをメインブランチにマージします。 - [Confirm merge (マージを確認)] をクリックします。
- [Delete branch (ブランチを削除)] をクリックして機能ブランチを削除します。スクラッチ組織と同様に、機能ブランチは一時使用目的に設計されており、その中のカスタマイズがメインブランチにマージされると不要になります。
最後のステップでは、ワークスペースをクリーンアップして退出します。
- GitHub Desktop に戻ります。
- [Current Branch (現在のブランチ)] が
feature/deliveries
であることを確認します。 - GitHub Desktop メニューバーで [Branch (ブランチ)] → [Delete (削除)] を選択し、
feature/deliveries
ブランチを削除することを確認します。 - GitHub Desktop では [Current Branch (現在のブランチ)] が自動的にメインブランチに戻ります。
- メニューから [Repository (リポジトリ)] → [Pull (プル)] を選択して、GitHub の
feature/deliveries
からマージした変更を削除します。レジストリが更新されます。 - 最後に GitHub メニューバーで [Repository (リポジトリ)] → [Open in Visual Studio Code (Visual Studio Code で開く)] を選択して VS Code のターミナルウィンドウを開き、スクラッチ組織を削除します。
- dev スクラッチ組織を削除するには、
cci org scratch_delete dev
コマンドを入力します。 - プルリクエストをレビューするためのスクラッチ組織も作成している場合は、そのスクラッチ組織を削除します。
cci org scratch_delete qa
と入力します。
- dev スクラッチ組織を削除するには、
Food Bank リポジトリのメインブランチに新しいカスタマイズが追加されたので、Tasha と Isabel が作成するすべてのスクラッチ組織に変更が表示されます。