تم تصميم Gopherbot للأتمتة المرنة وتنسيق البنية التحتية ومهام التطوير لفرق Slack 1 . وهو يدعم البرمجة النصية والمكتبات في Bash 2 وPython وRuby وGo 3 ، مع بنية ديناميكية قائمة على خطوط الأنابيب تدعم سير العمل المعقد متعدد اللغات. يقوم المحرك الأساسي بتمهيد وتحديث روبوتات الفريق الفردية من مستودع git الذي يحتوي على التكوين (معظمه YAML)، والبرامج النصية والمكتبات المستخدمة للأتمتة، مع واجهة برمجة تطبيقات روبوت بسيطة لكل لغة تعمل على تبسيط التفاعلات القائمة على الدردشة وتتبع الحالة والتزامن بشكل كبير.
الشعارات قيد النظر:
يعمل Gopherbot كعملية Linux على خادم/جهاز افتراضي أو حاوية في البنية الأساسية لديك. عند بدء التشغيل، يقوم بفحص بعض متغيرات البيئة اللازمة لاسترداد مستودع git الخاص بالروبوت الخاص بك وبيانات الاعتماد المشفرة، ثم يتصل بمحادثة فريقك. ومن هناك يمكنه الاستجابة لأوامر تشبه واجهة سطر الأوامر (CLI) التي تطابق التعبيرات العادية التي يتم تمرير مجموعات الالتقاط الخاصة بها كوسائط سطر أوامر إلى البرامج النصية المكتوبة بلغة Bash أو Ruby أو Python أو Go 4 . يمكن لهذه المكونات الإضافية تنفيذ أي عدد من الوظائف لتوفير الموارد أو تشغيل التقارير أو نشر البرامج أو التفاعل مع CI/CD - أي وظيفة قد يرغب مهندس DevOps في توفيرها في الدردشة الجماعية. تقوم معظم الروبوتات أيضًا بتنفيذ أي عدد من "مهام" التشغيل الآلي، سواء تمت جدولتها باستخدام أداة cron المضمنة أو يتم تشغيلها بواسطة رسائل خارجية محددة منشورة من مهام آلية خارجية أخرى، مثل إشعار "اكتمال البناء" من CI/CD أو رسالة التزام من جيثب. يمكنك العثور على المزيد من المعلومات في مقدمة الدليل عبر الإنترنت.
يمكن دائمًا العثور على أحدث الوثائق على الدليل الإلكتروني المستضاف على GitHub؛ مصدر الوثائق موجود في مستودع منفصل. يمكن العثور على الوثائق التي تم إنشاؤها تلقائيًا من مصادر Go على pkg.go.dev.
الدليل لا يزال غير مكتمل للغاية. ومع ذلك، في بعض الأحيان يكون أفضل التوثيق هو مثال التعليمات البرمجية. ولتحقيق هذه الغاية، فإن أقوى روبوت لدي وأكثره اكتمالًا هو السيد داتا (متقاعد الآن) - الروبوت الذي كان يدير مجموعة Kubernetes المنزلية الخاصة بي عندما كان لا يزال لدي الوقت لمثل هذه الأشياء. Clu هو روبوت التطوير المستخدم للتطوير وكتابة الوثائق. على الرغم من أن Clu لا يقوم بأي عمل مفيد، إلا أنه لديه أمثلة على معظم جوانب وظائف Gopherbot . يعد Floyd (روبوت مفيد شاركته مع زوجتي) أقدم وأطول مثال للروبوت، على الرغم من تقاعده بعد أن بدأت AWS في تحصيل رسوم مقابل عنوان IP الخاص به.
لقد ظل الإصدار 2 مستقرًا بالنسبة لي لأكثر من عام، وتم إصداره أخيرًا. لقد قبلت أن الدليل المحدث بالكامل سوف يتأخر بشكل كبير، ولكن هذا هو المكان الذي يتم فيه إنجاز معظم العمل حاليًا. من المتوقع الإصدار 3 في الربع الأول من عام 2025، مع الميزات الأساسية التي تتمثل في دعم امتداد Go الديناميكي (متوفر بالفعل في الإصدار 2.15.0) وترحيل جميع الميزات الأساسية إلى امتدادات Go الديناميكية لتقليل تبعيات التمهيد.
إذا كان لديك Docker متاحًا، فيمكنك تشغيل الإطارات على الروبوت الافتراضي الذي يقوم بتشغيل الموصل الطرفي :
$ docker run -it --rm ghcr.io/lnxjedi/gopherbot
...
Terminal connector running; Type '|c?' to list channels, '|u?' to list users
...
general: *******
general: Welcome to the *Gopherbot* terminal connector. Since no configuration was
detected, you're connected to 'floyd', the default robot.
general: If you've started the robot by mistake, just hit ctrl-D to exit and try
'gopherbot --help'; otherwise feel free to play around with the default robot - you
can start by typing 'help'. If you'd like to start configuring a new robot, type:
';setup slack'.
c:general/u:alice -> help
...
للحصول على معاينة أكثر شمولاً لـ Gopherbot في IDE ، راجع قسم المعاينة في الدليل عبر الإنترنت.
يمكنك تنزيل أحدث إصدار من صفحة الإصدار. يمكن العثور على إصدارات الحاويات المحدثة في GitHub Container Registry.
تقوم خطوط أنابيب Gopherbot CI/CD بإنشاء نوعين مختلفين من الحاوية:
ghcr.io/lnxjedi/gopherbot
gopherbot
عبارة عن حاوية gopherbot صغيرة جدًا لتشغيل روبوت الإنتاج في حاوياتghcr.io/lnxjedi/gopherbot-dev
gopherbot-dev
خادم OpenVSCode لنقطة الدخول، وهو مخصص للاستخدام في إعداد وتطوير الملحقات لبرامج الروبوت الخاصة بك 5 يعد البناء من المصدر أمرًا مباشرًا تمامًا مثل make dist
باستخدام Makefile
، طالما أن نظام البناء لديه جميع المتطلبات.
متطلبات:
خطوات:
git checkout v2.6.2.1
make dist
في جذر المستودع لإنشاء أرشيف قابل للتثبيت، أو make
فقط بإنشاء الثنائياتهذا النص النموذجي قديم بعض الشيء، ولا يعرض وظيفة الوظيفة الجديدة المقدمة في الإصدار 2 - ولكن Gopherbot لا يزال يعرف كيفية إلقاء النكات.
تمت إزالة منفذي Windows وDarwin (MacOS). أفضل حل لهذه المنصات هو الاستفادة من دعم حاوية Linux الممتاز لتشغيل الروبوت الخاص بك في حاوية، ربما باستخدام Docker Desktop. يعد WSL أيضًا حلاً جيدًا لنظام التشغيل Windows.
#!/usr/bin/ruby
require 'net/http'
require 'json'
require 'gopherbot_v1'
bot = Robot . new ( )
defaultConfig = <<'DEFCONFIG'
Help:
- Keywords: [ "weather" ]
Helptext: [ "(bot), weather in <city(,country) or zip code> - fetch the weather from OpenWeatherMap" ]
CommandMatchers:
- Command: weather
Regex: '(?i:weather (?:in|for) (.+))'
DEFCONFIG
# NOTE: the required environment variables need to be supplied as
# `Parameters` for the `weather` plugin in custom/conf/robot.yaml.
# The API key should be encrypted.
command = ARGV . shift ( )
case command
when "configure"
puts defaultConfig
exit
when "weather"
location = ARGV . shift ( )
location += ", #{ ENV [ "DEFAULT_COUNTRY" ] } " unless location . include? ( ',' )
uri = URI ( "http://api.openweathermap.org/data/2.5/weather?q= #{ location } &units= #{ ENV [ "TEMP_UNITS" ] } &APPID= #{ ENV [ "OWM_APIKEY" ] } " )
d = JSON :: parse ( Net :: HTTP . get ( uri ) )
if d [ "message" ]
bot . Say ( "Sorry: " #{ d [ "message" ] } " , maybe try the zip code?" )
else
w = d [ "weather" ] [ 0 ]
t = d [ "main" ]
bot . Say ( "The weather in #{ d [ "name" ] } is currently " #{ w [ "description" ] } " and #{ t [ "temp" ] } degrees, with a forecast low of #{ t [ "temp_min" ] } and high of #{ t [ "temp_max" ] } " )
end
end
ترحيب العلاقات العامة. من أجل التطوير والاختبار والتعاون، لا تتردد في مراسلتي عبر البريد الإلكتروني لدعوة فريق LinuxJedi Slack.
يمتلك Gopherbot واجهة معيارية لكتابة موصلات البروتوكول الأخرى في Go؛ حاليًا يتم دعم Slack والموصل الطرفي فقط ↩
لا تدعم مكتبة bash الحالية الذكريات طويلة المدى، على الرغم من التخطيط لدعم محدود للإصدار 3 ↩
منذ الإصدار 2.15، يدعم Gopherbot امتدادات Go المحملة ديناميكيًا عبر Yaegi، ولكن يتم دعم stdlib وGopherbot API فقط ↩
Go هو الاستثناء لهذا النمط؛ بدلاً من ذلك، تحدد امتدادات Go وظائف المعالج التي يتم تمرير كائن "روبوت" ووسائط سلسلة إليها. ↩
لاحظ أن حاوية التطوير تحتوي دائمًا على أحدث التعليمات البرمجية في /opt/gopherbot
- قد ترغب في ذلك، على سبيل المثال cd /opt/gopherbot; git checkout v2.6.2.1; make
↩