Gitea-কে স্বয়ংক্রিয়ভাবে আপডেট করতে চাই

5 min

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

নমস্কার, আমি অযোগ্য।
আজও টাইপো করেছি, কিন্তু এভাবেই রেখে দেবো।

মূলত, আমি গিট সার্ভার নিয়ে বেশি ঘাঁটাঘাঁটি করতে বা অপারেশনাল বিষয় নিয়ে ভাবতে চাই না, তাই আমি এটিকে স্বয়ংক্রিয়ভাবে আপডেট করতে চাই।
যদি কিছু হয়, Gitea-এর একটি ভালো এবং খারাপ দিক উভয়ই হল যে এটি একটি একক বাইনারি, যা ফ্রন্টএন্ড এবং ব্যাকএন্ড উভয়কেই সরল করে।
সুতরাং, আমাকে শুধু বাইনারিটি টানতে হবে।

কীভাবে বাইনারিটি স্থিতিশীলভাবে সংরক্ষণ করবেন

সুতরাং, আমি বাইনারিটি স্থিতিশীলভাবে সংরক্ষণ করতে চাই, এবং মনে হচ্ছে এটি Releases থেকে পাওয়া যাবে। Releases · go-gitea/gitea · GitHub
অন্য কথায়, মনে হচ্ছে এখান থেকে ডাউনলোড URLটি টানলেই হবে।

এপিআই কল করার চেষ্টা করছি

নিম্নলিখিত উপায়ে ডাউনলোড 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 খুব বেশি ফিচার-সমৃদ্ধ বলা সত্ত্বেও, আমি নিজেকে এটি ব্যবহার করতে দেখছি, যা আমাকে কিছুটা অযোগ্য মনে করায়।

Related Posts