CIを実行して、CI上で静的解析やビルド・テストを実行してコードをクリーンに保つようにしています。Requestがしばらく放置されてしまい、当時はCIのPipelineが成功していたとしても、ターゲットブランチが先に進んでしまってからマージした場合、マージ後のCIが失敗してしまうケースがあります。rebaseしたり最新のターゲットブランチをマージして再Pushして解決することができますが、なかなか面倒です。機能があり、PRのレビュー画面で実行することができます。github.blogGitLabにも似たような機能がないかと探していたら、こんな機能を見つけました。merging.マージ対象のブランチにマージしてからPipelineを実行してくれるらしい。これこれ、と思ってReposirtoyの設定を見てみたら、設定が見当たらない。おかしいなと思ってよく見てみると・・・あー課金ユーザ向けだった。仕方ないので似たようなことができるように自作しました。Request実行時には最初にupdate-branch.shを実行するように設定します。./build.shupdate-branch.shでは最新のターゲットブランチとマージ対象のブランチを作成して、マージ対象のブランチにターゲットブランチをマージします。Request対象のブランチ名はCI_COMMIT_REF_NAMEから取得することができました。HEADでローカル環境のチェックアウトをしているため、CI上でブランチのマージを実行する場合は明示的にブランチを切ってcheckoutする必要がありました。Runnerはshellで実行しているため、ビルド実行後のブランチ情報は毎回残ってしまいます。そのため毎回の実行でブランチ名が一位になるようにコミットハッシュ+実行日時をいれるようにしました。コンフリクトが発生する場合は失敗mergeReuqestBuildは失敗するのでConflictが発生していることがCIの実行時に気づけるようになりました。LT発表してきました。検索はてなブログをはじめよう!takamii228さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。