ProHoster > Blog > Rianachd > Iùl air CI/CD ann an GitLab airson an neach-tòiseachaidh (cha mhòr).
Iùl air CI/CD ann an GitLab airson an neach-tòiseachaidh (cha mhòr).
No mar a gheibh thu bràistean brèagha airson do phròiseact ann an aon oidhche de chòdachadh furasta
Is dòcha gu bheil itch aig a h-uile leasaiche aig a bheil co-dhiù aon phròiseact peata aig àm air choreigin mu bhràistean brèagha le inbhean, còmhdach còd, dreachan pacaid ann an nuget ... Agus thug an itch seo orm an artaigil seo a sgrìobhadh. Mar ullachadh airson a sgrìobhadh, fhuair mi am bòidhchead seo ann am fear de na pròiseactan agam:
Coisichidh an artaigil seo thu tro shuidheachadh bunaiteach amalachadh agus lìbhrigeadh leantainneach airson pròiseact leabharlann clas .Net Core ann an GitLab, a ’foillseachadh sgrìobhainnean gu GitLab Pages, agus a’ putadh pacaidean togte gu biadhadh prìobhaideach ann an Azure DevOps.
Chaidh Còd VS a chleachdadh mar an àrainneachd leasachaidh leis an leudachadh Sruth-obrach GitLab (airson am faidhle roghainnean a dhearbhadh gu dìreach bhon àrainneachd leasachaidh).
Ro-ràdh goirid
CD - an ann nuair a tha thu dìreach a 'putadh, agus a h-uile càil air tuiteam air an neach-dèiligidh mar-thà?
Dè a th’ ann an CI / CD agus carson a tha feum agad air - faodaidh tu google gu furasta. Lorg sgrìobhainnean iomlan mu bhith a’ rèiteachadh pìoban ann an GitLab cuideachd furasta. An seo bheir mi cunntas goirid agus, ma ghabhas e dèanamh, gun lochdan air pròiseas an t-siostaim bho shealladh eun:
bidh an leasaiche a’ cur gealltanas chun stòr, a’ cruthachadh iarrtas co-aonaidh tron làrach, no ann an dòigh air choireigin eile, gu soilleir no gu h-obann a’ tòiseachadh na loidhne-phìoban,
tha a h-uile gnìomh air a thaghadh bhon rèiteachadh, agus leigidh na cumhaichean dhaibh a bhith air an cur air bhog anns a’ cho-theacsa ainmichte,
tha gnìomhan air an eagrachadh a rèir an ìrean,
tha ìrean air an cur gu bàs mu seach - i.e. co-shìnte tha a h-uile gnìomh aig an ìre seo air a chrìochnachadh,
ma dh’ fhailicheas an àrd-ùrlar (ie, ma dh’ fhailicheas co-dhiù aon de ghnìomhan an àrd-ùrlair), stadaidh an loidhne-phìoban (cha mhòr an-còmhnaidh),
ma thèid a h-uile ìre a chrìochnachadh gu soirbheachail, thathas den bheachd gu bheil an loidhne-phìoban soirbheachail.
Mar sin, tha againn:
loidhne-phìoban - seata de ghnìomhan air an eagrachadh ann an ìrean anns an urrainn dhut togail, deuchainn, còd pacaid, togail deiseil a chuir gu seirbheis sgòthan, msaa,
obair (obair) na aonad obrach a tha san amharc. Tha e a’ toirt a-steach sgriobt (èigneachail), suidheachaidhean cur air bhog, suidheachaidhean airson stuthan foillseachaidh / tasgadan, agus mòran a bharrachd.
A rèir sin, tha an obair nuair a bhios tu a’ stèidheachadh CI / CD an urra ri bhith a’ cruthachadh seata de ghnìomhan a chuireas an gnìomh a h-uile gnìomh riatanach airson togail, deuchainn agus foillseachadh còd agus artifacts.
Mus tòisich thu: carson?
Carson a tha Gitlab?
Oir nuair a dh’ fheumadh tasgaidhean prìobhaideach a chruthachadh airson pròiseactan peata, chaidh am pàigheadh air GitHub, agus bha mi sanntach. Tha na stòran air fàs an-asgaidh, ach gu ruige seo chan eil seo na adhbhar gu leòr dhomh gluasad gu GitHub.
Carson nach dèan thu loidhne-phìoban Azure DevOps?
Leis gu bheil an suidheachadh bunaiteach ann - chan eil eadhon eòlas air an loidhne-àithne a dhìth. Amalachadh le solaraichean git taobh a-muigh - ann an cliog no dhà, bidh toirt a-steach iuchraichean SSH airson a chuir chun stòr - cuideachd, tha an loidhne-phìoban furasta a rèiteachadh eadhon chan ann bho theamplaid.
Suidheachadh tòiseachaidh: na tha agad agus na tha thu ag iarraidh
Tha:
ionad-tasgaidh ann an GitLab.
Tha sinn ag iarraidh:
co-chruinneachadh agus deuchainn fèin-ghluasadach airson gach iarrtas aonaidh,
a’ togail phasganan airson gach iarrtas co-aonaidh agus a’ putadh chun mhaighstir, fhad ‘s a tha loidhne shònraichte anns an teachdaireachd gealltanas,
a’ cur pacaidean togte gu biadh prìobhaideach ann an Azure DevOps,
cruinneachadh sgrìobhainnean agus foillseachadh ann an Duilleagan GitLab,
bràistean!11
Tha na riatanasan a tha air am mìneachadh gu h-organach a’ tuiteam air a’ mhodail loidhne-phìoban a leanas:
Ìre 1 - co-chruinneachadh
Bidh sinn a’ cruinneachadh a’ chòd, a’ foillseachadh na faidhlichean toraidh mar artifacts
Ìre 2 - deuchainn
Bidh sinn a’ faighinn stuthan bhon ìre togail, a’ ruith dheuchainnean, a’ cruinneachadh dàta còmhdach còd
Ìre 3 - Cuir a-steach
Gnìomh 1 - tog am pasgan nuget agus cuir gu Azure DevOps e
Gnìomh 2 - cruinnichidh sinn an làrach bho xmldoc sa chòd stòr agus foillsichidh sinn e ann an Duilleagan GitLab
Nuair a phutas tu air a’ phutan Cruthaich, thèid am pròiseact a chruthachadh agus thèid do ath-stiùireadh chun duilleag aige. Air an duilleag seo, faodaidh tu feartan neo-riatanach a chuir dheth le bhith a ’dol gu roghainnean a’ phròiseict (ceangal nas ìsle san liosta air an taobh chlì -> Ro-shealladh -> bloc Seirbheisean Azure DevOps)
Rach gu Atrifacts, cliog Cruthaich biadhadh
Cuir a-steach ainm an stòr
Tagh faicsinneachd
Uncheck Cuir a-steach pasganan bho stòran poblach cumanta, gus nach bi an stòr a’ tionndadh gu bhith na dhump nuget clone
Rach gu roghainnean cunntais, tagh Personal Access Token
Cruthaich suaicheantas inntrigidh ùr
Ainm - neo-riaghailteach
Eagrachadh - gnàthach
Dligheach airson 1 bhliadhna aig a’ char as àirde
Farsaingeachd - Pacadh/Leugh & Sgrìobh
Dèan lethbhreac den tòcan cruthaichte - às deidh an uinneag modal a dhùnadh, cha bhi an luach ri fhaighinn
Rach gu na roghainnean repository ann an GitLab, tagh na roghainnean CI / CD
Leudaich am bloc caochlaidhean, cuir fear ùr ris
Ainm - gin às aonais beàrnan (bidh e ri fhaighinn san t-slige àithne)
Luach - comharra ruigsinneachd bho pharagraf 9
Tagh Caochladair Masg
Cuiridh seo crìoch air an ro-rèiteachadh.
Ag ullachadh am frèam rèiteachaidh
Gu gnàthach, bidh rèiteachadh CI / CD ann an GitLab a’ cleachdadh am faidhle .gitlab-ci.yml o fhreumh an tasgaidh. Faodaidh tu slighe neo-riaghailteach a shuidheachadh chun an fhaidhle seo ann an roghainnean an tasgaidh, ach sa chùis seo chan eil feum air.
Mar a chì thu bhon leudachadh, tha rèiteachadh san fhaidhle san fhòrmat YAML. Tha mion-fhiosrachadh anns na sgrìobhainnean mu na h-iuchraichean a dh’ fhaodar a chumail aig ìre àrd an rèiteachaidh, agus aig gach ìre neadachaidh.
An toiseach, leig dhuinn ceangal a chuir ris an ìomhaigh docker anns an fhaidhle rèiteachaidh, anns an tèid na gnìomhan a choileanadh. Airson seo lorg sinn Duilleag ìomhaighean .Net Core air Docker Hub. Tha a ' GitHub tha stiùireadh mionaideach ann air dè an ìomhaigh a thaghas tu airson diofar ghnìomhan. Tha ìomhaigh le .Net Core 3.1 freagarrach dhuinn a thogail, agus mar sin faodaidh tu a’ chiad loidhne a chuir ris an rèiteachadh
image: mcr.microsoft.com/dotnet/core/sdk:3.1
A-nis, nuair a thèid an loidhne-phìoban a chuir air bhog bho stòr ìomhaigh Microsoft, thèid an ìomhaigh ainmichte a luchdachadh sìos, anns an tèid a h-uile gnìomh bhon rèiteachadh a chuir gu bàs.
Is e an ath cheum cur ris ìre's. Gu gnàthach, tha GitLab a’ mìneachadh 5 ìrean:
.pre - air a dhèanamh suas gu gach ìre,
.post - air a dhèanamh às deidh gach ìre,
build - an toiseach às deidh .pre àrd-ùrlar,
test - an dàrna ìre,
deploy - an treas ìre.
Chan eil dad a’ cur casg ort bho bhith gan cur an cèill gu soilleir, ge-tà. Tha an òrdugh anns a bheil na ceumannan air an liostadh a 'toirt buaidh air an òrdugh anns a bheil iad air an coileanadh. Airson iomlanachd, leig dhuinn cuir ris an rèiteachadh:
stages:
- build
- test
- deploy
Airson debugging, tha e ciallach fiosrachadh fhaighinn mun àrainneachd anns a bheil na gnìomhan air an coileanadh. Nach cuir sinn seata òrdughan cruinneil a thèid a chuir gu bàs ro gach gnìomh le before_script:
before_script:
- $PSVersionTable.PSVersion
- dotnet --version
- nuget help | select-string Version
Tha e fhathast ri co-dhiù aon ghnìomh a chur ris gus an tòisich an loidhne-phìoban nuair a thèid na geallaidhean a chuir. Airson a-nis, leig dhuinn gnìomh falamh a chuir ris gus sealltainn:
dummy job:
script:
- echo ok
Bidh sinn a 'tòiseachadh air dearbhadh, bidh sinn a' faighinn teachdaireachd gu bheil a h-uile dad gu math, bidh sinn a 'gealltainn, bidh sinn a' putadh, bidh sinn a 'coimhead air na toraidhean air an làrach ... Agus gheibh sinn mearachd sgriobt - bash: .PSVersion: command not found. wtf?
Tha a h-uile dad loidsigeach - gu bunaiteach, bidh ruitheadairean (le uallach airson sgriobtaichean gnìomh a chuir an gnìomh agus air an toirt seachad le GitLab) a’ cleachdadh bash òrdughan a chur an gnìomh. Faodaidh tu seo a chàradh le bhith a’ sònrachadh gu soilleir anns an tuairisgeul gnìomh dè na tagaichean a bu chòir a bhith aig ruitheadair na loidhne-phìoban:
dummy job on windows:
script:
- echo ok
tags:
- windows
Sgoinneil! Tha an loidhne-phìoban a’ ruith a-nis.
Mothaichidh leughadair furachail, às deidh dha na ceumannan ainmichte ath-aithris, gun deach an obair a chrìochnachadh aig an ìre test, ged nach do shònraich sinn an àrd-ùrlar. Mar a shaoileadh tu test tha an ceum bunaiteach.
Leanaidh sinn oirnn a’ cruthachadh cnàimhneach an rèiteachaidh le bhith a’ cur ris a h-uile gnìomh a tha air a mhìneachadh gu h-àrd:
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
Fhuair sinn loidhne-phìoban nach robh gu sònraichte obrachail, ach a dh’ aindeoin sin ceart.
Stèidhich draibhearan
Leis nach eil sìoltachain brosnachaidh air an sònrachadh airson gin de na gnìomhan, nì an loidhne-phìoban gu h-iomlan a chuir gu bàs a h-uile uair a thèid gealltanas a phutadh chun stòr. Leis nach e seo an giùlan a tha thu ag iarraidh san fharsaingeachd, stèidhichidh sinn sìoltachain brosnachaidh airson gnìomhan.
Faodar sìoltachain a rèiteachadh ann an dà chruth: a-mhàin/ach a-mhàin и riaghailtean. Ann goirid, only/except a’ leigeil leat sìoltachain a rèiteachadh le luchd-brosnachaidh (merge_request, mar eisimpleir - a’ suidheachadh na h-obrach a thèid a chur an gnìomh gach uair a thèid iarrtas tarraing a chruthachadh agus gach uair a thèid gealltanasan a chuir chun mheur a tha mar thùs san iarrtas co-aonaidh) agus ainmean meur (a’ gabhail a-steach cleachdadh abairtean cunbhalach); rules a’ leigeil leat seata de chumhachan a ghnàthachadh agus, gu roghnach, suidheachadh coileanadh na h-obrach atharrachadh a rèir soirbheachas gnìomhan roimhe (when ann an GitLab CI/CD).
Cuimhnichidh sinn seata de riatanasan - co-chruinneachadh agus deuchainn a-mhàin airson iarrtas aonaidh, pacadh agus cur gu Azure DevOps - airson iarrtas aonaidh agus putadh chun mhaighstir, gineadh sgrìobhainnean - airson putadh chun mhaighstir.
An toiseach, leig dhuinn a’ ghnìomh togail còd a stèidheachadh le bhith a’ cur riaghailt ris a bhios a’ losgadh dìreach air iarrtas co-aonaidh:
build job:
# snip
only:
- merge_request
A-nis leig dhuinn an obair pacaidh a chuir air dòigh gus an t-iarrtas aonaidh a losgadh agus geallaidhean a chuir ris a’ mhaighstir:
Rè obair build job bidh stuthan togail againn a ghabhas ath-chleachdadh ann an gnìomhan às deidh sin. Gus seo a dhèanamh, feumaidh tu na slighean a chur ris an rèiteachadh gnìomh, na faidhlichean air am feum thu a shàbhaladh agus ath-chleachdadh anns na gnìomhan a leanas, chun an iuchair artifacts:
Bidh slighean a 'toirt taic do chairtean fiadhaich, a tha gu cinnteach gan dèanamh nas fhasa a shuidheachadh.
Ma chruthaicheas gnìomh artifacts, bidh cothrom aig gach gnìomh às deidh sin faighinn thuca - bidh iad suidhichte air na h-aon shlighean an coimeas ri freumh an stòrais a chaidh a chruinneachadh bhon ghnìomh thùsail. Tha artifacts cuideachd rim faighinn airson an luchdachadh sìos air an làrach.
A-nis gu bheil am frèam rèiteachaidh againn deiseil (agus air a dhearbhadh), is urrainn dhuinn a dhol air adhart gu bhith a’ sgrìobhadh sgriobtaichean airson gnìomhan.
Bidh sinn a’ sgrìobhadh sgriobtaichean
Is dòcha, aon uair, ann an galaxy fada, fada air falbh, gur e pian a bh’ ann am pròiseactan togail (a’ gabhail a-steach an fheadhainn air .net) bhon loidhne-àithne. A-nis faodaidh tu am pròiseact a thogail, a dhearbhadh agus fhoillseachadh ann an 3 sgiobaidhean:
dotnet build
dotnet test
dotnet pack
Gu nàdarra, tha cuid de nuances ann air sgàth ‘s gun dèan sinn iom-fhillteachd air na h-òrdughan.
Tha sinn ag iarraidh togail fuasglaidh, chan e togail deasbaid, agus mar sin bidh sinn a’ cur ri gach àithne -c Release
Nuair a bhios sinn a’ dèanamh deuchainn, tha sinn airson dàta còmhdach còd a chruinneachadh, agus mar sin feumaidh sinn anailisiche còmhdaich a thoirt a-steach do na leabharlannan deuchainn:
Cuir am pasgan ris a h-uile leabharlann deuchainn coverlet.msbuild: dotnet add package coverlet.msbuild bho phasgan pròiseict
Cuir ris an àithne ruith deuchainn /p:CollectCoverage=true
Leigidh GitLab leat abairt àbhaisteach a shònrachadh gus staitistig fhaighinn, a gheibhear an uairsin ann an cruth bràiste. Tha an abairt àbhaisteach air a shònrachadh anns na roghainnean gnìomh leis an iuchair coverage; feumaidh buidheann glacaidh a bhith san abairt, agus thèid an luach a chuir chun bhràiste:
test and cover job:
# snip
coverage: /|s*Totals*|s*(d+[,.]d+%)/
An seo gheibh sinn staitistig bho loidhne le còmhdach loidhne iomlan.
Foillsich pasganan agus sgrìobhainnean
Tha an dà ghnìomh clàraichte airson na h-ìre mu dheireadh den loidhne-phìoban - leis gu bheil an co-chruinneachadh agus na deuchainnean seachad, is urrainn dhuinn na leasachaidhean againn a cho-roinn leis an t-saoghal.
An toiseach, smaoinich air foillseachadh gu stòr a’ phacaid:
Mura h-eil faidhle rèiteachaidh nuget aig a’ phròiseact (nuget.config), cruthaich fear ùr: dotnet new nugetconfig
Airson dè: is dòcha nach eil cothrom sgrìobhaidh aig an ìomhaigh air rèiteachaidhean cruinne (cleachdaiche is inneal). Gus nach glac sinn mearachdan, bidh sinn dìreach a’ cruthachadh rèiteachadh ionadail ùr agus ag obair leis.
Nach cuir sinn stòr pacaid ùr ris an rèiteachadh ionadail: nuget sources add -name <name> -source <url> -username <organization> -password <gitlab variable> -configfile nuget.config -StorePasswordInClearText
organization - ainm na buidhne ann an Azure DevOps
gitlab variable - ainm an caochladair leis an tòcan ruigsinneachd air a chur ri GitLab ("Ag ullachadh cunntasan", td. 11). Gu nàdarra, ann an cruth $variableName
Ma tha mearachdan ann, dh’ fhaodadh gum biodh e feumail cuir ris -verbosity detailed
A’ cur a’ phacaid chun stòr: nuget push -source <name> -skipduplicate -apikey <key> *.nupkg
Bidh sinn a’ cur a h-uile pasgan bhon eòlaire gnàthach, mar sin *.nupkg.
name - bhon cheum gu h-àrd.
key - loidhne sam bith. Ann an Azure DevOps, anns an uinneag Connect to feed, is e an eisimpleir an-còmhnaidh an loidhne az.
-skipduplicate - nuair a dh’ fheuchas tu ri pasgan a tha ann mu thràth a chuir às aonais an iuchair seo, tillidh an stòr mearachd 409 Conflict; leis an iuchair, thèid an cur air falbh.
A-nis leig leinn cruthachadh sgrìobhainnean a stèidheachadh:
An toiseach, anns an stòr, anns a’ phrìomh mheur, bidh sinn a’ tòiseachadh am pròiseact docfx. Gus seo a dhèanamh, ruith an àithne bhon fhreumh docfx init agus gu h-eadar-ghnìomhach suidhich na prìomh chrìochan airson sgrìobhainnean togail. Tuairisgeul mionaideach air suidheachadh pròiseict as ìsle an seo.
Nuair a bhios tu a’ rèiteachadh, tha e cudromach an eòlaire toraidh a shònrachadh ..public - Bidh GitLab gu gnàthach a’ toirt susbaint a’ phasgan poblach ann am freumh an stòrais mar stòr airson Duilleagan. Air sgàth bidh am pròiseact suidhichte ann am pasgan air a neadachadh san stòr - cuir toradh ris an ìre suas san t-slighe.
Nach brùth sinn na h-atharrachaidhean gu GitLab.
Cuir gnìomh ri rèiteachadh na loidhne-phìoban pages (facal glèidhte airson gnìomhan foillseachaidh làraich ann an Duilleagan GitLab):
Sgriobt:
nuget install docfx.console -version 2.51.0 - stàladh docfx; tha an dreach air a shònrachadh gus dèanamh cinnteach gu bheil na slighean stàlaidh pacaid ceart.
.docfx.console.2.51.0toolsdocfx.exe .docfx_projectdocfx.json - a 'cruinneachadh sgrìobhainnean
Feartan nòd:
pages:
# snip
artifacts:
paths:
- public
Diofar liriceach mu docfx
Roimhe sin, nuair a bha mi a’ stèidheachadh pròiseact, shònraich mi stòr a’ chòd airson na sgrìobhainnean mar fhaidhle fuasglaidh. Is e am prìomh ana-cothrom gu bheil sgrìobhainnean air an cruthachadh cuideachd airson pròiseactan deuchainn. Mura h-eil seo riatanach, faodaidh tu an luach seo a shuidheachadh chun nód metadata.src:
metadata.src.src: "../" - thèid sinn aon ìre suas an coimeas ris an àite docfx.json, oir ann am pàtrain, chan eil rannsachadh suas craobh an eòlaire ag obair.
metadata.src.files: ["**/*.csproj"] - pàtran cruinne, bidh sinn a’ tional a h-uile pròiseact C # bho gach clàr.
metadata.src.exclude: ["*.tests*/**"] - pàtran cruinne, cuir a-mach a h-uile càil bho phasganan le .tests Anns an tiotal
Fo-iomlan
Faodar a leithid de rèiteachadh sìmplidh a chruthachadh ann an dìreach leth uair a thìde agus cupa cofaidh no dhà, a leigeas leat dèanamh cinnteach gu bheil an còd air a thogail agus gu bheil na deuchainnean a ’dol seachad, pasgan ùr a thogail, na sgrìobhainnean ùrachadh agus an t-sùil a thoileachadh le brèagha. bràistean ann an README a’ phròiseict le gach iarrtas co-aonaidh agus gan cur chun mhaighstir.
Deireannach .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
A’ bruidhinn air bràistean
Air an sgàth, às deidh a h-uile càil, chaidh a h-uile càil a thòiseachadh!
Tha bràistean le inbhe loidhne-phìoban agus còmhdach còd rim faighinn ann an GitLab anns na roghainnean CI/CD ann am bloc pìoban Gtntral:
Chruthaich mi bràiste le ceangal ris na sgrìobhainnean air an àrd-ùrlar Sgiath.io - tha a h-uile dad gu math sìmplidh an sin, faodaidh tu do bhràiste fhèin a chruthachadh agus fhaighinn le iarrtas.
![Пример с Shields.io](https://img.shields.io/badge/custom-badge-blue)
Leigidh Azure DevOps Artifacts leat bràistean a chruthachadh airson pacaidean leis an dreach as ùire. Gus seo a dhèanamh, anns an stòr air làrach Azure DevOps, feumaidh tu briogadh air Cruthaich baidse airson a’ phacaid taghte agus dèan lethbhreac den chomharradh comharrachaidh:
A 'cur bòidhchead ris
A 'toirt cuideam air pìosan rèiteachaidh cumanta
Fhad ‘s a bha mi a’ sgrìobhadh an rèiteachaidh agus a’ sgrùdadh tro na sgrìobhainnean, thàinig mi tarsainn air feart inntinneach de YAML - ag ath-chleachdadh chriomagan.
Mar a chì thu bho na roghainnean gnìomh, feumaidh iad uile an taga windows aig an ruitheadair, agus thèid am piobrachadh nuair a thèid iarrtas co-aonaidh a chuir chun mhaighstir / cruthaichte (ach a-mhàin sgrìobhainnean). Nach cuir sinn seo ris a’ chriomag a chleachdas sinn a-rithist:
Agus a-nis is urrainn dhuinn a’ chriomag a chaidh ainmeachadh na bu thràithe a chuir a-steach san tuairisgeul gnìomh:
build job:
<<: *common_tags
<<: *common_only
Feumaidh ainmean bloighean tòiseachadh le dot, gus nach tèid a mhìneachadh mar ghnìomh.
Tionndadh pacaid
Nuair a bhios e a’ cruthachadh pasgan, bidh an neach-cruinneachaidh a’ sgrùdadh na suidsichean loidhne-àithne, agus mura h-eil iad ann, faidhlichean a’ phròiseict; nuair a lorgas e nód Tionndadh, bheir e a luach mar an dreach den phacaid a thathar a’ togail. Tha e a 'tionndadh a-mach, gus pasgan a thogail le dreach ùr, feumaidh tu an dàrna cuid ùrachadh ann am faidhle a' phròiseict no a thoirt seachad mar argamaid loidhne-àithne.
Nach cuir sinn aon Liosta Miann eile ris - leig leis an dà àireamh bheag san dreach a bhith mar a’ bhliadhna agus ceann-latha togail a’ phacaid, agus cuir dreachan ro-aithris ris. Gu dearbh, faodaidh tu an dàta seo a chuir ri faidhle a ’phròiseict agus sgrùdadh a dhèanamh ro gach tagradh - ach faodaidh tu cuideachd a dhèanamh san loidhne-phìoban, a’ tional an dreach pacaid bhon cho-theacsa agus ga thoirt tron argamaid loidhne-àithne.
Aontaichidh sinn ma tha loidhne mar sin anns an teachdaireachd gealltanas release (v./ver./version) <version number> (rev./revision <revision>)?, an uairsin bheir sinn an tionndadh den phacaid bhon loidhne seo, cuir ris a’ cheann-latha làithreach e agus bheir sinn seachad e mar argamaid don àithne dotnet pack. Às aonais loidhne, cha bhith sinn dìreach a’ cruinneachadh a’ phacaid.
Tha an sgriobt a leanas a 'fuasgladh na duilgheadas seo:
# регулярное выражение для поиска строки с версией
$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=$version
A' cur sgriobt ri obair pack and deploy job agus cùm sùil gheur air cruinneachadh phasganan an làthair sreang sònraichte anns an teachdaireachd gealltanas.
Iomlan
Às deidh timcheall air leth uair a thìde no uair a thìde a chuir seachad a’ sgrìobhadh an rèiteachaidh, a’ dì-bhugachadh anns an t-slige chumhachdan ionadail agus, is dòcha, cur air bhog neo-shoirbheachail, fhuair sinn rèiteachadh sìmplidh airson gnìomhan àbhaisteach a dhèanamh fèin-ghluasadach.
Gu dearbh, tha GitLab CI / CD tòrr nas fharsainge agus ioma-thaobhach na dh’ fhaodadh a bhith coltach às deidh an stiùireadh seo a leughadh - chan eil sin fìor idir. An sin eadhon Tha Auto DevOpsa ’ceadachadh
gu fèin-obrachail lorg, togail, deuchainn, cleachdadh, agus sùil a chumail air na h-aplacaidean agad
A-nis tha na planaichean airson loidhne-phìoban a dhealbhadh airson a bhith a’ cleachdadh thagraidhean gu Azure, a’ cleachdadh Pulumi agus a’ dearbhadh an àrainneachd targaid gu fèin-ghluasadach, a bhios air a chòmhdach san ath artaigil.