Drone:There was a problem enabling your repository 問題與查找

此問題發生在首次啟用 Drone的時候,狀況為首次進入點選Active Repository後,就會出現下面畫面:

開啟Drone Debug mode(DRONE_LOGS_DEBUG=true)後,觀察log,發現到錯誤訊息中,出現:api: cannot create or update hook 這個訊息,研判可能是權限不足所造成的錯誤。

權限設定問題

但仔細檢查過權限設定後,已經確認該設的權限都已經設定,故此原因可排除。

GitLab Application 設定畫面

與Drone作者之一的 Bo-Yi Wu 討論後,Wu建議可以從下列幾個方向去找:

  • 權限設定問題(排除)
  • GitLab 版本問題
  • 公司內網路環境問題
  • GitLab 系統設定問題

GitLab 版本問題

先把Docker image更改為官方版 GitLab-CE 後,重新啟動。發現還是同樣錯誤訊息:There was a problem enabling your repository.,但多了 Not Found. 訊息。查Drone的log,出現:api: write access required 的錯誤訊息。與之前錯誤訊息不一樣。

網路本身問題

綜合上面觀察,Drone在建立 hook 的時候出現無權限會找不到的問題發生。在GitLab log上有看到Drone的連線,但出現無權限。因此判定網路應該有通。

GitLab 系統設定問題

經查詢網路相關問題後,發現這篇有提到:基於安全問題,因此不允許 localhost(包含相同IP及指到同IP的網址)連自己。因此,使用admin@example.com帳號登入,點擊:Admin Area -> Settings -> Integration -> Outbound Request,將Allow requests to the local network from hooks and services 勾選後存檔,允許由localhost 登入。

取得 Drone Token

進入Drone系統 -> 底選右上角 User Settings,將 Personal Token 記錄下來。

GitLab Integrations 設定

進入GitLab ->Admin Area -> 左下 Settings -> Integrations -> 選取 Drone CI -> 將 Active 打勾,並填入剛剛取得的Token及Drone網址。

設定完成後,回到Drone 按下 Active後,Drone 就可以與你的GitLab相通。

參考資料