プラン ブランチの使用
計画ブランチは、バージョン管理リポジトリ内のブランチを表すために使用します。計画ブランチでは、計画と同じビルド設定が使用されます。
Git や Mercurial などのツールでは、フィーチャー ブランチングと呼ばれる手法が奨励されています。開発者は、変更内容をメイン ラインの開発にマージする前に、新しいブランチを使用してチーム メンバーから切り離して作業できます。しかし以前は、開発者が新しいビルド計画を特別に設定するか、既存の計画を複製して新しいブランチを作成するように設定しない限り、ブランチに加えられた変更が Bamboo でビルドおよびテストされない可能性がありました。
現在では、Bamboo で計画ブランチを使用できるため、
- リポジトリで新規作成されたブランチは、親計画と同じビルド設定を使用して自動でビルドおよびテストされます。
- 必要に応じて、親計画を上書きしてブランチ計画を個別に設定できる柔軟性があります。
- オプションで、ビルドが成功した場合にフィーチャー ブランチからの変更を「master」(トランク ブランチ、既定のブランチ、メインライン ブランチなど) に自動でマージすることもできます。
このページの内容
計画のブランチングを有効化する
Bamboo で計画のブランチングを有効化すると、ソース リポジトリのブランチが作成されるたびに自動で計画ブランチが作成されます。計画ブランチを手動で作成することもできます。
必要に応じて、ブランチ計画で master 計画の設定を上書きできます。
計画のブランチのリストを表示するには、ダッシュボードの [すべての計画] タブの計画名の横にあるブランチ アイコンをクリックします。リストからブランチ名を選択すると、そのブランチ計画の要約ページに直接移動します。
スクリーンショット: ブランチの [Plan Summary (計画の要約)] ページに「ブランチ」メニューが表示されている。
自動ブランチング
Git、Mercurial、および Subversion リポジトリでは、自動ブランチングを使用できます。他のリポジトリ タイプでは、手動ブランチングを使用できます。
Bamboo でリポジトリのブランチが作成されるたびに自動で計画ブランチを管理するには、次の手順を実行します。
- ブランチを作成する計画の設定ページの [ブランチ] タブに移動します。
- [Create plan branches for branches detected in the repository (リポジトリで検出されたブランチの計画ブランチを作成する)] チェックボックスをオンにします。
- 計画ブランチを作成するリポジトリ ブランチの名前と一致する正規表現を入力します (例:
(branch1|branch2|branch3)/.*)。Java の正規表現に関するドキュメントを参照してください。 必要に応じて、次のオプション設定を行います。これらは、この計画設定から作成されたすべてのブランチ計画に適用されますが、必要に応じてそれらのブランチ計画で上書きできます。
マージ Subversion では使用できません。
[Branch merging enabled (ブランチ マージが有効)] チェックボックスをオンにして、下記の説明に従って [ブランチ アップデーター] セクションまたは [ゲートキーパー] セクションのいずれかを完了します。Jira フィーチャー ブランチ ブランチ名の課題キーを使用して自動で計画ブランチをリンクするには、[Create remote links from JIRA issues... (Jira 課題からリモート リンクを作成する...)] チェックボックスをオンにします。以下で説明します。 通知 以下で説明します。 計画ブランチのクリーンアップ [Remove after (削除までの日数)] の値 (日数) を編集します。この期間内に VCS ブランチへのコミットが行われなかった場合、ブランチは自動で削除されます。値がゼロの場合、計画は削除されません。 ブランチのルート Subversion ソース リポジトリを使用する計画でのみ利用可能です。Bamboo では、Subversion リポジトリの構造がブランチの規則に従っていると仮定して、ブランチのルート URL が自動で計算されます。
たとえば、
https://svn.mycompany.com/svn/fastBuild/trunkという URL を持つfastBuildリポジトリの場合、Bamboo ではhttps://svn.mycompany.com/svn/fastBuild/branchesという場所にブランチが作成されることを想定します。Subversion リポジトリの構造が別の規則に従っている場合は、[Change branch root URL (ブランチのルート URL を変更)] を選択して、リポジトリ ブランチの作成場所を指定できます。
- 保存をクリックします。
ブランチ検出
計画のブランチングを有効にすると、Bamboo では既定で 300 秒ごとに新しいブランチがチェックされます。ブランチの検出間隔は次のようにしてカスタマイズできます。
- [Unable to render {include} The included page could not be found. ({include} をレンダリングできません。ページが見つかりませんでした)] を選択し、
- 左側のナビゲーションパネル ([システム] の下) の [一般設定] をクリックします。
- [Branch detection interval (ブランチの検出間隔)] に新しい値 (秒単位) を入力します。
- 保存をクリックします。
手動ブランチング
サポートされているすべてのリポジトリ タイプで手動ブランチングを使用します。Git、Mercurial、および Subversion リポジトリでは、自動ブランチングを使用することをお勧めします。
計画のブランチを手動で作成するには、次の手順を実行します。
- ブランチを作成する計画の設定ページの [ブランチ] タブに移動します。
- [ブランチを作成] をクリックします。Bamboo では、計画の指定されたリポジトリ内のブランチが自動でチェックされます。
- 利用可能な VCS ブランチから選択して、[作成] をクリックします。
- 必要に応じて、ブランチの既定の設定 (使用するソース リポジトリなど) を上書きできます。
ブランチを Jira と統合する
開発者は、Jira 課題に記述されている機能の開発を始める際に、Git や Mercurial を使用してリポジトリのブランチを作成します。課題キーを VCS ブランチ名の一部として使用すると、Bamboo によって課題キーが検出され、新しいブランチが自動で課題にリンクされます。
- ブランチ名に Jira 課題キーが含まれている必要があります。「jb-BDEV-790」や「BDEV-769 1」は有効な形式です。
- このリンクは、計画ブランチの [Build Result Summary (ビルド結果の要約)] のブレッドクラムのすぐ下に表示され、Jira 課題にも表示されます。
Bamboo で Jira のフィーチャー ブランチングを使用するには、Jira サーバーへのアプリケーション リンクが必要です。
ブランチの通知
master 計画の場合と同じように、ブランチ計画からビルド通知を受け取ることができます。
計画から作成されたすべてのブランチによる通知の送信方法を指定するには、計画の設定の [ブランチ] タブに移動して、次のいずれかのオプションを選択します。
- コミッターやこのブランチをお気に入りに登録したユーザーに通知する。
- 計画の通知設定を使用する。
- このブランチでは通知を送信しない。
必要に応じて、計画ブランチ設定の [通知] タブに移動して、特定のブランチ計画からの通知の送信方法を上書きできます。
計画の通知については、「計画とそのジョブの通知の設定」を参照してください。
ブランチの依存関係
計画ブランチのビルド依存関係は、計画の場合と同じように使用できます。ブランチ計画は、別のブランチ計画が正常にビルドされた場合にのみトリガーされます。これを使用すると、特定のブランチ計画に関連する重大なソース コードの変更を、依存するブランチ計画のビルドが壊れる前に確実に検出できます。master 計画間の依存関係は、ブランチ計画の名前が同じであれば維持されます。依存関係の詳細については、「計画ビルド依存関係のセットアップ」を参照してください。
計画ブランチでそれぞれの master 計画のビルド依存関係を優先するには、計画設定の [依存関係] タブで [Enable dependencies for all branches of this plan (この計画のすべてのブランチで依存関係を有効にする)] を選択します。
計画ブランチの設定
計画ブランチの作成が自動か手動かにかかわらず、master 計画はそのブランチ計画の構造と構成を管理します。ただし、設定ページに移動して、ブランチ計画の次の設定を上書きすることはできます。
| Branch clean-up (ブランチのクリーンアップ) | ブランチの設定の [ブランチの詳細] タブで、計画ブランチが自動でクリーンアップされないように指定できます。
|
| トリガーのタイプ | ブランチの設定の [ブランチの詳細] タブにあります。「ビルドのトリガー」をご確認ください。 1 つの計画ブランチに設定できるトリガーは 1 つだけであり、これは master 計画に設定されるすべてのトリガーよりも優先されることにご注意ください。 |
| マージ | ブランチの設定の [ブランチの詳細] タブにあります。以下で説明します。 |
| ソース リポジトリ | ブランチの設定の [ソース リポジトリ] タブにあります。「ソース コード リポジトリへのリンク」を参照してください。 |
| 通知 | ブランチの設定の [通知] タブにあります。オプションは次のとおりです。
計画の通知については、「計画とそのジョブの通知の設定」を参照してください。 |
| Variables | ブランチの設定の [変数] タブにあります。「計画変数を定義する」を参照してください。 |
自動マージの使用
ブランチのマージを自動化する場合、Bamboo には 2 つのマージ モデルが用意されています。
- ブランチ アップデーター - ブランチ リポジトリが master の変更に応じて最新の状態に保たれます。
- ゲートキーパー - 正常にビルドされたブランチが変更された場合にのみ、既定のリポジトリが更新されます。
master 計画の自動ブランチ マージ戦略は、必要に応じて個々の計画ブランチで上書きできます。
ブランチ アップデーター
使用環境
ブランチ アップデーターは、次のような場合に使用してください。
- フィーチャー ブランチを構築する前に、チームの master ブランチからフィーチャー ブランチに自動でマージします。オプションで、ビルドが成功した場合に master に再マージします。
- フィーチャー ブランチの変更がチームの master ブランチに対応しなくなった際に通知を受け取ります。
設定
別のリポジトリの最近の変更をブランチ リポジトリに統合するには、次の手順を実行します。
- ブランチ計画の設定ページの [ブランチの詳細] タブに移動します。
([すべての計画] タブで計画名の横にあるブランチ アイコンをクリックして、[アクション] > [ブランチを設定] を選択します。) - [マージ] で [Branch Merging Enabled (ブランチ マージが有効)] を選択して、[ブランチ アップデーター] をクリックします。
- [Merge From (マージ元)] リストを使用して、フィーチャー ブランチにマージする変更が行われるリポジトリを選択します。
- [成功時にプッシュ] は、ビルドが正常に完了した後で変更をブランチに再マージする場合にのみ選択します。
- 保存をクリックします。
Gatekeeper
使用環境
ゲートキーパーは、次のような場合に使用してください。
- 両方のブランチからマージされた変更が正常にビルドされた後、フィーチャー ブランチをチームの master ブランチに自動でマージします。
- 両方のブランチから結合された変更のビルドが失敗した際に通知を受け取り、フィーチャー ブランチがチームの master ブランチに再マージされないようにします。
設定
正常にビルドされた変更を別のリポジトリにプッシュするには、次の手順を実行します。
- ブランチ計画の設定ページの [ブランチの詳細] タブに移動します。
([すべての計画] タブで計画名の横にあるブランチ アイコンをクリックして、[アクション] > [ブランチを設定] を選択します。) - [マージ] で [Branch Merging Enabled (ブランチ マージが有効)] を選択して、[ゲートキーパー] をクリックします。
- [チェックアウト] リストを使用して、変更をマージする (同時に変更のプッシュ先となる) リポジトリを選択します。
- [成功時にプッシュ] は、ビルドが正常に完了した後で変更を他のリポジトリにプッシュする場合にのみ選択します。
- 保存をクリックします。
計画ブランチの制限事項
計画の自動ブランチングおよびマージには、次の制限が適用されます。
| 操作 | 制限事項 |
|---|---|
| 計画の自動ブランチング |
|
計画の手動ブランチング |
|
| ブランチの自動マージ |
|
ブランチ ウォールボード
ブランチ ウォールボードには、すべてのブランチのステータスと各ブランチが属する計画が表示されます。計画自体のステータスが常に最初に表示されます。灰色で表示される計画は無効になっています。
ブランチ ウォールボードを表示するには、次の手順を実行します。
- 表示するブランチがある計画の [Plan Summary (計画の要約)] に移動します。
- [アクション] > [ブランチ ウォールボード] を選択します。