Kuunda Programu-jalizi

Katika mwongozo huu tutazama katika jinsi ya kuunda programu-jalizi ya Climweb, kujadili usanifu wa programu-jalizi na kutoa mfano wa programu-jalizi ili kupata msukumo kutoka na kujadili jinsi ya kuchapisha programu-jalizi yako.

Usanifu wa programu-jalizi

Programu-jalizi ya ClimWeb kimsingi ni folda iliyopewa jina la programu-jalizi. Folda inapaswa kuwa Programu ya Django/Wagtail

Anzisha programu-jalizi yako kutoka kwa kiolezo cha programu-jalizi

Kiolezo cha programu-jalizi ni kiolezo cha cookiecutter ambacho hutengeneza programu-jalizi yenye muundo na faili zinazohitajika. Hii inahakikisha kuwa programu-jalizi inafuata muundo unaotarajiwa na inaweza kusakinishwa kwa urahisi kwenye climweb.

Ili kusisitiza kiolezo, tekeleza amri zifuatazo kutoka kwenye saraka ambapo unataka kuunda programu-jalizi:

pip install cookiecutter
cookiecutter gh:wmo-raf/climweb --directory plugin-boilerplate

Kwa maelezo zaidi kuhusu kutumia bamba la programu-jalizi, unaweza kufuata mwongozo wa hatua kwa hatua kuhusu kuunda programu-jalizi kwa kutumia bamba la programu-jalizi.

API ya Usakinishaji wa programu-jalizi

Picha ya Climweb docker ina hati zifuatazo za bash ambazo hutumika kusakinisha programu-jalizi. Zinaweza kutumika kusakinisha programu-jalizi kwenye kontena iliyopo ya adl wakati wa utekelezaji. install_plugin.sh inaweza kutumika kusakinisha programu-jalizi kutoka kwa url, git repo au folda ya ndani kwenye mfumo wa faili.

Unaweza kupata hati hizi katika maeneo yafuatayo katika picha zilizojengwa:

  1. /deploy/plugins/install_plugin.sh

Kwenye repo hili, unaweza kupata maandishi kwenye folda ya deploy/plugins.

Maandishi haya yanatarajia programu-jalizi ya ClimWeb kufuata mikusanyiko iliyoelezewa hapa chini:

Muundo wa Faili ya Programu-jalizi

Hati ya install_plugin.sh inatarajia programu-jalizi yako kuwa na muundo maalum kama ifuatavyo:

├── plugin_name
│  ├── climweb_plugin_info.json (A simple json file containing info about your plugin)
|  ├── setup.py
|  ├── build.sh (Called when installing the plugin in a Dockerfile/container)
|  ├── runtime_setup.sh (Called on first runtime startup of the plugin)
|  ├── uninstall.sh (Called when uninstalling the plugin in a container)
|  ├── src/plugin_name/src/config/settings/settings.py (Optional Django setting file)

Folda ina faili tatu za bash ambazo zitaitwa kiotomatiki na hati-jalizi za climweb wakati wa usakinishaji na uondoaji wa programu-jalizi. Unaweza kutumia hati hizi kutekeleza hatua za ziada za ujenzi, usakinishaji wa vifurushi na hatua zingine za uundaji wa kontena zinazohitajika na programu-jalizi yako.

  1. build.sh: Wito wa kuanzisha kontena ikiwa usakinishaji wa wakati wa utekelezaji unafanyika.

  2. runtime_setup.sh: Inaitwa mara ya kwanza ambapo kontena inapowashwa baada ya programu-jalizi kusakinishwa, ni muhimu kwa kutekeleza amri za mtumiaji mkuu kwenye kontena.

  3. uninstall.sh: Wito wa kusakinisha, hifadhidata itapatikana na kwa hivyo uhamishaji wowote wa kurudi nyuma unapaswa kuendeshwa hapa.

Faili ya maelezo ya programu-jalizi

Faili ya climweb_plugin_info.json ni faili ya json, katika folda yako ya programu-jalizi ya msingi, iliyo na metadata kuhusu programu-jalizi yako. Inapaswa kuwa na muundo ufuatao wa JSON:

{
  "name": "TODO",
  "version": "TODO",
  "description": "TODO",
  "author": "TODO",
  "author_url": "TODO",
  "url": "TODO",
  "license": "TODO",
  "contact": "TODO"
}

Muundo wa programu-jalizi unaotarajiwa wakati wa kusakinisha kutoka kwa hazina ya git

Wakati wa kusakinisha programu-jalizi kutoka kwa git, repo inapaswa kuwa na folda ya programu-jalizi moja, ambayo ndani yake kunapaswa kuwa na folda moja ya programu-jalizi inayofuata muundo hapo juu na ina jina sawa na programu-jalizi yako.

Kwa chaguo-msingi, plate ya programu-jalizi hutengeneza hazina iliyo na muundo huu.

Kwa mfano git repo inayolingana inapaswa kuwa na kitu kama:

├─ * (an outermost wrapper directory named anything is allowed but not required) 
│  ├── plugins/ 
│  │  ├── plugin_name
│  |  |  ├── climweb_plugin_info.json
|  |  |  ├── setup.py
|  |  |  ├── build.sh
|  |  |  ├── runtime_setup.sh
|  |  |  ├── uninstall.sh
|  |  |  ├── src/plugin_name/src/config/settings/settings.py (Optional Django setting file)

Plugin Boilerplate

Ukiwa na bati ya programu-jalizi unaweza kuunda programu-jalizi mpya kwa urahisi na kusanidi mazingira ya ukuzaji wa kizimbani ambayo husakinisha adl kama tegemezi. Hii inaweza kusakinishwa kwa urahisi kupitia cookiecutter.

Inaunda programu-jalizi

Ili kutumia boilerplate ya programu-jalizi lazima kwanza usakinishe zana ya Cookiecutter (pip install cookiecutter).

Mara tu unaposakinisha Cookiecutter unaweza kutekeleza amri ifuatayo ili kuunda programu-jalizi mpya ya ADL kutoka kwa kiolezo chetu. Katika mwongozo huu tutaita programu-jalizi yetu "Plugin Yangu ya Climweb", hata hivyo unaweza kuchagua jina lako la programu-jalizi unapoombwa na Cookiecutter.

Note

Moduli ya python inategemea jina lako la programu-jalizi ulilochagua. Ikiwa kwa mfano tutaenda na "My Climweb Plugin" jina la programu ya Django linapaswa kuwa my_climweb_plugin

cookiecutter gh:wmo-raf/climweb --directory plugin-boilerplate
project_name [My Climweb Plugin]: 
project_slug [my-climweb-plugin]: 
project_module [my_climweb_plugin]:

Ikiwa huoni makosa yoyote inamaanisha kuwa programu-jalizi yako imeundwa.

Kuandika Programu-jalizi

Sasa umeunda programu-jalizi, hebu tuende kwa undani zaidi jinsi ya kupanua na kubinafsisha Climweb kwa kutumia programu-jalizi yako.

Jimbo la Uhifadhi

Ikiwa programu-jalizi yako inahitaji kuhifadhi hali, unapaswa kufanya hivi katika:

  • Hifadhidata inayotumiwa na Climweb

  • Kwa kutumia utaratibu chaguo-msingi wa kuhifadhi wa Django

  • Redis inatumiwa na Climweb, lakini kwa hali isiyoendelea kama kache ambayo ni sawa kuharibiwa wakati wowote.

Note

Kamwe usihifadhi hali yoyote kwenye folda yako ya programu-jalizi yenyewe ndani ya kontena. Folda hii inafutwa na kuundwa upya kama sehemu ya mchakato wa usakinishaji wa programu-jalizi na hali yoyote unayohifadhi ndani yake inaweza kupotea.

Kuongeza Mahitaji ya Python

Programu-jalizi yako ni moduli ya kawaida ya chatu ambayo itasakinishwa katika mazingira pepe ya Climweb kwa kutumia pip na install_plugin.sh. Ikiwa unatumia boilerplate ya programu-jalizi unaweza kuongeza mahitaji yoyote ya chatu kwenye faili ya mahitaji ya bomba inayopatikana katika requirements/base.txt.

Kama Programu ya Django/Wagtail

Wakati huduma ya Climweb Django inapoanza hutafuta programu-jalizi zozote kwenye saraka ya programu-jalizi. Ikipata yoyote itachukua src/plugin_name/ folda ndogo ina Programu ya Django na kuiongeza kwenyeINSTALLED_APPS. Hii inamaanisha kuwa programu-jalizi yako lazima iwe programu ya Django/Wagtail ambayo jina lake linalingana kabisa na jina la folda ya programu-jalizi.

Katika programu-jalizi yako ya Django/Wagtail unaweza kufanya chochote ambacho kwa kawaida unaweza kufanya na programu ya Django/Wagtail kama vile kuwa na uhamaji, kwa kutumia mbinu ya tayari() kufanya usanidi wa kuanzisha n.k.

Kuchapisha programu-jalizi yako

Njia rahisi zaidi ya kushiriki programu-jalizi yako na wengine ni kutengeneza hazina ya git ya umma kwa kutumia GitHub, GitLab au mwenyeji mwingine wa git. Mara tu unaposukuma folda yako ya programu-jalizi kwenye hazina ya git basi mtu yeyote anaweza kusakinisha programu-jalizi yako kwa kufuata hatua katika mwongozo wa Ufungaji wa programu-jalizi.