[筆記]Gitea+Drone+Telegram on Docker心得

 

最近在弄新的Flow弄的有點昏頭,這邊稍微記錄一下過程

各種踩坑的心得

一開始會用這個Flow主要是為了脫離Jenkins老爺爺的環境,因為公司有蠻多案子都不是用Java,而且有些雲端的套件都太久了,不見得可以用。

後來想用新的架構則是因為剛好都可以用docker搞定,雖然後來也踩了一堆坑,不過在前面是用Caddy做反向,不過這東西不是用docker就不特別提了。

以下有幾點要注意

Drone對postgres有特別優化

基於這一點,所以原本我用MySQL架,但是調整到Drone之後,就直接砍掉換postgres了,docker的好處就在這,說換就換很直接。

Drone使用的網路名稱要一致

網路上很多相關的docker-compose檔可以看,但是drone-server跟drone-agent對接使用的網路在參數上要一致,docker-agent起來沒接到drone-server也不會重啟,就算你有設定restart: always;在設定上如果是用新版本的docker-compose架設的話(比方說3.7之類的),可以先用docker networks ls看一下跟參數裡的DRONE_RUNNER_NETWROKS要一樣,然後drone-server跟drone-agent都要有DRONE_RUNNER_NETWROKS,而且內容要一樣。

Gitea在設定給Drone OAuth2的時候,callback的位置要注意

我在這邊卡了一段時間,後來看了一下一定要在最後面加上/login,比方說https://yourdomain.com/login這樣,沒設定對的話在call back就會直接噴URL不符合。

Gitea的ROOT_URL、SSH_DOMAIN、DOMAIN要設對

這邊會影響的是Drone到時候取到資料的問題,最快的方式就是以Drone的角度去看比較準,所以像是我前面有用Caddy架設SSL和反向代理的關係,所以我在ROOL_URL這邊就是直接用https,然後後面就直接接外網連進來的domain最後不加port。

Drone在pull git的時候要記得三個參數要設對

DRONE_GIT_ALWAYS_AUTH我沒記錯預設是關閉,如果要拉的repo是公開的就沒差,但是如果是自己的私有repo就要打開,不然不會登入,然後這個參數打開後,DRONE_GIT_USERNAMEDRONE_GIT_PASSWORD這兩個就要記得填了。

Telegram的telegram_user_id幾種取法

一種是機器人,另一種是用URL的方式取得https://api.telegram.org/bot{$token}/getUpdates,因為Drone的telegram只有講用BOT取得,所以找到了第二個方法可以使用。