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:
/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.
build.sh: Wito wa kuanzisha kontena ikiwa usakinishaji wa wakati wa utekelezaji unafanyika.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.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.