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:

Iùl air CI/CD ann an GitLab airson an neach-tòiseachaidh (cha mhòr).

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,
  • àrd-ùrlar (ìre) - aonad eagrachaidh loidhne-phìoban, anns a bheil 1+ gnìomh,
  • 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

Nach tòisich sinn!

A 'cruinneachadh an rèiteachaidh

Ag ullachadh chunntasan

  1. Cruthaich cunntas ann an Microsoft Azure

  2. Rach gu Azure DevOps

  3. Bidh sinn a’ cruthachadh pròiseact ùr

    1. Ainm - gin
    2. Faicsinneachd - sam bith
      Iùl air CI/CD ann an GitLab airson an neach-tòiseachaidh (cha mhòr).

  4. 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)
    Iùl air CI/CD ann an GitLab airson an neach-tòiseachaidh (cha mhòr).

  5. Rach gu Atrifacts, cliog Cruthaich biadhadh

    1. Cuir a-steach ainm an stòr
    2. Tagh faicsinneachd
    3. Uncheck Cuir a-steach pasganan bho stòran poblach cumanta, gus nach bi an stòr a’ tionndadh gu bhith na dhump nuget clone
      Iùl air CI/CD ann an GitLab airson an neach-tòiseachaidh (cha mhòr).

  6. Cliog Ceangail gus biadhadh, tagh Visual Studio, dèan lethbhreac de Stòr bhon bhloc Setup Machine
    Iùl air CI/CD ann an GitLab airson an neach-tòiseachaidh (cha mhòr).

  7. Rach gu roghainnean cunntais, tagh Personal Access Token
    Iùl air CI/CD ann an GitLab airson an neach-tòiseachaidh (cha mhòr).

  8. Cruthaich suaicheantas inntrigidh ùr

    1. Ainm - neo-riaghailteach
    2. Eagrachadh - gnàthach
    3. Dligheach airson 1 bhliadhna aig a’ char as àirde
    4. Farsaingeachd - Pacadh/Leugh & Sgrìobh
      Iùl air CI/CD ann an GitLab airson an neach-tòiseachaidh (cha mhòr).

  9. Dèan lethbhreac den tòcan cruthaichte - às deidh an uinneag modal a dhùnadh, cha bhi an luach ri fhaighinn

  10. Rach gu na roghainnean repository ann an GitLab, tagh na roghainnean CI / CD
    Iùl air CI/CD ann an GitLab airson an neach-tòiseachaidh (cha mhòr).

  11. Leudaich am bloc caochlaidhean, cuir fear ùr ris

    1. Ainm - gin às aonais beàrnan (bidh e ri fhaighinn san t-slige àithne)
    2. Luach - comharra ruigsinneachd bho pharagraf 9
    3. Tagh Caochladair Masg
      Iùl air CI/CD ann an GitLab airson an neach-tòiseachaidh (cha mhòr).

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:

pack and deploy job:
  # snip
  only:
    - merge_request
    - master

Mar a chì thu, tha a h-uile dad sìmplidh agus sìmplidh.

Faodaidh tu cuideachd an gnìomh a chuir na theine a-mhàin ma thèid iarrtas co-aonaidh a chruthachadh le targaid sònraichte no meur stòr:

  rules:
    - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"

Fo chumhachan, faodaidh tu a chleachdadh caochladairean air an liostadh an seo; riaghailtean rules neo-chòrdail ris na riaghailtean only/except.

A 'rèiteachadh Sàbhaladh Artifact

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:

build job:
  # snip
  artifacts:
    paths:
      - path/to/build/artifacts
      - another/path
      - MyCoolLib.*/bin/Release/*

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.

  1. Tha sinn ag iarraidh togail fuasglaidh, chan e togail deasbaid, agus mar sin bidh sinn a’ cur ri gach àithne -c Release
  2. 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:
    1. Cuir am pasgan ris a h-uile leabharlann deuchainn coverlet.msbuild: dotnet add package coverlet.msbuild bho phasgan pròiseict
    2. Cuir ris an àithne ruith deuchainn /p:CollectCoverage=true
    3. Cuir iuchair ris an rèiteachadh gnìomh deuchainn gus toraidhean còmhdaich fhaighinn (faic gu h-ìosal)
  3. Nuair a bhios tu a’ pacadh a’ chòd ann am pasganan nuget, suidhich an eòlaire toraidh airson na pacaidean: -o .

A 'cruinneachadh dàta còmhdach còd

Às deidh na deuchainnean a ruith, bidh clò-bhualaidhean Coverlet a’ ruith staitistig chun chonsail:

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% |
+---------+--------+--------+--------+

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:

  1. 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.

  2. 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
    1. name - ainm stòr ionadail, chan eil e riatanach
    2. url - URL an tùs bhon àrd-ùrlar "Ag ullachadh cunntasan", td 6
    3. organization - ainm na buidhne ann an Azure DevOps
    4. 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
    5. -StorePasswordInClearText - hack gus faighinn seachad air a’ mhearachd ruigsinneachd a chaidh a dhiùltadh (Chan e mise a’ chiad fhear a rinn ceum air an ràcan seo)
    6. Ma tha mearachdan ann, dh’ fhaodadh gum biodh e feumail cuir ris -verbosity detailed
  3. A’ cur a’ phacaid chun stòr: nuget push -source <name> -skipduplicate -apikey <key> *.nupkg
    1. Bidh sinn a’ cur a h-uile pasgan bhon eòlaire gnàthach, mar sin *.nupkg.
    2. name - bhon cheum gu h-àrd.
    3. key - loidhne sam bith. Ann an Azure DevOps, anns an uinneag Connect to feed, is e an eisimpleir an-còmhnaidh an loidhne az.
    4. -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:

  1. 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.
    1. 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.
  2. Nach brùth sinn na h-atharrachaidhean gu GitLab.
  3. Cuir gnìomh ri rèiteachadh na loidhne-phìoban pages (facal glèidhte airson gnìomhan foillseachaidh làraich ann an Duilleagan GitLab):
    1. Sgriobt:
      1. 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.
      2. .docfx.console.2.51.0toolsdocfx.exe .docfx_projectdocfx.json - a 'cruinneachadh sgrìobhainnean
    2. 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": "../",
          "files": [
            "**/*.csproj"
          ],
          "exclude":[
            "*.tests*/**"
          ]
        }
      ],
      // --- snip ---
    },
    // --- snip ---
  ],
  // --- snip ---
}

  1. 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.
  2. metadata.src.files: ["**/*.csproj"] - pàtran cruinne, bidh sinn a’ tional a h-uile pròiseact C # bho gach clàr.
  3. 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:

Iùl air CI/CD ann an GitLab airson an neach-tòiseachaidh (cha mhòr).

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)

Iùl air CI/CD ann an GitLab airson an neach-tòiseachaidh (cha mhòr).

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:

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).

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:

.common_tags: &common_tags
  tags:
    - windows
.common_only: &common_only
  only:
    - merge_requests
    - master

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.

Source: www.habr.com

Cuir beachd ann