變更 Netlify 在 Merge request 的留言帳號

一開始先感謝 Netlify 的佛心服務,如果你不知道什麼是 Netlify,非常建議可以搜尋了解一下,分享文很多了這邊不作太多的介紹。

其實很久以前就有聽過 Netlify,但因為沒什麼東西可以放,就也只止於知道而已。一直到某天知道了 Vuepress,後來又知道了 Hexo,才重新想起這個被許多人推薦的服務。

簡單提一下,Netlify 支援 GitHub、GitLab 以及一些常見的服務,個人認為最厲害的有三點:

  1. 免費版就支援 private repo
  2. 可以針對不同分支做 hook 建置(不限制只有主分支可以建立網站,對於有正式和測試分支需求的人來說很好用)
  3. 可以在 PR 或 MR 發生時,幫你建立一個 preview 站,官方稱為「Deploy Previews」也是今天這篇文章誕生的原因

Netlify Deploy Previews

先給大家看一下 Deploy Previews 看起來的畫面:
Netlify Deploy Previews 在 GitLab merge request 底下的留言

如果你就是那個連結的帳號,你自己發 MR,就會看到「你」在 MR 底下留言 preview 建置好囉,某某人用「你」的名義在 MR 底下給了這個 review 回饋等。
因為我已經修改好了,不然留言的人會是我自己,看起來真是頗奇妙(你就是我,我就是你的蜘蛛人.jpg)

有趣的是,GitHub 並沒有這個問題。在 GitHub 上,Netlify 有一個 GitHub App,留言的時候都是下面看到的樣子:

Netlify Deploy Previews 在 GitHub pull request 底下的留言

這邊推測是 GitLab 沒有像是 GitHub Apps 的功能,所以只能用當初連結的 GitLab 帳號來留言。總之不管事實真相為何,看久了(我看第一眼就想改了)可能都會起心動念想修改。我找了幾個關鍵字去搜尋半天,都找不到方法改,中間一度想說不然改 host 在 GitHub 上就好了(我就爛)一直到有次才偶然想通並測試成功。

原來 Google 前幾次就有給我在官方文件上的正確答案了,無奈我英文太爛,誤會官方文件的意思,拖了一點時間才成功。

先上官方文件:
https://docs.netlify.com/site-deploys/notifications/#gitlab-merge-request-comments

其實在 MR 底下留言就是上方網址中的 gitlab-merge-request-comments,可是我那時候腦袋只想著「改變 deploy previews」的行為,就算看到了也當局者迷。(現在為了寫文章重新看了下文件,寫得這麼清楚甚至還有附圖,我還會看不懂,真是服了自己XD)

如果看得懂英文的人,應該早就自己去改好了,不想看文件的請繼續往下看吧~

修改

需求

  1. 一個對 repo 有 Maintainer 或以上權限的帳號
  2. 一個你可以控制的 GitLab 帳號(下稱「機器人帳號」)

沒錯就是這麼簡單,而其實官方也有教你要怎麼做並給出建議:
https://docs.netlify.com/site-deploys/deploy-previews/#reviewer-comments-appear-as-a-different-gitlab-user

大致上就是接下來要講的流程

開始修改

專案加入成員

首先先到要修改的 repo 中,將要用的機器人帳號加進 GitLab 專案。

官方表示至少要 Reporter 權限,不過我個人因為還有其他事情要做,所以給到 Developer 權限。

這部分不懂得可以參考官方文件:https://docs.gitlab.com/ee/user/project/members/#add-users-to-a-project

產生存取憑證

接著登入留言機器人帳號,到設定中產生一組 personal access token,權限按照 Netlify 說法要給 api

按下去之後會產生一組 token,請千萬保存好(至少到設定完之前別弄丟阿)因為重新整理畫面就會從此消失了,就要重新產生。

官方文件:https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html

設定 Netlify Notifications

最後就是要來設定 Netlify 了。請依照路徑 Site settings > Build & deploy > Deploy notifications

請點後方的按鈕修改設定(如上圖紅色框處)

之後請把剛剛產生的 token 貼到圖片中的 API access token 處:

建議設定中已經存在的全部通知都在 token 處貼上儲存一次,關於這些通知所代表的意思可以自行參閱官方文件。

驗收

最後就是測試時間啦,這邊就給大家自己去發布 MR 測試看看囉~

結語

原本看到文件寫的那麼清楚,一度想說放棄不寫這篇了,以免之後被笑。但想想也可以當成做個筆記,增加中文資料,還是寫完了。

不得不說 Netlify 除了佛心外,還設想周到:想到你會想改留言帳號,幫你寫好了功能;想到你可能不會產 token,幫你連結了 GitLab 官方文件;想到你可能沒有額外的 GitLab 帳號,寫了建議要怎麼做的文件。難怪一堆人推薦,現在的我也要加入推坑的一員了(撰寫文章當下已經成功推坑兩個網站了)

之後如果有機會,可能會一一寫文章介紹本站是使用什麼服務建立的等等,不過都是之後有空的事情了。本文就到這邊,大家下次見~