想要自動更新Gitea

3 min

language: ja bn en es hi pt ru zh-cn zh-tw

你好,我是無能。
今天也像往常一樣打錯字了,但我就這樣繼續了。

基本上,我不想過多地操作Git伺服器,也不想考慮太多運營方面的事情,所以我想讓它自動更新。
甚至可以說,這既是Gitea的優點也是缺點,Gitea是一個單一二進位檔,可以簡化前端和後端。
所以只要拉取二進位檔就行了。

如何穩定地保存二進位檔

因此,我想穩定地保存二進位檔,看來可以從Releases獲取。 Releases · go-gitea/gitea · GitHub
也就是說,從這裡拉取保存目標URL應該就可以了。

嘗試調用API

可以通過以下方式獲取下載目標URL。

curl https://api.github.com/repos/go-gitea/gitea/releases/latest | jq -r '.assets[].browser_download_url'

理想情況是從這裡用jq進一步篩選,但看jsonkey:value似乎做不到,所以只能在這之後一直用grep來查找目標二進位檔。※1


※1 經 hymkor (HAYAMA_Kaoru) · GitHub 先生提醒,說「不可能吧」,於是我回想起最近工作中使用jq的時候,成功地只提取了目標對象。

curl https://api.github.com/repos/go-gitea/gitea/releases/latest | jq -r '.assets[] | select(.name | match("linux-amd64$")) | .browser_download_url '

或者

curl https://api.github.com/repos/go-gitea/gitea/releases/latest | jq -r '.assets[] | select(.browser_download_url | match("linux-amd64$")) | .browser_download_url '

所以,說做不到是錯的 (吐舌頭)
剩下的請當作我的胡言亂語吧


因此我這樣做了。

$ curl https://api.github.com/repos/go-gitea/gitea/releases/latest | jq -r '.assets[].browser_download_url' | grep linux-amd64$ 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  171k    0  171k    0     0   291k      0 --:--:-- --:--:-- --:--:--  291k
https://github.com/go-gitea/gitea/releases/download/v1.23.4/gitea-1.23.4-linux-amd64

與當前版本的差異

如果每次都部署新的二進位檔,會浪費流量,所以需要從這裡判斷。
最簡單的方法是檢查當前Gitea的版本,然後對其進行grep -qi

$ gitea -v | awk '{printf $3}'
1.22.4

將其存儲到變數中。

完成

所以就變成這樣了。

#!/bin/bash

# give me root

BINARY_URL=$(curl https://api.github.com/repos/go-gitea/gitea/releases/latest |\
  jq -r '.assets[].browser_download_url' |\
  grep linux-amd64$ )

NOW_GITEA_V=$(gitea -v | awk '{printf $3}')
DAEMON_RESTART="service gitea restart"

if ! echo $BINARY_URL | grep -qi $NOW_GITEA_V ; then
  wget -O gitea $BINARY_URL
  chmod +x gitea || exit 2
  mv gitea /usr/local/bin/gitea
  $DAEMON_RESTART 
else
  exit 0
fi

如果將其放入root的crontab中,它將作為定期腳本執行。
再說,如果chmod失敗,它會exit 2並退出,所以應該不會出現奇怪的行為。

雖然嘴上說Gitea功能太豐富了,但自己卻一直在使用,感覺自己還是不夠成熟。

Related Posts