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