Hagaha CI/CD gudaha GitLab ee (ku dhawaad) bilawga saxda ah
Ama sidaad ugu heli lahayd calaamado qurux badan mashruucaaga hal fiid oo si fudud codayntu u socoto
Malaha, horumariye kasta oo leh ugu yaraan hal mashruuc xayawaan ah mararka qaarkood wuxuu leeyahay cuncun ku saabsan calaamado qurux badan oo leh statuses, code cover, versions pack in nuget ... Oo cuncunkani wuxuu ii horseeday inaan qoro maqaalkan. Isku diyaarinta qoraalkeeda, waxaan ka helay quruxdan mid ka mid ah mashaariicdayda:
Maqaalkani wuxuu ku dhex socon doonaa habka aasaasiga ah ee isdhexgalka joogtada ah iyo gaarsiinta mashruuca maktabadda fasalka Net Core ee GitLab, daabacaadda dukumeentiyada Bogagga GitLab, iyo riixida baakadaha la dhisay quudinta gaarka ah ee Azure DevOps.
VS Code waxaa loo isticmaalay sidii deegaanka horumarinta ee kordhinta Socodka shaqada ee GitLab (si loo ansixiyo faylka dejinta si toos ah deegaanka horumarinta).
Hordhac kooban
CD - ma marka aad kaliya riixday, oo wax walba ay mar hore ku dhaceen macmiilka?
Waa maxay CI / CD iyo sababta aad ugu baahan tahay - si fudud ayaad u geli kartaa google. Soo hel dukumeenti dhamaystiran oo ku saabsan habaynta dhuumaha gudaha GitLab sidoo kale fudud. Halkan waxaan si kooban iyo, haddii ay suurtogal tahay, iyada oo aan cillad lahayn ku tilmaami doonaa habka nidaamka marka loo eego aragtida shimbiraha:
horumariyahu waxa uu u soo diraa ballan qaadka kaydka, waxa uu ka abuuraa codsi isku darka goobta, ama si kale, si cad ama si aan toos ahaynba u bilaaba dhuumaha,
Dhammaan hawlaha waxaa laga soo xulay qaabeynta, shuruudaha u oggolaanaya in lagu bilaabo macnaha guud,
hawlaha waxaa loo habeeyey iyadoo loo eegayo heerarkooda.
marxaladaha ayaa la fuliyaa markooda - i.e. isbarbar socda Dhammaan hawlaha marxaladdan waa la dhammaystiray,
hawl (shaqo) waa unug shaqo oo dhuumaha ku jira. Waxa ay ka kooban tahay qoraal (qasab ah), shuruudaha bilaabista, habaynta daabacaadda/caching artifacts, iyo wax ka badan.
Sidaa darteed, hawshu marka la dejinayo CI / CD waxay ku soo degtaa abuurista hawlo shaqo oo fulinaya dhammaan tallaabooyinka lagama maarmaanka u ah dhismaha, tijaabinta iyo daabacaadda koodka iyo agabka.
Kahor intaadan bilaabin: waayo?
Waa maxay sababta Gitlab?
Sababtoo ah markii ay lagama maarmaan noqotay in la abuuro meelo gaar ah oo loogu talagalay mashaariicda xayawaanka, waxaa lagu bixiyay GitHub, aniguna waan hunguri jiray. Kaydyadu waxay noqdeen bilaash, laakiin ilaa hadda tani maaha sabab igu filan oo aan ugu guuro GitHub.
Waa maxay sababta aysan Azure DevOps Tubooyinka?
Sababtoo ah halkaas goobtu waa dugsi hoose - aqoonta khadka taliska xitaa looma baahna. Isdhexgalka bixiyayaasha git dibadda - dhowr jeer oo gujis ah, soo dejinta furayaasha SSH si loogu diro ballan-qaadyada bakhaarka - sidoo kale, dhuumaha si fudud ayaa loo habeeyaa xitaa ma aha qaab qaabaysan.
Nuqul ka samee calaamada la sameeyay - ka dib marka daaqada modalku xidho, qiimihiisu lama heli doono
Tag goobaha kaydka ee GitLab, dooro goobaha CI/CD
Kordhi blockka Variables, ku dar mid cusub
Magaca - mid kasta oo aan bannaanayn (waxaa lagu heli karaa qolofka taliska)
Qiimaha - calaamada gelitaanka ee cutubka 9
Dooro doorsoome maaskaro
Tani waxay dhamaystiraysaa habaynta ka hor.
Diyaarinta qaabka qaabeynta
Sida caadiga ah, qaabeynta CI/CD ee GitLab waxay isticmaashaa faylka .gitlab-ci.yml laga bilaabo xididka kaydka. Waxaad u dejin kartaa waddo aan sabab lahayn faylkan goobaha kaydka, laakiin kiiskan looma baahna.
Sida aad ka arki karto kordhinta, feylku waxa uu ka kooban yahay habayn qaabka YAML. Faahfaahinta dukumeentiyada furayaasha ku jiri kara heerka ugu sarreeya ee qaabeynta, iyo mid kasta oo ka mid ah heerarka buulka.
Marka hore, aan ku darno isku xirka sawirka docker ee faylka qaabeynta, kaas oo hawlaha lagu fulin doono. Tan waxaan u helnaa .Net Core sawirada bogga Docker Hub. The GitHub waxaa jira hage faahfaahsan oo ku saabsan sawirka aad u dooranayso hawlo kala duwan. Sawir leh .Net Core 3.1 ayaa nagu habboon in aan dhisno, markaa waxaad xor u tahay inaad ku darto xariiqda koowaad qaabeynta
image: mcr.microsoft.com/dotnet/core/sdk:3.1
Hadda, marka dhuumaha laga bilaabo kaydka sawirka Microsoft, sawirka la cayimay ayaa la soo dejin doonaa, kaas oo dhammaan hawlaha qaabeynta la fulin doono.
Talaabada xigta waa in lagu daro stages Sida caadiga ah, GitLab wuxuu qeexayaa 5 marxaladood:
.pre - la sameeyay ilaa dhammaan heerarka,
.post - la sameeyay ka dib dhammaan marxaladaha,
build - marka hore ka dib .pre Marxalad,
test - wajiga labaad,
deploy - marxaladda saddexaad.
Wax kaama diidaya inaad si cad u sheegto, si kastaba ha ahaatee. Sida ay u kala horreeyaan tillaabooyinka loo taxaabay waxay saameeyaan siday u kala horreeyaan. Dhamaystirka, aan ku darno qaabaynta:
stages:
- build
- test
- deploy
Dejinta, waxay macno u leedahay in la helo macluumaadka ku saabsan deegaanka hawlaha lagu fuliyo. Aynu ku darno amarro caalami ah oo la fulin doono ka hor hawl kasta before_script:
before_script:
- $PSVersionTable.PSVersion
- dotnet --version
- nuget help | select-string Version
Waxa hadhay in lagu daro ugu yaraan hal hawl si marka la diro la diro dhuumaha dhuumaha. Hadda, aan ku darno hawl madhan si aan u muujino:
Wax walba waa macquul - asal ahaan, orodyahannada (mas'uul ka ah fulinta qoraallada hawsha oo ay bixiso GitLab) isticmaal bash in la fuliyo amarada. Waxa aad tan ku hagaajin kartaa adiga oo si cad u qeexaya sharraxaadda hawsha waxa ay tahay in uu yeesho orodyahanka dhuumaha fulinaya:
dummy job on windows:
script:
- echo ok
tags:
- windows
Wayn! Dhuumaha ayaa hadda socda.
Akhristaha fiiro gaar ah leh, markuu ku celceliyo tillaabooyinka la tilmaamay, wuxuu ogaan doonaa in hawshu ay ku dhammaatay marxaladda test, inkastoo aynaan cayimin marxaladda. Sida aad qiyaasi karto test waa tillaabada caadiga ah.
Aynu sii wadno abuurista qalfoofka qaabaynta annagoo ku darayna dhammaan hawlaha kor lagu tilmaamay:
build job:
script:
- echo "building..."
tags:
- windows
stage: build
test and cover job:
script:
- echo "running tests and coverage analysis..."
tags:
- windows
stage: test
pack and deploy job:
script:
- echo "packing and pushing to nuget..."
tags:
- windows
stage: deploy
pages:
script:
- echo "creating docs..."
tags:
- windows
stage: deploy
Waxaan helnay dhuumo aan si gaar ah u shaqayn, laakiin si kastaba ha ahaatee dhuumo sax ah.
Dejinta kiciyeyaasha
Sababtoo ah xaqiiqda ah in aan filtarrada kicinta loo cayimin mid ka mid ah hawlaha, dhuumaha ayaa doona si buuxda la fuliyo mar kasta oo ballan lagu riixo bakhaarka. Maaddaama tani aysan ahayn hab-dhaqanka la rabo guud ahaan, waxaanu dejin doonaa filtarrada kiciya ee hawlaha.
Filters waxa loo habayn karaa laba qaab: kaliya/marka laga reebo ΠΈ xeerarka. Si kooban, only/except Waxay kuu ogolaanaysaa inaad ku habayso filtarrada by kiciyeyaasha (merge_request, tusaale ahaan - wuxuu dejiyaa hawsha la fulinayo mar kasta oo codsi jiidis ah la sameeyo iyo mar kasta oo la go'aamiyo loo diro laanta isha ku haysa codsiga isku-dhafka ah) iyo magacyada laanta (oo ay ku jiraan isticmaalka tibaaxaha caadiga ah); rules Waxay kuu ogolaanaysaa inaad habayso shuruudo iyo, ikhtiyaar ahaan, beddelo xaaladda fulinta hawsha iyadoo ku xiran guusha hawlihii hore (when gudaha GitLab CI/CD).
Aynu dib u soo celinno shuruudo - ururinta iyo tijaabinta kaliya ee codsiga isku-dhafka, baakadaha iyo u dirida Azure DevOps - codsiga isku-dhafka iyo riixitaanka sayidkii, jiilka dukumeenti - riixitaanka sayidkiisa.
Marka hore, aynu dejinno hawsha kood-dhisidda annagoo ku darayna xeer dab ka kacaya marka la codsado isku-darka oo keliya:
build job:
# snip
only:
- merge_request
Hadda aan dejinno hawsha baakadaha si aan u dabcinno codsiga isku-dhafka oo aan ku darno ballan-qaadka sayidkii:
Waddooyinku waxay taageeraan kaararka duurjoogta ah, taas oo hubaal ka dhigaysa inay si fudud u dejiyaan.
Haddii hawshu abuurto farshaxan, markaa hawl kasta oo soo socota waxay awood u yeelan doontaa inay galaan - waxay ku yaalaan dariiqyo isku mid ah oo la xidhiidha xididka kaydka ee laga soo ururiyay hawshii asalka ahayd. Farshaxanka ayaa sidoo kale diyaar u ah in laga soo dejiyo goobta.
Hadda oo aan haysanno qaab-dhismeedka qaabeynta oo diyaarsan (oo la tijaabiyay), waxaan sii wadi karnaa inaan si dhab ah u qorno qoraallada hawlaha.
Waxaan qornaa qoraallo
Waxaa laga yaabaa, mar, galaxyo fog, fog, mashaariicda dhismaha (oo ay ku jiraan kuwa .netka) ee khadka taliska ayaa ahaa xanuun. Hadda waxaad dhisi kartaa, tijaabin kartaa oo daabici kartaa mashruuca 3 kooxood:
dotnet build
dotnet test
dotnet pack
Dabiici ahaan, waxaa jira nuances qaar ka mid ah taas oo aan u adkeyn doono amarrada xoogaa.
Waxaan rabnaa dhismo la sii daayo, ma rabno dhismo cillad ah, marka waxaan ku darnaa amar kasta -c Release
Marka aan tijaabineyno, waxaan rabnaa inaan aruurino xogta daboolka koodka, markaa waxaan u baahanahay inaan ku darno falanqeeye caymis maktabadaha imtixaanka:
Ku dar xirmada dhammaan maktabadaha imtixaanka coverlet.msbuild: dotnet add package coverlet.msbuild ka galka mashruuca
Ku dar amarka orodka tijaabada /p:CollectCoverage=true
Ku dar furaha habaynta hawsha tijaabada si aad u hesho natiijooyinka caymiska (hoos eeg)
Markaad ku xidhidayso koodka xirmooyinka nuget, deji buugga wax soo saarka ee xidhmooyinka: -o .
GitLab wuxuu kuu oggolaanayaa inaad qeexdo odhaah joogto ah si aad u hesho tirakoob, kaas oo markaa lagu heli karo qaab calaamad. Odhaahda caadiga ah waxay ku qeexan tahay goobaha hawsha oo leh furaha coverage; odhaahda waa in ay ka kooban tahay koox la qabsasho, kuwaas oo qiimahooda loo gudbin doono calaamadda:
test and cover job:
# snip
coverage: /|s*Totals*|s*(d+[,.]d+%)/
Labada ficilba waxaa loo qorsheeyay marxaladda ugu dambeysa ee dhuumaha - tan iyo markii shirkii iyo imtixaanadii la soo dhaafay, waxaan la wadaagi karnaa horumarkayaga adduunka.
Maxay: Sawirku waxa laga yaabaa in aanu u helin qoraal u samaynta caalamiga ah (isticmaalka iyo mishiinka). Si aan loo qaban khaladaadka, waxaan si fudud u abuurnaa qaabeyn cusub oo maxalli ah oo aan la shaqeyno.
Waxaan ka soo dirnaa dhammaan baakooyinka buugga hadda jira, sidaas darteed *.nupkg.
name - laga bilaabo tallaabada sare.
key - khad kasta. Gudaha Azure DevOps, daaqada Connect to feed, tusaale ahaan had iyo jeer waa khadka az.
-skipduplicate - Markaad isku daydo inaad dirto xirmo hore u jiray oo aan furahaan lahayn, isha ayaa soo celin doonta qalad 409 Conflict; furaha, diritaanka waa laga boodi doonaa.
Hadda aan dejinno abuurista dukumentiyada:
Marka hore, kaydka, laanta sayidka, waxaanu bilownay mashruuca docfx. Si tan loo sameeyo, ka socodsii amarka xididka docfx init oo si is dhexgal ah u dejiso halbeegyada muhiimka ah ee dukumentiyada dhismaha. Sharaxaad tafatiran ee habaynta mashruuca ugu yar halkan.
Marka la habeynayo, waxaa muhiim ah in la qeexo hagaha wax soo saarka ..public - GitLab si caadi ah waxay u qaadataa waxa ku jira galka dadweynaha ee asalka kaydka sida isha boggaga. Sababtoo ah mashruucu waxa uu ku yaalaa galka buul ku yaal bakhaarka - ku dar wax soo saarka ilaa heerka kor ee wadada.
Aan u riixno isbeddelada GitLab.
Ku dar hawl habaynta dhuumaha pages ( kelmad u kaydsan hawlaha daabacaadda goobta ee Bogagga GitLab):
Qoraal:
nuget install docfx.console -version 2.51.0 - ku rakib docfx; nooca ayaa loo cayimay si loo hubiyo in wadooyinka xirmooyinka xirmada ay sax yihiin.
Azure DevOps Artifacts sidoo kale waxay kuu ogolaaneysaa inaad abuurto calaamado xirmo leh nooca ugu dambeeyay. Si tan loo sameeyo, isha ku taal goobta Azure DevOps, waxaad u baahan tahay inaad gujiso Abuur calaamada xirmada la doortay oo koobi ka samee calaamadaynta:
Quruxda ku dara
Muujinta jajabyada Iskudubarid ee Caadiga ah
Markii aan qorayey qaabeynta oo aan ka dhex raadinayo dukumeentiyada, waxaan la kulmay muuqaal xiiso leh oo YAML ah - dib u adeegsiga jajabyada.
Sida aad ka arki karto goobaha hawsha, dhamaantood waxay u baahan yihiin sumadda windows marka la joogo orodyahanka, waxayna kiciyaan marka codsiga isku darka loo diro sayidkii/abuuray (marka laga reebo dukumentiyada). Aynu tan ku darno jajabka aan dib u isticmaali doono:
Oo hadda waxaan gelin karnaa jajabkii hore loogu dhawaaqay sharraxaadda hawsha:
build job:
<<: *common_tags
<<: *common_only
Magacyada jajabku waa inay ku bilowdaan dhibco, si aan loogu fasirin hawl.
Nooca xirmada
Marka la abuurayo xirmo, isku-dubariduhu waxay hubinayaan khadka taliska, iyo maqnaanshaha, faylasha mashruuca; Marka ay hesho node Version, waxay u qaadanaysaa qiimaheeda sida nooca xirmada ee la dhisayo. Waxay soo baxday in si aad u dhisto xirmo leh nooc cusub, waxaad u baahan tahay inaad ku cusboonaysiiso faylka mashruuca ama aad u gudbiso dood khadka taliska.
Aan ku darno hal liis oo kale - ha noqdaan labada lambar ee yar ee nooca ku jira sanadka iyo dhismaha taariikhda xirmada, oo ku dar noocyada sii daynta. Dabcan, waxaad ku dari kartaa xogtan faylka mashruuca oo hubi ka hor inta aan la soo gudbin - laakiin waxaad sidoo kale ku samayn kartaa dhuumaha, ka soo ururinta nooca xirmada ee macnaha guud oo aad u gudubto doodda khadka taliska.
Aynu ku heshiino in haddii fariinta ballanku ka kooban tahay sadar sida release (v./ver./version) <version number> (rev./revision <revision>)?, ka dib waxaan ka soo qaadan doonaa nooca xirmada khadkan, ku kaabi doona taariikhda hadda jirta oo u gudbin doonaa dood ahaan amarka dotnet pack. Maqnaanshaha khad, si fudud uma ururin doono xirmada.
Ku darida qoraal hawl pack and deploy job oo si adag u ilaali kulanka baakadaha iyadoo ay joogaan xadhig la siiyay fariinta ballanta.
Wadarta
Ka dib markii aan ku qaadanay ku dhawaad ββnus saac ama saacad qorista qaabeynta, ka saarista awooda deegaanka iyo, suurtogalnimada, dhowr furitaan oo aan lagu guuleysan, waxaan helnay qaabeyn fudud oo otomaatig ah hawlaha caadiga ah.
Dabcan, GitLab CI / CD aad buu u ballaadhan yahay oo dhinacyo badan leh marka loo eego sida ay u ekaan karto ka dib marka la akhriyo hagahan - taasi run maaha. Halkaa xitaa Auto DevOps waaogolaanaya
si otomaatig ah u ogow, u dhis, tijaabi, u dir, oo ula soco codsiyadaada
Hadda qorshuhu waa in la habeeyo dhuumo loogu diro codsiyada Azure, iyadoo la adeegsanayo Pulumi oo si toos ah u go'aaminaysa deegaanka la beegsanayo, kaas oo lagu dabooli doono maqaalka soo socda.