マージ結果パイプライン
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
マージ結果パイプラインは、ソースブランチとターゲットブランチをマージした結果に対して実行されます。マージリクエストパイプラインの一種です。
GitLabはマージ結果で内部コミットを作成するため、パイプラインはそれに対して実行できます。このコミットはいずれのブランチにも存在しませんが、パイプラインの詳細で表示できます。内部コミットの作成者は常に、マージリクエストを作成したユーザーとなります。
パイプラインは、パイプラインを実行した時点でのターゲットブランチに対して実行されます。ソースブランチで作業している間、ターゲットブランチは変更される可能性があります。マージ結果が正確であることを確認したい場合は、いつでもパイプラインを再実行できます。
ターゲットブランチに変更があり、それがソースブランチの変更と競合する場合、マージ結果パイプラインは実行できません。このような場合、パイプラインはマージリクエストパイプラインとして実行され、merge requestとしてラベル付けされます。
前提要件
マージ結果パイプラインを使用するには、次の前提要件を満たす必要があります:
- プロジェクトの
.gitlab-ci.ymlファイルが、マージリクエストパイプラインでジョブを実行するように設定されている必要があります。 - リポジトリは、外部リポジトリではなく、GitLabリポジトリである必要があります。
マージ結果パイプラインを有効にする
プロジェクトでマージ結果パイプラインを有効にするには、少なくともメンテナーロールが必要です:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定>マージリクエストを選択します。
- マージオプションセクションで、マージされた結果のパイプラインを有効にするを選択します。
- 変更を保存を選択します。
マージリクエストパイプラインを使用するようにパイプラインを設定しないと、チェックボックスをオンにしても、マージリクエストが未解決の状態のままになったり、パイプラインがドロップされたりする可能性があります。
トラブルシューティング
rules:changes:compare_toでジョブまたはパイプラインが予期せず実行される
マージリクエストパイプラインでrules:changes:compare_toを使用すると、ジョブまたはパイプラインが予期せず実行されることがあります。
マージ結果パイプラインでは、GitLabが作成する内部コミットが、比較対象のベースとして使用されます。このコミットには、MRブランチの先端よりも多くの変更が含まれている可能性があり、予期しない結果が生じます。
成功したマージ結果パイプラインが失敗したブランチパイプラインをオーバーライドする
パイプラインが完了している設定が有効になっている場合、失敗したブランチパイプラインが無視されることがあります。この問題を追跡するために、イシュー385841がオープンになっています。