basyura's blog

あしたになったらほんきだす。

GitLab - Merge Request からマージした時にフックで蹴られると応答なしになる (様に見える

Merge Request で Web 上からマージをした際にフックで蹴られると UI では Accept Merge Request のボタンがグルグルするだけで返ってこなくなる。実際には応答が返ってきているのだけど、javascript でエラーが発生してメッセージの書き換えに失敗している。せっかくマージリクエストの運用を始めようと思ったところでこれは辛い。Issue もあって Bug のラベルが貼られているけど 2 週間経っても動きがない。辛い。

辛いのでチラ見してみたら直せそうだったのでやってみた。

diff --git a/app/assets/javascripts/merge_request_widget.js.es6 b/app/assets/javascripts/merge_request_widget.js.es6
index 56c87af..f922a50 100644
--- a/app/assets/javascripts/merge_request_widget.js.es6
+++ b/app/assets/javascripts/merge_request_widget.js.es6
@@ -101,7 +101,7 @@
               urlSuffix = deleteSourceBranch ? '?deleted_source_branch=true' : '';
               return window.location.href = window.location.pathname + urlSuffix;
             } else if (data.merge_error) {
-              return this.$widgetBody.html("<h4>" + data.merge_error + "</h4>");
+              return $('.mr-widget-body').html("<h4>" + data.merge_error + "</h4>");
             } else {
               callback = function() {
                 return merge_request_widget.mergeInProgress(deleteSourceBranch);

js を反映するために assets を反映。この際にパーミッションのエラーが出るので一時的に変えておく。

$ cd /opt/gitlab/embedded/service/gitlab-rails/public
$ chmod 777 assets

assets の作り直し。

$ gitlab-rake assets:clean assets:precompile
$ gitlab-ctrl restart

権限を戻す

$ chmod 755 assets

フックから返ってくるのは html というよりプレーンテキストであることが多いと思うので <h4> じゃなくて <pre> の方が良いと思う。

Merge Request を出したいのだけど、出し方をまだ勉強してないのでひとまずここまで。Issue に進展がなければやってみる。