Sawubona!
Igama lam nguSergey, ndisebenza njengenjineli yeziseko zophuhliso kwiqela le-API yeqonga letinkoff.ru.
Kweli nqaku ndiza kuthetha ngeengxaki iqela lethu elijongene nazo xa lilungiselela abalinganisi ngokusekelwe kuzo
I-Nginx yi-multifunctional kwaye iphuhlisa ngokusebenzayo iseva yommeleli. Ibonisa inani elikhulu leemodyuli,
Singathanda ukubona inguqulelo entsha eneseti efunekayo yeemodyuli, esebenza phantsi konikezelo oluthile lweLinux. Kwimeko yethu, ezi ziinkqubo ezisekwe kwi-deb- kunye ne-rpm. Inketho enezikhongozeli ayiqwalaselwa kweli nqaku.
Sifuna ukutshintsha ngokukhawuleza ukusebenza kwabalinganisi bethu. Kwaye apha umbuzo uvela ngokukhawuleza: njani ukufezekisa oku ngelixa uchitha izixhobo ezimbalwa ngangokunokwenzeka? Kuya kuba ngcono ngakumbi ukuseta inkqubo ukuze sikwazi ukukhankanya inani eliqinisekileyo leeparamitha zongeniso, kwaye kwisiphumo sifumane i-artifact ngendlela ye-deb/rpm package ye-OS efunwayo.
Ngenxa yoko, iingxaki ezininzi zinokuqulunqwa:
- Akusoloko kukho iipakethe ezinenguqulelo yamva nje yeNginx.
- Akukho zipakethe ezineemodyuli ezifunekayo.
- Ukuqulunqa kunye nokwakha ipakethe ngesandla kudla ixesha kwaye kuyadinisa.
- Akukho nkcazo yendlela le okanye loo mzekelo weNginx uhlanganiswe ngayo.
Ukucombulula ezi ngxaki, imfuno ivela kwisixhobo esiya kuthatha njengegalelo kwinkcazo kwifomathi efundeka ngumntu kwaye ihlanganise iphakheji ye-Nginx kunye nokusebenza okuyimfuneko ngokusekelwe kuyo.
Ukungafumani ukhetho olufanelekileyo kuthi kubukhulu beGithub, sigqibe kwelokuba senze esathu isixhobo-
Iinkcukacha
Kwisixhobo sethu, besifuna ukwenza inkcazo yenkcazo ngendlela yekhowudi, enokuthi ifakwe kwindawo yokugcina iGit. Ukwenza oku, sikhethe ifomathi eqhelekileyo kwizinto ezinjalo - yaml. Umzekelo wokuchaza:
nginx_version: 1.14.1
output_package: deb
modules:
- module:
name: nginx-auth-ldap
git_url: https://github.com/kvspb/nginx-auth-ldap.git
git_branch: master
dependencies:
- libldap2-dev
- module:
name: ngx_http_substitutions_filter_module
git_url: https://github.com/yaoweibin/ngx_http_substitutions_filter_module.git
- module:
name: headers-more-nginx-module
web_url: https://github.com/openresty/headers-more-nginx-module/archive/v0.261.zip
- module:
name: nginx-module-vts
git_url: https://github.com/vozlt/nginx-module-vts.git
git_tag: v0.1.18
- module:
name: ngx_devel_kit
git_url: https://github.com/simplresty/ngx_devel_kit.git
git_tag: v0.3.0
- module:
name: ngx_cache_purge
git_url: https://github.com/FRiCKLE/ngx_cache_purge.git
- module:
name: ngx_http_dyups_module
git_url: https://github.com/yzprofile/ngx_http_dyups_module.git
- module:
name: nginx-brotli
git_url: https://github.com/eustas/ngx_brotli.git
git_tag: v0.1.2
- module:
name: nginx_upstream_check_module
git_url: https://github.com/yaoweibin/nginx_upstream_check_module.git
- module:
name: njs
git_url: https://github.com/nginx/njs.git
git_tag: 0.2.5
config_folder_path: nginx
Apha sibonisa ukuba sifuna ukubona iphakheji ye-deb kunye ne-Nginx version 1.14.2 kunye neeseti ezifunekayo zeemodyuli. Icandelo elineemodyuli linokukhetha. Ngamnye kubo unokuseta:
- Igama.
- Idilesi apho unokuyifumana khona:
- Uvimba weGit. Ungakhankanya kwakhona isebe okanye ithegi.
- Gcina ikhonkco lewebhu.
- Ikhonkco lendawo kwindawo yokugcina.
Ezinye iimodyuli zifuna ukuxhomekeka okongeziweyo ukuba kufakwe, umzekelo i-nginx-auth-ldap ifuna i-libldap2-dev ehlohliweyo. Ukuxhomekeka okuyimfuneko kunokuchazwa xa kuchazwa imodyuli.
Yendalo
Kwisixhobo sethu unokufumana indawo engqongileyo ngokukhawuleza enezixhobo ezifakiweyo zokuhlanganiswa, indibano yephakheji kunye nezinye iisoftware ezincedisayo. Isikhongozeli seDocker esinayo yonke into oyifunayo ilungile apha (indawo yokugcina sele inemizekelo embalwa yeefayile zeDocker zobuntu kunye neecentos).
Emva kokuba inkcazo yenziwe kwaye indalo ilungisiwe, sisungula umakhi wethu, sele efakele ukuxhomekeka kwayo ngaphambili:
pip3 install -r requirements.txt
./main.py build -f [ΠΊΠΎΠ½ΡΠΈΠ³_ΡΠ°ΠΉΠ»].yaml -r [Π½ΠΎΠΌΠ΅Ρ_ΡΠ΅Π²ΠΈΠ·ΠΈΠΈ]
Inombolo yohlaziyo apha ayinyanzelekanga kwaye isetyenziselwa uguqulelo lweendibano. Ibhalwe kulwazi lwemeta yephakheji, ikwenza kube lula ukuhlaziya kwiiseva.
Ukusuka kwizigodo unokubeka iliso okwenzekayo. Nanku umzekelo weengongoma eziphambili:
builder - INFO - Parse yaml file: example.config.yaml
builder - INFO - Download scripts for build deb package
builder - INFO - Downloading nginx src...
builder - INFO - --> http://nginx.org/download/nginx-1.14.1.tar.gz
builder - INFO - Downloading 3d-party modules...
builder - INFO - Module nginx-auth-ldap will download by branch
builder - INFO - -- Done: nginx-auth-ldap
builder - INFO - -- Done: ngx_http_substitutions_filter_module
builder - INFO - Module headers-more-nginx-module will downloading
builder - INFO - Module nginx-module-vts will download by tag
builder - INFO - -- Done: nginx-module-vts
builder - INFO - Module ngx_devel_kit will download by tag
builder - INFO - -- Done: ngx_devel_kit
builder - INFO - -- Done: ngx_cache_purge
builder - INFO - -- Done: ngx_http_dyups_module
builder - INFO - Downloading dependencies
builder - INFO - Building .deb package
builder - INFO - Running 'dh_make'...
builder - INFO - Running 'dpkg-buildpackage'...
dpkg-deb: building package 'nginx' in '../nginx_1.14.1-1_amd64.deb'.
Ke, ngemiyalelo nje embalwa, senza okusingqongileyo kunye nendibano yeNginx efunekayo, kwaye iphakheji ibonakala kulawulo ukusuka apho iskripthi siqaliswe khona.
Ukufakela
Sinokudibanisa isixhobo sethu kwiinkqubo zeCI/CD. Naziphi na iinkqubo ezininzi zeCI ezikhoyo namhlanje zinokunceda ngale nto, umzekelo
Ngenxa yoko, ngalo lonke ixesha utshintsho oluchaziweyo kwindawo yokugcina iGit, ukwakhiwa kwe-artifact kuqaliswa ngokuzenzekelayo. Inombolo yohlaziyo idityaniswe nekhawuntara yokuqalisa ukwakha.
Ngexesha elincinci, ungaqwalasela i-artifact ukuba ithunyelwe kwindawo yakho yokugcina ipakethe, i-Nexus, i-Artifactory, njalo njalo.
Inzuzo eyongezelelweyo kukuba ifayile yoqwalaselo ye-yaml inokudityaniswa kwi-Ansible okanye enye inkqubo yoqwalaselo oluzenzekelayo, kwaye ukusuka apho sinokuthatha inombolo yenguqulo kunye nohlobo lwephakheji esifuna ukuyifaka.
Yintoni elandelayo
Iprojekthi ayikagqitywa. Nantsi into esisebenza ngayo ngoku:
- Sandisa amathuba okucwangciswa, kodwa kwangaxeshanye sigcine silula kangangoko. Awufuni ukuchaza iwaka leeparamitha ukuba ufuna ezimbini kuphela, kwaye ezinye zilingana ngokuzenzekelayo. Oku kuquka iiflegi zokuqokelela (ngoku unokuzitshintsha kwifayile yoqwalaselo yangaphakathi src/config.py), indlela yokufaka, kunye nokuqaliswa komsebenzisi.
- Songeza iinketho zokuthumela ipakethe ngokuzenzekelayo kwiindawo ezahlukeneyo zokugcina izinto zakudala.
- Yenza umyalelo wesiko xa ulayisha imodyuli (umzekelo, ukusebenzisa
github.com/nginx-modules/nginx_upstream_check_module kufuneka uqale ufake isiqwenga sohlobo oluthile) - Ukongeza iimvavanyo:
- Iphakheji ifakwe ngokuchanekileyo.
- I-Nginx inenguqu efunekayo kwaye yakhiwe ngeeflegi ezifunekayo kunye neemodyuli.
- Iindlela eziyimfuneko, iiakhawunti, njalo njalo ziyadalwa.
Kodwa ungasebenzisa esi sixhobo ngoku, kwaye ucebise uphuculo-
umthombo: www.habr.com