5.5. ジョブブランチの上書き
プロジェクトは、scm_branch
フィールドでソースコントロールから使用するブランチ、タグ、または参照を指定します。これらは、Type Details フィールドで指定された値によって表されます。
ジョブの作成または編集時には、Allow branch override のオプションがあります。このオプションをオンにすると、プロジェクト管理者は、そのプロジェクトを使用するジョブテンプレートにブランチの選択を委任でき、use_role
プロジェクトのみが必要です。
5.5.1. ソースツリーのコピー動作
実行されるすべてのジョブには独自のプライベートデータディレクトリーがあります。このディレクトリーには、ジョブが実行されている特定の scm_branch
のプロジェクトソースツリーのコピーが含まれています。ジョブはプロジェクトフォルダーに自由に変更を加え、実行中にその変更を利用できます。このフォルダーは一時的なフォルダーであり、ジョブの実行の終了時に削除されます。
Clean オプションをオンにすると、変更されたファイルは Automation Controller のリポジトリーのローカルコピーから削除されます。対応の Ansible モジュールで、git または Subversion に関連する Force パラメーターを使用することで削除します。
関連情報
詳細は、Ansible ドキュメントの パラメーター セクションを参照してください。
5.5.2. プロジェクトのリビジョンの動作
プロジェクトの更新中、デフォルトブランチ (プロジェクトの Source control branch フィールドで指定) のリビジョンが更新時に保存されます。ジョブにデフォルト以外の Source control branch (コミットハッシュやタグではない) を指定すると、ジョブが開始される直前に、最新のリビジョンがソースコントロールリモートから取得されます。このリビジョンは、ジョブとそのプロジェクトの更新の Source control revision フィールドに表示されます。
その結果、デフォルト以外のブランチではオフラインジョブを実行できません。ジョブがソースコントロールからの静的バージョンを実行していることを確認するには、タグまたはコミットハッシュを使用します。プロジェクトの更新ではすべてのブランチが保存されるのではなく、プロジェクトのデフォルトブランチのみが保存されます。
Source control branch フィールドは検証されていないため、有効であることを確認するためにプロジェクトを更新する必要があります。このフィールドが指定されたり、要求されたりした場合には、ジョブテンプレートの Playbook フィールドは検証されず、ジョブテンプレートを起動して、必要とされる Playbook が存在するかを確認する必要があります。
5.5.3. Git Refspec
Source control refspec フィールドは、更新時にリモートからダウンロードする追加参照を指定します。例としては次のようなものがあります。
-
refs/:refs/remotes/origin/
: これは、リモートのリモートを含むすべての参照を取得します。 -
refs/pull/:refs/remotes/origin/pull/
(GitHub 固有): これは、すべてのプルリクエストのすべての ref を取得します。 -
refs/pull/62/head:refs/remotes/origin/pull/62/head
: これは、1 つの GitHub プルリクエストの参照を取得します。
大規模なプロジェクトの場合、最初の例または 2 番目の例を使用する際はパフォーマンスへの影響を考慮してください。
Source control refspec パラメーターは、プロジェクトブランチの可用性に影響を与え、他の方法では利用できない参照へのアクセスを可能にすることができます。前の例を使用して、Source control branch からプルリクエストを提供します。これは Source control refspec フィールドがないと不可能です。
Ansible git モジュールは、デフォルトで refs/heads/
をフェッチします。つまり、Source control refspec が空白の場合、プロジェクトのブランチ、タグ、コミットハッシュを Source control branch として使用できます。Source control refspec フィールドで指定された値は、オーバーライドとして使用できる Source control branch フィールドに影響します。プロジェクトの更新 (タイプを問わず) は、追加の git fetch
コマンドを実行して、その refspec をリモートからプルします。
例
最初または 2 番目の refspec サンプルを使用して、ブランチオーバーライドを有効にするプロジェクトを設定できます。Source control branch を要求するジョブテンプレートでこれを使用します。その後、クライアントは新しいプルリクエストの作成時にジョブテンプレートを起動でき、pull/N/head
ブランチを提供して、ジョブテンプレートは、提供された GitHub プルリクエスト参照に対して実行できます。
関連情報
詳細は、Ansible git モジュール を参照してください。