Mwinamwake, aliyense wopanga mapulogalamu omwe ali ndi polojekiti imodzi ya ziweto nthawi ina amakhala ndi chiwopsezo cha mabaji okongola okhala ndi ma stade, code coverage, phukusi la nuget ... Ndipo itch iyi inandipangitsa kuti ndilembe nkhaniyi. Pokonzekera kulemba, ndapeza kukongola uku mu imodzi mwamapulojekiti anga:
Nkhaniyi ikuthandizani pakukhazikitsa kofunikira kophatikizana mosalekeza ndi kutumiza pulojekiti ya laibulale ya .Net Core class ku GitLab, kusindikiza zolembedwa ku GitLab Pages, ndikukankhira maphukusi omangidwira ku chakudya chachinsinsi mu Azure DevOps.
VS Code idagwiritsidwa ntchito ngati malo otukuka ndikukulitsa GitLab Workflow (potsimikizira zoikamo fayilo mwachindunji kuchokera kumalo otukuka).
Chidule chachidule
CD - ndi pamene mwangokankhira, ndipo chirichonse chagwera kale pa kasitomala?
Kodi CI / CD ndi chiyani ndipo chifukwa chiyani mukuyifuna - mutha kuyiyika pa Google mosavuta. Pezani zolemba zonse pakukonza mapaipi mu GitLab komanso zosavuta. Apa ndifotokoza mwachidule komanso, ngati n'kotheka, popanda zolakwika ndikufotokozera momwe dongosololi likuyendera m'maso mwa mbalame:
magawo amachitidwa motsatizana - i.e. kufanana ntchito zonse za siteji iyi zatsirizidwa,
ngati gawolo likulephera (ie, imodzi mwa ntchito za sitejiyo yalephera), payipi imayima (pafupifupi nthawi zonse),
ngati magawo onse atsirizidwa bwino, payipi imatengedwa kuti ndi yopambana.
Chifukwa chake, tili ndi:
pipeline - mndandanda wa ntchito zokonzedwa m'magawo omwe mungapange, kuyesa, ma code phukusi, kutumiza zomaliza ku ntchito yamtambo, ndi zina zotero,
siteji (siteji) - gulu lopanga mapaipi, lili ndi ntchito 1+,
ntchito (ntchito) ndi gawo la ntchito paipi. Imakhala ndi script (yovomerezeka), mikhalidwe yotsegulira, zoikidwiratu zosindikiza / zosunga zobwezeretsera, ndi zina zambiri.
Chifukwa chake, ntchitoyo ikakhazikitsa CI / CD imatsikira pakupanga ntchito zomwe zimakwaniritsa zonse zofunika pakumanga, kuyesa ndi kusindikiza ma code ndi zinthu zakale.
Musanayambe: chifukwa chiyani?
Chifukwa chiyani Gitlab?
Chifukwa pamene zidakhala zofunikira kupanga nkhokwe zachinsinsi zamapulojekiti a ziweto, adalipidwa pa GitHub, ndipo ndinali wadyera. Zosungirako zakhala zaufulu, koma mpaka pano sichinali chifukwa chokwanira choti ndisamukire ku GitHub.
Pitani ku zoikamo zosungira mu GitLab, sankhani zokonda za CI / CD
Onjezani chipika cha Zosintha, yonjezerani china chatsopano
Dzina - lililonse lopanda mipata (lipezeka mu chipolopolo cholamula)
Mtengo - chizindikiro chofikira kuchokera ndime 9
Sankhani Mask variable
Izi zimamaliza kukonzekereratu.
Kukonzekera dongosolo kasinthidwe
Mwachikhazikitso, kasinthidwe ka CI/CD mu GitLab amagwiritsa ntchito fayilo .gitlab-ci.yml kuchokera muzu wa nkhokwe. Mutha kukhazikitsa njira yosinthira fayiloyi muzosungirako, koma pakadali pano sikofunikira.
Monga mukuwonera pakukulitsa, fayilo ili ndi kasinthidwe mumtundu YAML. Tsatanetsatane wa zolemba zomwe makiyi atha kukhala pamlingo wapamwamba wa kasinthidwe, komanso pamlingo uliwonse wokhazikitsidwa.
Choyamba, tiyeni tiwonjezere ulalo wa chithunzi cha docker mu fayilo yosinthira, momwe ntchitozo zidzachitikira. Kwa ichi tikupeza Tsamba la zithunzi za .Net Core pa Docker Hub. The GitHub pali kalozera watsatanetsatane wa chithunzi chomwe mungasankhe pa ntchito zosiyanasiyana. Chithunzi chokhala ndi .Net Core 3.1 ndichoyenera kuti timange, choncho khalani omasuka kuwonjezera mzere woyamba pakukonzekera.
image: mcr.microsoft.com/dotnet/core/sdk:3.1
Tsopano, payipi ikatulutsidwa kuchokera kumalo osungirako zithunzi a Microsoft, chithunzi chomwe chatchulidwa chidzatsitsidwa, momwe ntchito zonse kuchokera ku kasinthidwe zidzachitidwa.
url - URL ya gwero kuchokera pagawo "Kukonzekera maakaunti", p. 6
organization - dzina la bungwe mu Azure DevOps
gitlab variable - dzina la kusintha ndi chizindikiro chofikira chowonjezeredwa ku GitLab ("Kukonzekera akaunti", p. 11). Mwachibadwa, mu maonekedwe $variableName
Kukonzekera kosavuta kotereku kungapangidwe mu theka la ola ndi makapu angapo a khofi, zomwe zidzakuthandizani kuti muwone kuti codeyo imamangidwa ndipo mayesero amapita, kumanga phukusi latsopano, sinthani zolembazo ndikukondweretsa diso ndi zokongola. mabaji mu README ya polojekiti ndi pempho lililonse lophatikiza ndikutumiza kwa mbuye.
Final .gitlab-ci.yml
image: mcr.microsoft.com/dotnet/core/sdk:3.1
before_script:
- $PSVersionTable.PSVersion
- dotnet --version
- nuget help | select-string Version
stages:
- build
- test
- deploy
build job:
stage: build
script:
- dotnet build -c Release
tags:
- windows
only:
- merge_requests
- master
artifacts:
paths:
- your/path/to/binaries
test and cover job:
stage: test
tags:
- windows
script:
- dotnet test -c Release /p:CollectCoverage=true
coverage: /|s*Totals*|s*(d+[,.]d+%)/
only:
- merge_requests
- master
pack and deploy job:
stage: deploy
tags:
- windows
script:
- dotnet pack -c Release -o .
- dotnet new nugetconfig
- nuget sources add -name feedName -source https://pkgs.dev.azure.com/your-organization/_packaging/your-feed/nuget/v3/index.json -username your-organization -password $nugetFeedToken -configfile nuget.config -StorePasswordInClearText
- nuget push -source feedName -skipduplicate -apikey az *.nupkg
only:
- master
pages:
tags:
- windows
stage: deploy
script:
- nuget install docfx.console -version 2.51.0
- $env:path = "$env:path;$($(get-location).Path)"
- .docfx.console.2.51.0toolsdocfx.exe .docfxdocfx.json
artifacts:
paths:
- public
only:
- master
Kulankhula za mabaji
Chifukwa cha iwo, pambuyo pake, zonse zidayamba!
Mabaji okhala ndi ziphaso zamapaipi komanso kufalikira kwa ma code akupezeka mu GitLab mu zoikamo za CI/CD mu block mapaipi a Gtntral:
Mayina a zidutswa ayenera kuyamba ndi kadontho, kuti asatanthauzidwe ngati ntchito.
Kusintha kwa phukusi
Popanga phukusi, wolembayo amayang'ana kusintha kwa mzere wa malamulo, ndipo ngati palibe, mafayilo a polojekiti; ikapeza mfundo ya Version, imatengera mtengo wake ngati mtundu wa phukusi lomwe likumangidwa. Zikuwonekeratu kuti kuti mupange phukusi ndi mtundu watsopano, muyenera kuyisintha mu fayilo ya polojekiti kapena kuipereka ngati mkangano wa mzere wolamula.
Tiyeni tiwonjezere Wishlist ina - lolani manambala awiri ang'onoang'ono mumtunduwo akhale chaka ndikumanga tsiku la phukusi, ndikuwonjezeranso zomasulira. Zachidziwikire, mutha kuwonjezera izi pafayilo ya polojekiti ndikuwunika musanapereke chilichonse - koma mutha kuchitanso mupaipi, kusonkhanitsa mtundu wa phukusi kuchokera pamutuwu ndikuwudutsa pamtsutso wa mzere wolamula.
Tiyeni tivomereze kuti ngati uthenga wodzipereka uli ndi mzere ngati release (v./ver./version) <version number> (rev./revision <revision>)?, ndiye titenga mtundu wa phukusi kuchokera pamzerewu, ndikuwonjezera ndi tsiku lomwe lilipo ndikulipereka ngati mkangano ku lamulo. dotnet pack. Popanda mzere, sitingatolere phukusi.
Kuwonjezera script ku ntchito pack and deploy job ndipo yang'anani kusonkhana kwa phukusi mosamalitsa pamaso pa chingwe choperekedwa mu uthenga wodzipereka.
Chiwerengero
Titakhala pafupifupi theka la ola kapena ola limodzi ndikulemba kasinthidwe, kukonza zolakwika mu Powershell yakomweko ndipo, mwina, zoyambitsa zingapo zomwe sizinachite bwino, tili ndi masinthidwe osavuta opangira ntchito zachizolowezi.
Zachidziwikire, GitLab CI / CD ndiyambiri komanso yochulukirapo kuposa momwe zingawonekere mutawerenga bukuli - izo sizowona konse. Kumeneko ngakhale Auto DevOps ndikulola
zindikirani zokha, pangani, yesani, tumizani, ndikuwunika mapulogalamu anu
Tsopano mapulaniwo ndikukonzekera payipi yotumizira mapulogalamu ku Azure, pogwiritsa ntchito Pulumi ndikudziwiratu malo omwe mukufuna, zomwe zidzafotokozedwe m'nkhani yotsatira.