Gitea को स्वचालित रूप से अपडेट करना चाहता हूँ
नमस्ते, मैं अक्षम हूँ।
आज भी मैंने टाइपो किया, लेकिन मैं इसे ऐसे ही रहने दूँगा।
मूल रूप से, मैं 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 के साथ और अधिक फ़िल्टर करना चाहता हूँ, लेकिन json के key: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
यदि इसे रूट के क्रॉनटैब में रखा जाता है, तो यह एक आवधिक स्क्रिप्ट के रूप में चलेगा।
सबसे पहले, यदि chmod विफल हो जाता है, तो यह exit 2 के साथ बाहर निकल जाएगा, इसलिए कोई अजीब व्यवहार होने की संभावना नहीं है।
मैं खुद महसूस करता हूँ कि Gitea बहुत समृद्ध है, फिर भी मैं इसका उपयोग कर रहा हूँ, यह मेरी कमी है।