Kapena momwe mungapezere mabaji okongola a projekiti yanu usiku umodzi wosavuta wolembera
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 (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 . Apa ndifotokoza mwachidule komanso, ngati n'kotheka, popanda zolakwika ndikufotokozera momwe dongosololi likuyendera m'maso mwa mbalame:
- wopangayo amatumiza kudzipereka kumalo osungirako, amapanga pempho lophatikizana kudzera patsambalo, kapena mwanjira ina, momveka bwino kapena mosabisa akuyamba payipi,
- ntchito zonse zimasankhidwa kuchokera ku kasinthidwe, zomwe zimalola kuti zikhazikitsidwe pazomwe zaperekedwa,
- ntchito zimakonzedwa molingana ndi magawo awo,
- 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.
- Bwanji osapanga mapaipi a Azure DevOps?
Chifukwa pamenepo zoyikapo ndizoyambira - kudziwa mzere wolamula sikofunikira. Kuphatikiza ndi opereka git akunja - pakudina pang'ono, kulowetsa makiyi a SSH kuti mutumize mabizinesi kumalo osungirako - nawonso, mapaipi amakonzedwa mosavuta ngakhale osachokera pa template.
Malo oyambira: zomwe muli nazo ndi zomwe mukufuna
Tili ndi:
- chosungira ku GitLab.
Tikufuna:
- kusonkhanitsa zokha ndi kuyesa pa pempho lililonse lophatikiza,
- kumanga phukusi la pempho lililonse lophatikizana ndikukankhira kwa mbuye, malinga ngati pali mzere wina mu uthenga wodzipereka,
- kutumiza mapaketi omanga ku chakudya chachinsinsi ku Azure DevOps,
- kusonkhanitsa zolemba ndi kufalitsa mu Masamba a GitLab,
- zizindikiro!11
Zofunikira zomwe zafotokozedwa zimagwera pamapaipi otsatirawa:
- Gawo 1 - msonkhano
- Timasonkhanitsa kachidindo, kufalitsa mafayilo otuluka ngati zinthu zakale
- Gawo 2 - kuyesa
- Timapeza zinthu zakale kuchokera pakupanga, kuyesa mayeso, kusonkhanitsa zidziwitso za code
- Gawo 3 - Tumizani
- Ntchito 1 - pangani phukusi la nuget ndikutumiza ku Azure DevOps
- Ntchito 2 - timasonkhanitsa tsambalo kuchokera ku xmldoc mu code code ndikuyiyika mu GitLab Pages
Tiyeni tiyambe!
Kusonkhanitsa kasinthidwe
Kukonzekera maakaunti
Pangani akaunti mu
Pitani ku
Timapanga pulojekiti yatsopano
- Dzina - iliyonse
- Kuwoneka - kulikonse

Mukadina pa batani la Pangani, polojekitiyo idzapangidwa ndipo mudzatumizidwa kutsamba lake. Patsambali, mutha kuletsa zinthu zosafunikira popita pazokonda za polojekiti (ulalo wapansi pamndandanda womwe uli kumanzere -> mwachidule -> Azure DevOps Services block)

Pitani ku Atrifacts, dinani Pangani feed
- Lowetsani dzina la gwero
- Sankhani mawonekedwe
- Chotsani chosankha Phatikizani phukusi lochokera kwa anthu wamba, kuti gwero lisanduke kukhala dumpnuget clone

Dinani Lumikizani kuti mudyetse, sankhani Visual Studio, koperani Gwero kuchokera pa block Setup Machine

Pitani ku makonda a akaunti, sankhani Personal Access Token

Pangani chizindikiro chatsopano
- Dzina - mwachisawawa
- Bungwe - Panopa
- Itha kukhala chaka chimodzi
- Kuchuluka - Kupaka/Kuwerenga & Kulemba

Koperani chizindikiro chopangidwa - pambuyo potsekedwa zenera la modal, mtengo sudzakhalapo
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 . The 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.1Tsopano, payipi ikatulutsidwa kuchokera kumalo osungirako zithunzi a Microsoft, chithunzi chomwe chatchulidwa chidzatsitsidwa, momwe ntchito zonse kuchokera ku kasinthidwe zidzachitidwa.
Chotsatira ndikuwonjezera siteji's. Mwachikhazikitso, GitLab imatanthauzira magawo 5:
.pre- adachita mpaka magawo onse,.post- kuchitidwa pambuyo pa magawo onse,build- choyamba pambuyo.prestage,test- gawo lachiwiri,deploy- gawo lachitatu.
Palibe chomwe chimakulepheretsani kufotokoza momveka bwino, komabe. Ndondomeko yomwe masitepe alembedwa imakhudza momwe amachitira. Kuti tikwaniritse, tiyeni tiwonjezere ku kasinthidwe:
stages:
- build
- test
- deployPochotsa zolakwika, ndizomveka kupeza zambiri zokhudzana ndi malo omwe ntchitozo zimachitikira. Tiyeni tiwonjezere malamulo apadziko lonse lapansi omwe azichitika ntchito iliyonse isanachitike before_script:
before_script:
- $PSVersionTable.PSVersion
- dotnet --version
- nuget help | select-string VersionIngowonjezeranso ntchito imodzi kuti ntchito zikatumizidwa, mapaipi ayambe. Pakadali pano, tiyeni tiwonjezere ntchito yopanda kanthu kuti tiwonetse:
dummy job:
script:
- echo okTimayamba kutsimikizira, timapeza uthenga wakuti zonse zili bwino, timadzipereka, timakankhira, timayang'ana zotsatira pa malo ... Ndipo timapeza cholakwika cha script - bash: .PSVersion: command not found. wtf?
Chilichonse ndichabwino - mwachisawawa, othamanga (omwe ali ndi udindo wolemba ntchito ndikuperekedwa ndi GitLab) gwiritsani ntchito bash kuchita malamulo. Mutha kukonza izi pofotokoza mwatsatanetsatane m'mawu ofotokozera zomwe woyendetsa mapaipi ayenera kukhala nazo:
dummy job on windows:
script:
- echo ok
tags:
- windowsZabwino! Paipiyi ikugwira ntchito tsopano.
Wowerenga mwachidwi, atabwereza masitepe omwe asonyezedwa, adzawona kuti ntchitoyo inamalizidwa pa siteji test, ngakhale sitinatchule siteji. Monga mungaganizire test ndiye sitepe yokhazikika.
Tiyeni tipitilize kupanga skeleton yosinthira powonjezera ntchito zonse zomwe zafotokozedwa pamwambapa:
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: deployTili ndi mapaipi osagwira ntchito, koma olondola.
Kupanga zoyambitsa
Chifukwa chakuti palibe zosefera zoyambitsa zomwe zafotokozedwa pa ntchito iliyonse, mapaipi atero kwathunthu kuchitidwa nthawi iliyonse yomwe chikalatacho chikukankhidwira kumalo osungirako. Popeza izi sizomwe timafunikira, tidzakhazikitsa zosefera zoyambitsa ntchito.
Zosefera zitha kukhazikitsidwa m'mitundu iwiri: ΠΈ . Mwachidule, only/except limakupatsani mwayi wokonza zosefera ndi zoyambitsa (merge_request, mwachitsanzo - imayika ntchito yomwe iyenera kuchitidwa nthawi iliyonse pamene pempho lachikoka likupangidwa ndipo nthawi iliyonse yopereka imatumizidwa ku nthambi yomwe ili gwero la pempho lophatikizana) ndi mayina a nthambi (kuphatikiza kugwiritsa ntchito mawu okhazikika); rules imakupatsani mwayi wosintha momwe zinthu ziliri ndipo, mwakufuna, kusintha momwe mungagwirire ntchito kutengera kupambana kwa ntchito zam'mbuyomu ().
Tiyeni tikumbukire zofunikira - kusonkhanitsa ndi kuyesa kokha pakuphatikiza pempho, kuyika ndi kutumiza ku Azure DevOps - kuti aphatikize pempho ndikukankhira kwa mbuye, kupanga zolemba - kukankhira kwa mbuye.
Choyamba, tiyeni tikhazikitse ntchito yomanga kachidindo powonjezera lamulo lomwe limangoyatsa pophatikiza pempho:
build job:
# snip
only:
- merge_requestTsopano tiyeni tikhazikitse ntchito yonyamula kuti tiwotche pa pempho lophatikizana ndikuwonjezera kuchita kwa mbuye:
pack and deploy job:
# snip
only:
- merge_request
- masterMonga mukuonera, zonse ndi zosavuta komanso zosavuta.
Muthanso kuyimitsa ntchitoyo pokhapokha ngati pempho lophatikizana lapangidwa ndi chandamale kapena nthambi yoyambira:
rules:
- if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"Pazimenezi, mungagwiritse ntchito ; malamulo rules zosagwirizana ndi malamulo only/except.
Kukonza Kusunga Zojambula
Pa nthawi ya ntchito build job tidzakhala ndi zinthu zakale zomwe zitha kugwiritsidwanso ntchito muzotsatira. Kuti muchite izi, muyenera kuwonjezera njira zosinthira ntchito, mafayilo omwe muyenera kusunga ndikugwiritsanso ntchito pazotsatirazi, ku kiyi. :
build job:
# snip
artifacts:
paths:
- path/to/build/artifacts
- another/path
- MyCoolLib.*/bin/Release/*Njira zimathandizira makadi akutchire, zomwe zimapangitsa kuti zikhale zosavuta kuziyika.
Ngati ntchito imapanga zinthu zakale, ndiye kuti ntchito iliyonse yotsatila idzatha kuzipeza - zidzapezeka m'njira zomwezo zokhudzana ndi mizu yosungiramo zinthu zomwe zinasonkhanitsidwa kuchokera ku ntchito yoyambirira. Zinthu zakale zimapezekanso kuti zitsitsidwe patsamba.
Tsopano popeza tili ndi dongosolo lokonzekera (ndi kuyesedwa), tikhoza kupitiriza kulemba zolemba za ntchito.
Timalemba zolemba
Mwinamwake, kamodzi pa nthawi, mu mlalang'amba wakutali, kutali, ntchito zomanga (kuphatikizapo zomwe zili pa .net) kuchokera ku mzere wolamula zinali zowawa. Tsopano mutha kupanga, kuyesa ndi kufalitsa pulojekitiyi m'magulu atatu:
dotnet build
dotnet test
dotnet packMwachilengedwe, pali ma nuances ena chifukwa chake tidzasokoneza malamulowo.
- Tikufuna kumanga kumasulidwa, osati kukonza zolakwika, kotero timawonjezera ku lamulo lililonse
-c Release - Tikamayesa, tikufuna kusonkhanitsa zidziwitso za ma code, chifukwa chake tiyenera kuphatikiza chowunikira m'malaibulale oyeserera:
- Onjezani phukusi ku malaibulale onse oyeserera
coverlet.msbuild:dotnet add package coverlet.msbuildkuchokera ku chikwatu cha polojekiti - Onjezerani ku test run command
/p:CollectCoverage=true - Onjezani kiyi pakusintha kwa ntchito yoyeserera kuti mupeze zotsatira zowunikira (onani pansipa)
- Onjezani phukusi ku malaibulale onse oyeserera
- Mukanyamula kachidindo m'mapaketi a nuget, ikani chikwatu chotuluka pamaphukusi:
-o .
Kusonkhanitsa ma code coverage data
Pambuyo poyesa mayeso, zolemba za Coverlet zimayendetsa ziwerengero ku kontrakitala:
Calculating coverage result...
Generating report 'C:Usersxxxsourcereposmy-projectmyProject.testscoverage.json'
+-------------+--------+--------+--------+
| Module | Line | Branch | Method |
+-------------+--------+--------+--------+
| project 1 | 83,24% | 66,66% | 92,1% |
+-------------+--------+--------+--------+
| project 2 | 87,5% | 50% | 100% |
+-------------+--------+--------+--------+
| project 3 | 100% | 83,33% | 100% |
+-------------+--------+--------+--------+
+---------+--------+--------+--------+
| | Line | Branch | Method |
+---------+--------+--------+--------+
| Total | 84,27% | 65,76% | 92,94% |
+---------+--------+--------+--------+
| Average | 90,24% | 66,66% | 97,36% |
+---------+--------+--------+--------+GitLab imakulolani kuti mutchule mawu okhazikika kuti mupeze ziwerengero, zomwe zitha kupezeka ngati baji. Mawu okhazikika amafotokozedwa m'makonzedwe a ntchito ndi kiyi coverage; mawuwa ayenera kukhala ndi gulu lojambula, lomwe mtengo wake udzaperekedwa ku baji:
test and cover job:
# snip
coverage: /|s*Totals*|s*(d+[,.]d+%)/Apa timapeza ziwerengero kuchokera pamzere wokhala ndi mizere yonse.
Sindikizani phukusi ndi zolemba
Zochita zonse ziwirizi zakonzekera gawo lomaliza la mapaipi - popeza msonkhano ndi mayeso zadutsa, titha kugawana zomwe tikuchita ndi dziko lapansi.
Choyamba, lingalirani zofalitsa ku gwero la phukusi:
Ngati polojekiti ilibe fayilo yosinthira nuget (
nuget.config), pangani yatsopano:dotnet new nugetconfigZachiyani: chithunzicho sichingakhale ndi mwayi wolembera ku masinthidwe apadziko lonse (ogwiritsa ntchito ndi makina). Kuti tisagwire zolakwika, timangopanga masinthidwe am'deralo ndikugwira nawo ntchito.
- Tiyeni tiwonjeze gwero la phukusi latsopano pamasinthidwe am'deralo:
nuget sources add -name <name> -source <url> -username <organization> -password <gitlab variable> -configfile nuget.config -StorePasswordInClearTextname- dzina la komweko, osati lotsutsaurl- URL ya gwero kuchokera pagawo "Kukonzekera maakaunti", p. 6organization- dzina la bungwe mu Azure DevOpsgitlab variable- dzina la kusintha ndi chizindikiro chofikira chowonjezeredwa ku GitLab ("Kukonzekera akaunti", p. 11). Mwachibadwa, mu maonekedwe$variableName-StorePasswordInClearText- kuthyolako kuti mulambalale cholakwika chokanidwa ()- Pakakhala zolakwika, zitha kukhala zothandiza kuwonjezera
-verbosity detailed
- Kutumiza phukusi kugwero:
nuget push -source <name> -skipduplicate -apikey <key> *.nupkg- Timatumiza mapaketi onse kuchokera pakakwatu komweko, kotero
*.nupkg. name- kuchokera pa sitepe pamwamba.key- mzere uliwonse. Mu Azure DevOps, mu Connect to feed zenera, chitsanzo nthawi zonse chimakhala mzereaz.-skipduplicate- poyesa kutumiza phukusi lomwe lilipo kale popanda fungulo ili, gwero lidzabwezera cholakwika409 Conflict; ndi kiyi, kutumiza kudzalumphidwa.
- Timatumiza mapaketi onse kuchokera pakakwatu komweko, kotero
Tsopano tiyeni tiyike kupanga zolembedwa:
- Choyamba, posungira, munthambi yayikulu, timayambitsa ntchito ya docfx. Kuti muchite izi, yendetsani lamulo kuchokera muzu
docfx initndikukhazikitsa molumikizana magawo ofunikira pakumanga zolemba. Kufotokozera mwatsatanetsatane za kukhazikitsidwa kochepa kwa polojekiti .- Mukakonza, ndikofunikira kutchula bukhu lotulutsa
..public- GitLab mwachisawawa imatenga zomwe zili mufoda yapagulu muzu wankhokwe ngati gwero la Masamba. Chifukwa pulojekitiyi idzakhala mu chikwatu chomwe chili m'malo osungiramo - onjezerani zotuluka pamlingo wokwera panjira.
- Mukakonza, ndikofunikira kutchula bukhu lotulutsa
- Tiyeni tikankhire zosintha ku GitLab.
- Onjezani ntchito pakukonzekera mapaipi
pages(mawu osungidwa a ntchito zofalitsa masamba pamasamba a GitLab):- Zolemba:
nuget install docfx.console -version 2.51.0- kukhazikitsa docfx; mtunduwo wafotokozedwa kuti zitsimikizire kuti njira zoyika phukusi zili zolondola..docfx.console.2.51.0toolsdocfx.exe .docfx_projectdocfx.json- kusonkhanitsa zolemba
- Zolemba za Node:
- Zolemba:
pages:
# snip
artifacts:
paths:
- publicKuyimba kwanyimbo za docfx
M'mbuyomu, pokhazikitsa pulojekiti, ndidatchula gwero lazolembazo ngati fayilo yothetsera. Choyipa chachikulu ndikuti zolemba zimapangidwiranso ntchito zoyeserera. Ngati izi sizikufunika, mutha kuyika mtengo uwu ku node metadata.src:
{
"metadata": [
{
"src": [
{
"src": "../",
"files": [
"**/*.csproj"
],
"exclude":[
"*.tests*/**"
]
}
],
// --- snip ---
},
// --- snip ---
],
// --- snip ---
}metadata.src.src: "../"- timakwera mulingo umodzi wokhudzana ndi malowodocfx.json, chifukwa m'machitidwe, kufufuza mtengo wa chikwatu sikugwira ntchito.metadata.src.files: ["**/*.csproj"]- dongosolo lapadziko lonse lapansi, timasonkhanitsa ma projekiti onse a C # kuchokera kumakanema onse.metadata.src.exclude: ["*.tests*/**"]- mawonekedwe apadziko lonse lapansi, osapatula chilichonse pamafoda omwe ali nawo.testsPamutu
Chiwerengero
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:
- masterKulankhula 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:

Ndinapanga baji yokhala ndi ulalo wa zolembedwa papulatifomu - Chilichonse ndichabwino pamenepo, mutha kupanga baji yanu ndikulandila pogwiritsa ntchito pempho.

Azure DevOps Artifacts imakupatsaninso mwayi wopanga mabaji amapaketi okhala ndi mtundu waposachedwa. Kuti muchite izi, gwero lomwe lili patsamba la Azure DevOps, muyenera dinani Pangani baji la phukusi losankhidwa ndikukopera zolembera:


Kuwonjezera kukongola
Kuyang'ana Zidutswa Zachidule Zosasinthika
Ndikamalemba masinthidwe ndikufufuza zolemba, ndidakumana ndi chinthu chosangalatsa cha YAML - kugwiritsanso ntchito zidutswa.
Monga mukuwonera pamakonzedwe a ntchito, onse amafunikira chizindikirocho windows pa wothamanga, ndipo zimayambitsidwa pamene pempho lophatikizana likutumizidwa kwa mbuye / wopangidwa (kupatula zolemba). Tiyeni tiwonjezere ichi ku chidutswa chomwe tigwiritsenso ntchito:
.common_tags: &common_tags
tags:
- windows
.common_only: &common_only
only:
- merge_requests
- masterNdipo tsopano titha kuyika chidutswa chomwe chanenedweratu pofotokozera ntchito:
build job:
<<: *common_tags
<<: *common_onlyMayina 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.
Malemba otsatirawa amathetsa vutoli:
# ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΡΡΠΎΠΊΠΈ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ
$rx = "releases+(v.?|ver.?|version)s*(?<maj>d+)(?<min>.d+)?(?<rel>.d+)?s*((rev.?|revision)?s+(?<rev>[a-zA-Z0-9-_]+))?"
# ΠΈΡΠ΅ΠΌ ΡΡΡΠΎΠΊΡ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΌ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ
GitLab'ΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
$found = $env:CI_COMMIT_MESSAGE -match $rx
# ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ Π½Π΅Ρ - Π²ΡΡ
ΠΎΠ΄ΠΈΠΌ
if (!$found) { Write-Output "no release info found, aborting"; exit }
# ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΠΌΠ°ΠΆΠΎΡΠ½ΡΡ ΠΈ ΠΌΠΈΠ½ΠΎΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΈ
$maj = $matches['maj']
$min = $matches['min']
# Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅Π»ΠΈΠ·Π° - ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅Π³ΠΎ, ΠΈΠ½Π°ΡΠ΅ - ΡΠ΅ΠΊΡΡΠΈΠΉ Π³ΠΎΠ΄
if ($matches.ContainsKey('rel')) { $rel = $matches['rel'] } else { $rel = ".$(get-date -format "yyyy")" }
# Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ±ΠΎΡΠΊΠΈ - ΡΠ΅ΠΊΡΡΠΈΠ΅ ΠΌΠ΅ΡΡΡ ΠΈ Π΄Π΅Π½Ρ
$bld = $(get-date -format "MMdd")
# Π΅ΡΠ»ΠΈ Π΅ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΠΏΡΠ΅ΡΠ΅Π»ΠΈΠ·Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ - Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΈΡ
Π² Π²Π΅ΡΡΠΈΡ
if ($matches.ContainsKey('rev')) { $rev = "-$($matches['rev'])" } else { $rev = '' }
# ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ Π΅Π΄ΠΈΠ½ΡΡ ΡΡΡΠΎΠΊΡ Π²Π΅ΡΡΠΈΠΈ
$version = "$maj$min$rel.$bld$rev"
# ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΡ
dotnet pack -c Release -o . /p:Version=$versionKuwonjezera 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 - . Kumeneko ngakhale kulola
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.
Source: www.habr.com








