Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

Nó conas suaitheantais áille a fháil do do thionscadal i dtráthnóna amháin de chódú éasca

Is dócha, tá gach forbróir a bhfuil ar a laghad tionscadal peataí amháin ag pointe éigin itch faoi suaitheantais álainn le statuses, clúdach cód, leaganacha pacáiste i nuget ... Agus thug an itch seo dom an t-alt seo a scríobh. Mar ullmhúchán chun é a scríobh, fuair mé an áilleacht seo i gceann de mo thionscadail:

Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

Siúlfaidh an t-alt seo tú tríd an socrú bunúsach de chomhtháthú agus seachadadh leanúnach do thionscadal leabharlainne ranga .Net Core i GitLab, ag foilsiú doiciméadú chuig GitLab Pages, agus ag brú pacáistí tógtha chuig fotha príobháideach in Azure DevOps.

Baineadh úsáid as Cód VS mar an timpeallacht forbartha leis an síneadh Sreabhadh Oibre GitLab (chun an comhad socruithe a bhailíochtú go díreach ón timpeallacht forbartha).

Réamhrá gearr

CD - an bhfuil sé nuair a bhrúigh tú díreach, agus tá gach rud tar éis titim cheana féin ar an gcliant?

Cad é CI / CD agus cén fáth a dteastaíonn sé uait - is féidir leat é a google go héasca. Faigh doiciméadú iomlán ar chumrú píblínte i GitLab éasca freisin. Anseo déanfaidh mé cur síos gairid agus, más féidir, gan lochtanna ar phróiseas an chórais ó radharc éan:

  • seolann an forbróir gealltanas chuig an stór, cruthaíonn sé iarratas cumaisc tríd an suíomh, nó ar bhealach éigin eile, a chuireann tús leis an bpíblíne go sainráite nó go hintuigthe,
  • roghnaítear na tascanna go léir ón gcumraíocht, agus ceadaíonn na coinníollacha iad a sheoladh sa chomhthéacs tugtha,
  • eagraítear tascanna de réir a gcéimeanna,
  • céimeanna a fhorghníomhú ar a seal - i.e. comhthreomhar go gcríochnaítear tascanna uile na céime seo,
  • má theipeann ar an gcéim (i.e., teipeann ar cheann amháin de thascanna na céime ar a laghad), stopann an phíblíne (beagnach igconaí),
  • má chríochnaítear gach céim go rathúil, meastar go n-éireoidh leis an bpíblíne.

Mar sin, tá:

  • píblíne - sraith tascanna eagraithe i gcéimeanna inar féidir leat tógáil, tástáil, cód pacáiste, tógáil críochnaithe a imscaradh chuig seirbhís scamall, etc.,
  • stáitse (céim) — aonad eagrúcháin píblíne, tá 1+ tasc,
  • tasc (post) aonad oibre atá ar siúl. Tá sé comhdhéanta de script (riachtanach), coinníollacha seolta, socruithe le haghaidh foilsiú / taisceadh déantáin, agus go leor eile.

Dá réir sin, is é an tasc a bhaineann le CI / CD a bhunú ná sraith tascanna a chruthú a chuireann na gníomhartha riachtanacha go léir i bhfeidhm chun cód agus artifacts a thógáil, a thástáil agus a fhoilsiú.

Sula dtosaíonn tú: cén fáth?

  • Cén fáth Gitlab?

Toisc nuair a bhí sé riachtanach stórtha príobháideacha a chruthú le haghaidh tionscadal peataí, íocadh iad ar GitHub, agus bhí mé greedy. Tá na stórtha saor in aisce, ach go dtí seo ní leor cúis é seo dom bogadh go GitHub.

  • Cén fáth nach bhfuil Píblínte Azure DevOps?

Toisc go bhfuil an socrú bunrang - ní gá fiú eolas ar an líne ordaithe. Comhtháthú le soláthraithe git seachtracha - i gceann cúpla cad a tharlaíonn, tá allmhairiú eochracha SSH le seoladh geallta chuig an stór - freisin, tá an phíblíne cumraithe go héasca fiú ní ó theimpléad.

Seasamh tosaigh: cad atá agat agus cad atá uait

Tá:

  • stór i GitLab.

Ba mhaith linn:

  • cóimeáil agus tástáil uathoibríoch do gach iarratas cumaisc,
  • pacáistí a thógáil do gach iarratas cumaisc agus brú chuig an máistir, ar choinníoll go bhfuil líne áirithe sa teachtaireacht tiomantais,
  • pacáistí tógtha a sheoladh chuig fotha príobháideach in Azure DevOps,
  • doiciméid a chur le chéile agus a fhoilsiú ar Leathanaigh GitLab,
  • suaitheantais!11

Tagann na ceanglais a thuairiscítear go horgánach ar an tsamhail píblíne seo a leanas:

  • Céim 1 - Tionól
    • Bailímid an cód, foilsímid na comhaid aschuir mar artifacts
  • Céim 2 - tástáil
    • Faighimid déantáin ón gcéim tógála, reáchtáilimid tástálacha, bailímid sonraí clúdaigh cód
  • Céim 3 - Cuir isteach
    • Tasc 1 - tóg an pacáiste nuget agus seol chuig Azure DevOps é
    • Tasc 2 - bailímid an suíomh ó xmldoc sa chód foinse agus foilsímid é i Leathanaigh GitLab

Let's tús!

An chumraíocht a bhailiú

Cuntais a ullmhú

  1. Cruthaigh cuntas i Microsoft azure

  2. Téigh Azure DevOps

  3. Cruthaímid tionscadal nua

    1. Ainm - ar bith
    2. Infheictheacht - ar bith
      Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

  4. Nuair a chliceálann tú ar an gcnaipe Cruthaigh, cruthófar an tionscadal agus déanfar tú a atreorú chuig a leathanach. Ar an leathanach seo, is féidir leat gnéithe neamhriachtanacha a dhíchumasú trí dul go dtí socruithe an tionscadail (nasc níos ísle sa liosta ar chlé -> Forbhreathnú -> bloc Seirbhísí Azure DevOps)
    Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

  5. Téigh go Atrifacts, cliceáil Cruthaigh fotha

    1. Cuir isteach ainm na foinse
    2. Roghnaigh infheictheacht
    3. Díthiceáil Cuir pacáistí ó fhoinsí poiblí coitianta san áireamh, ionas nach n-iompaíonn an fhoinse isteach i gclón dumpála nuget
      Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

  6. Cliceáil Connect to feed, roghnaigh Visual Studio, cóipeáil Foinse ón mBloc Socrú Meaisín
    Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

  7. Téigh go dtí socruithe cuntais, roghnaigh Comhartha Rochtana Pearsanta
    Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

  8. Cruthaigh comhartha rochtana nua

    1. Ainm - treallach
    2. Eagraíocht - Reatha
    3. Bailí ar feadh 1 bhliain ar a mhéad
    4. Scóip - Pacáistiú/Léamh & Scríobh
      Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

  9. Cóipeáil an comhartha cruthaithe - tar éis an fhuinneog modal a dhúnadh, ní bheidh an luach ar fáil

  10. Téigh go dtí na socruithe stór i GitLab, roghnaigh na socruithe CI / CD
    Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

  11. Leathnaigh an bloc Athróga, cuir ceann nua leis

    1. Ainm - aon cheann gan spásanna (beidh sé ar fáil sa bhlaosc ordú)
    2. Luach - comhartha rochtana ó mhír 9
    3. Roghnaigh Athróg Masc
      Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

Críochnaíonn sé seo an réamhchumraíocht.

An creat cumraíochta a ullmhú

De réir réamhshocraithe, úsáideann cumraíocht CI/CD i GitLab an comhad .gitlab-ci.yml ó fhréamh an stór. Is féidir leat cosán treallach a shocrú don chomhad seo i socruithe an taisclainne, ach sa chás seo níl sé riachtanach.

Mar a fheiceann tú ón síneadh, tá cumraíocht san fhormáid sa chomhad YAML. Sonraíonn an doiciméadú cé na heochracha is féidir a choinneáil ag barrleibhéal na cumraíochta, agus ag gach ceann de na leibhéil neadaithe.

Ar dtús, cuirimis nasc leis an íomhá docker sa chomhad cumraíochta, ina ndéanfar na tascanna. Chun seo a fháil againn Leathanach íomhánna .Net Core ar Docker Hub. I GitHub tá treoir mhionsonraithe ann maidir leis an íomhá atá le roghnú le haghaidh tascanna éagsúla. Tá íomhá le .Net Core 3.1 oiriúnach dúinn a thógáil, mar sin ná bíodh drogall ort an chéad líne a chur leis an gcumraíocht

image: mcr.microsoft.com/dotnet/core/sdk:3.1

Anois, nuair a sheoltar an phíblíne ó stór íomhá Microsoft, déanfar an íomhá sonraithe a íoslódáil, ina ndéanfar gach tasc ón gcumraíocht a fhorghníomhú.

Is é an chéad chéim eile a chur leis céim's. De réir réamhshocraithe, sainmhíníonn GitLab 5 chéim:

  • .pre - a dhéantar suas go dtí gach céim,
  • .post - a dhéantar tar éis gach céime,
  • build - ar dtús tar éis .pre stáitse,
  • test - dara céim,
  • deploy - an tríú céim.

Ní chuireann aon rud cosc ​​ort iad a fhógairt go sainráite, áfach. Bíonn tionchar ag an ord ina liostaítear na céimeanna ar an ord ina ndéantar iad. Ar mhaithe le hiomláine, cuirimis leis an gcumraíocht:

stages:
  - build
  - test
  - deploy

Le haghaidh dífhabhtaithe, bíonn ciall le heolas a fháil faoin timpeallacht ina gcuirtear na tascanna i gcrích. Cuirfimid sraith dhomhanda orduithe a dhéanfar a fhorghníomhú roimh gach tasc le before_script:

before_script:
  - $PSVersionTable.PSVersion
  - dotnet --version
  - nuget help | select-string Version

Tá sé fós le tasc amháin ar a laghad a chur leis ionas go dtosófar ar an bpíblíne nuair a sheoltar na gealltanais. Faoi láthair, cuirimis tasc folamh leis chun a léiriú:

dummy job:
  script:
    - echo ok

Cuirimid tús le bailíochtú, faigheann muid teachtaireacht go bhfuil gach rud go breá, geallaimid, brúimid, breathnaíonn muid ar na torthaí ar an suíomh ... Agus faigheann muid earráid scripte - bash: .PSVersion: command not found. wtf?

Tá gach rud loighciúil - de réir réamhshocraithe, úsáideann reathaithe (atá freagrach as scripteanna tascanna a fheidhmiú agus arna soláthar ag GitLab) bash chun orduithe a fhorghníomhú. Is féidir leat é seo a shocrú ach a shonrú go sainráite i gcur síos an taisc cad iad na clibeanna ar cheart a bheith ag rádala an phíblíne feidhmithe:

dummy job on windows:
  script:
    - echo ok
  tags:
    - windows

Go hiontach! Tá an phíblíne ar siúl anois.

Tabharfaidh léitheoir aireach, tar éis dó na céimeanna sonraithe a athdhéanamh, faoi deara go raibh an tasc críochnaithe ar an gcéim test, cé nár shonraigh muid an chéim. Mar a d'fhéadfá buille faoi thuairim test Is é an chéim réamhshocraithe.

Leanaimis ar aghaidh ag cruthú creatlach na cumraíochta trí na tascanna go léir a gcuirtear síos orthu thuas a chur leis:

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

Fuaireamar píblíne nach raibh ag feidhmiú go háirithe, ach mar sin féin ceart.

Truiceoirí a shocrú

Mar gheall ar an bhfíric nach bhfuil aon scagairí truicir sonraithe le haghaidh aon cheann de na tascanna, beidh an píblíne go hiomlán a fhorghníomhú gach uair a bhrúitear gealltanas chuig an stór. Ós rud é nach é seo an t-iompar atá ag teastáil go ginearálta, cuirfimid scagairí truicear ar bun le haghaidh tascanna.

Is féidir na scagairí a chumrú in dhá fhormáid: amháin/ach amháin и rialacha. Go hachomair, only/except ligeann sé duit scagairí a chumrú trí thruicear (merge_request, mar shampla - leagann sé síos an tasc atá le déanamh gach uair a chruthaítear iarratas tarraingthe agus gach uair a chuirtear gealltanais chuig an mbrainse is foinse san iarratas cumaisc) agus ainmneacha na gcraobhacha (lena n-áirítear úsáid a bhaint as nathanna rialta); rules ligeann sé duit sraith coinníollacha a shaincheapadh agus, go roghnach, an coinníoll feidhmithe taisc a athrú ag brath ar rath na dtascanna roimhe seo (when i GitLab CI/CD).

Meabhraímid sraith riachtanas - cóimeáil agus tástáil ach amháin le haghaidh iarratais chumaisc, pacáistiú agus seoladh chuig Azure DevOps - le haghaidh iarratais chumaisc agus pushes chuig an máistir, giniúint doiciméadúcháin - le haghaidh pushes chuig an máistir.

Ar dtús, déanaimis an tasc tógála cód a shocrú trí riail a chur leis nach dtiteann ach ar iarratas cumaisc:

build job:
  # snip
  only:
    - merge_request

Anois déanaimis an tasc pacáistithe a shocrú chun an t-iarratas cumaisc a thine agus gealltanais a chur leis an máistir:

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

Mar a fheiceann tú, tá gach rud simplí agus simplí.

Ní féidir leat an tasc a chur ar ceal ach amháin má chruthaítear iarratas cumaisc le sprioc sonrach nó brainse foinse:

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

Faoi choinníollacha, is féidir leat é a úsáid athróga atá liostaithe anseo; rialacha rules nach luíonn leis na rialacha only/except.

Cumraíocht Déantán a shábháil

Le linn taisc build job beidh déantáin tógála againn ar féidir iad a athúsáid i dtascanna ina dhiaidh sin. Chun seo a dhéanamh, ní mór duit na cosáin a chur le cumraíocht an taisc, na comhaid a mbeidh ort iad a shábháil agus a athúsáid sna tascanna seo a leanas, chuig an eochair artifacts:

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

Tacaíonn cosáin le saoróga, rud a fhágann go bhfuil siad níos éasca le socrú.

Má chruthaíonn tasc déantáin, ansin beidh gach tasc ina dhiaidh sin in ann rochtain a fháil orthu - beidh siad suite ar na cosáin chéanna i gcoibhneas leis an bhfréamh stór a bailíodh ón tasc bunaidh. Tá déantáin ar fáil le híoslódáil ar an láithreán freisin.

Anois go bhfuil an creat cumraíochta réidh (agus tástáilte) againn, is féidir linn leanúint ar aghaidh le scripteanna a scríobh le haghaidh tascanna.

Scríobhaimid scripteanna

B’fhéidir, uair amháin, i réaltra i bhfad agus i gcéin, gur mhór an phian é tionscadail tógála (lena n-áirítear iad siúd ar .net) ón líne ceannais. Anois is féidir leat an tionscadal a thógáil, a thástáil agus a fhoilsiú i 3 fhoireann:

dotnet build
dotnet test
dotnet pack

Ar ndóigh, tá roinnt nuances mar gheall ar a mbeidh muid ag casta na n-orduithe beagán.

  1. Teastaíonn uainn tógáil scaoileadh, ní tógáil dífhabhtaithe, mar sin cuirimid le gach ordú -c Release
  2. Agus muid ag tástáil, ba mhaith linn sonraí clúdaigh cód a bhailiú, mar sin ní mór dúinn anailísí clúdaigh a chur san áireamh sna leabharlanna tástála:
    1. Cuir an pacáiste leis na leabharlanna tástála go léir coverlet.msbuild: dotnet add package coverlet.msbuild ó fhillteán tionscadail
    2. Cuir leis an ordú rith tástála /p:CollectCoverage=true
    3. Cuir eochair leis an gcumraíocht tasc tástála chun torthaí clúdaigh a fháil (féach thíos)
  3. Agus an cód á phacáil isteach i bpacáistí nuget, socraigh an t-eolaire aschuir do na pacáistí: -o .

Bailiú sonraí clúdaigh cód

Tar éis na tástálacha a rith, déanann Coverlet staitisticí a rith chuig an consól:

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

Ligeann GitLab duit slonn rialta a shonrú chun staitisticí a fháil, ar féidir iad a fháil ansin i bhfoirm suaitheantais. Sonraítear an slonn rialta sna socruithe tasc leis an eochair coverage; caithfidh grúpa gabhála a bheith sa slonn, agus cuirfear a luach ar aghaidh chuig an suaitheantas:

test and cover job:
  # snip
  coverage: /|s*Totals*|s*(d+[,.]d+%)/

Faighimid anseo staitisticí ó líne le clúdach iomlán na líne.

Pacáistí agus doiciméid a fhoilsiú

Tá an dá ghníomh sceidealta le haghaidh na céime deiridh den phíblíne - ós rud é go bhfuil an tionól agus na tástálacha imithe, is féidir linn ár bhforbairtí a roinnt leis an domhan.

Ar dtús, smaoinigh ar fhoilsiú chuig foinse an phacáiste:

  1. Mura bhfuil comhad cumraíochta nuget ag an tionscadal (nuget.config), cruthaigh ceann nua: dotnet new nugetconfig

    I gcomhair Cad: seans nach bhfuil rochtain scríofa ag an íomhá ar chumraíochtaí domhanda (úsáideoir agus meaisín). Ionas nach bhfaighimid earráidí, cruthaímid cumraíocht áitiúil nua agus oibrímid leis.

  2. Cuirimis foinse pacáiste nua leis an gcumraíocht áitiúil: nuget sources add -name <name> -source <url> -username <organization> -password <gitlab variable> -configfile nuget.config -StorePasswordInClearText
    1. name - ainm foinse áitiúil, níl sé ríthábhachtach
    2. url - URL na foinse ón gcéim "Ag ullmhú cuntais", lch 6
    3. organization - ainm eagraíochta in Azure DevOps
    4. gitlab variable - ainm na hathróige agus an comhartha rochtana curtha le GitLab ("Cuntais a ullmhú", lch. 11). Ar ndóigh, san fhormáid $variableName
    5. -StorePasswordInClearText - hack chun an earráid diúltaithe rochtana a sheachaint (Ní mise an chéad duine a bhain céim ar an raic seo)
    6. I gcás earráidí, d'fhéadfadh sé a bheith úsáideach cur leis -verbosity detailed
  3. An pacáiste a sheoladh chuig an bhfoinse: nuget push -source <name> -skipduplicate -apikey <key> *.nupkg
    1. Seolaimid gach pacáiste ón eolaire reatha, mar sin *.nupkg.
    2. name - ón gcéim thuas.
    3. key - líne ar bith. In Azure DevOps, sa fhuinneog Connect to feed, is é an sampla i gcónaí an líne az.
    4. -skipduplicate - agus tú ag iarraidh pacáiste atá ann cheana a sheoladh gan an eochair seo, seolfaidh an fhoinse earráid ar ais 409 Conflict; leis an eochair, ní bheidh seoladh.

Anois déanaimis cruthú doiciméad a bhunú:

  1. Ar dtús, sa stór, sa mháistirbhrainse, cuirimid tús leis an tionscadal docfx. Chun seo a dhéanamh, rith an t-ordú ón fhréamh docfx init agus na príomh-pharaiméadair le haghaidh doiciméadú tógála a shocrú go hidirghníomhach. Cur síos mionsonraithe ar shocrú íosta an tionscadail anseo.
    1. Agus é á chumrú, tá sé tábhachtach an t-eolaire aschuir a shonrú ..public - De réir réamhshocraithe glacann GitLab inneachar an fhillteáin phoiblí i bhfréamh an taisc mar fhoinse do Leathanaigh. Mar Beidh an tionscadal suite i bhfillteán atá neadaithe sa stór - cuir aschur go dtí an leibhéal suas sa chosán.
  2. Déanaimis na hathruithe ar GitLab a bhrú.
  3. Cuir tasc le cumraíocht na píblíne pages (focal in áirithe le haghaidh tascanna foilsitheoireachta suímh ar Leathanaigh GitLab):
    1. Script:
      1. nuget install docfx.console -version 2.51.0 - docfx a shuiteáil; sonraítear an leagan chun a chinntiú go bhfuil na cosáin suiteála pacáiste ceart.
      2. .docfx.console.2.51.0toolsdocfx.exe .docfx_projectdocfx.json - doiciméid a bhailiú
    2. Déantáin nód:

pages:
  # snip
  artifacts:
    paths:
      - public

Digression lyrical faoi docfx

Roimhe seo, nuair a bhí tionscadal á bhunú agam, shonraigh mé foinse an chóid don doiciméadú mar chomhad réitigh. Is é an príomh-mhíbhuntáiste ná go gcruthaítear doiciméadú freisin do thionscadail tástála. Sa chás nach bhfuil sé seo riachtanach, is féidir leat an luach seo a shocrú go dtí an nód metadata.src:

{
  "metadata": [
    {
      "src": [
        {
          "src": "../",
          "files": [
            "**/*.csproj"
          ],
          "exclude":[
            "*.tests*/**"
          ]
        }
      ],
      // --- snip ---
    },
    // --- snip ---
  ],
  // --- snip ---
}

  1. metadata.src.src: "../" - téann muid leibhéal amháin suas i gcoibhneas leis an suíomh docfx.json, mar i bpatrúin, ní oibríonn cuardach suas an crann eolaire.
  2. metadata.src.files: ["**/*.csproj"] - patrún domhanda, bailímid gach tionscadal C # ó gach eolaire.
  3. metadata.src.exclude: ["*.tests*/**"] - patrún domhanda, eisiamh gach rud ó fillteáin le .tests Sa teideal

Fo-iomlán

Is féidir cumraíocht shimplí den sórt sin a chruthú i díreach leath uair an chloig agus cúpla cupán caife, rud a ligfidh duit a sheiceáil go bhfuil an cód tógtha agus na tástálacha a rith, pacáiste nua a thógáil, an doiciméadú a nuashonrú agus an tsúil le do thoil álainn. suaitheantais i README an tionscadail le gach iarratas chumasc agus a sheoladh chuig an máistir.

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

Ag caint ar suaitheantais

Mar gheall orthu, tar éis an tsaoil, cuireadh tús le gach rud!

Tá suaitheantais le stádas píblíne agus clúdach cód ar fáil in GitLab sna socruithe CI/CD i mbloc píblínte Gtntral:

Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

Chruthaigh mé suaitheantas le nasc chuig na doiciméid ar an ardán sciatha.io - tá gach rud simplí go leor ann, is féidir leat do shuaitheantas féin a chruthú agus é a fháil ag baint úsáide as iarratas.

![Пример с Shields.io](https://img.shields.io/badge/custom-badge-blue)

Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

Ligeann Azure DevOps Artifacts duit suaitheantais a chruthú le haghaidh pacáistí leis an leagan is déanaí. Chun seo a dhéanamh, san fhoinse ar shuíomh Azure DevOps, ní mór duit cliceáil ar Cruthaigh suaitheantas don phacáiste roghnaithe agus cóipeáil an marcáil síos:

Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

Treoir maidir le CI/CD in GitLab don bhuntosaitheoir (beagnach).

Ag cur áilleacht

Aibhsíonn Blúirí Cumraíochta Coiteann

Agus an chumraíocht á scríobh agus ag cuardach tríd an doiciméadú, tháinig mé trasna ar ghné spéisiúil de YAML - blúirí a athúsáid.

Mar is féidir leat a fheiceáil ó na socruithe tasc, éilíonn siad go léir an chlib windows ag an rádala, agus spreagtar iad nuair a sheoltar iarratas cumaisc chuig an máistir/cruthaíodh (seachas doiciméadú). Cuirfimid é seo leis an blúire a athúsáidfimid:

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

Agus anois is féidir linn an blúire a dearbhaíodh níos luaithe a chur isteach sa chur síos ar an tasc:

build job:
  <<: *common_tags
  <<: *common_only

Ní mór tús a chur le hainmneacha blúirí le ponc, ionas nach léireofar iad mar thasc.

Leagan pacáiste

Nuair a bhíonn pacáiste á chruthú, seiceálann an tiomsaitheoir na lasca líne ordaithe, agus ina n-éagmais, na comhaid tionscadail; nuair a aimsíonn sé nód Leagan, glacann sé a luach mar an leagan den phacáiste atá á thógáil. Tharlaíonn sé go raibh chun pacáiste a thógáil le leagan nua, ní mór duit é a nuashonrú i gcomhad an tionscadail nó é a phasáil mar argóint ordú.

Cuirimis Liosta Mianta amháin eile leis - bíodh an dá mhionuimhir sa leagan mar bhliain agus dáta tóg an phacáiste, agus cuir leaganacha réamheisiúna leis. Ar ndóigh, is féidir leat na sonraí seo a chur leis an gcomhad tionscadail agus seiceáil roimh gach aighneacht - ach is féidir leat é a dhéanamh ar an bpíblíne freisin, ag bailiú an leagan pacáiste ón gcomhthéacs agus é a rith tríd an argóint líne ordaithe.

Aontaímid má tá líne mar sin sa teachtaireacht tiomantais release (v./ver./version) <version number> (rev./revision <revision>)?, ansin tógfaimid an leagan den phacáiste ón líne seo, forlíonfaimid é leis an dáta reatha agus cuirfimid é mar argóint chuig an ordú dotnet pack. In éagmais líne, ní bhailímid an pacáiste.

Réitíonn an script seo a leanas an fhadhb 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

Script á cur le tasc pack and deploy job agus breathnú ar chóimeáil na bpacáistí go docht i láthair teaghrán tugtha sa teachtaireacht gealltanais.

Ar an iomlán

Tar éis thart ar leath uair an chloig nó uair an chloig a chaitheamh ag scríobh na cumraíochta, ag dífhabhtú sa sliogán cumhachta áitiúil agus, b'fhéidir, cúpla seoladh nár éirigh leo, fuair muid cumraíocht shimplí chun tascanna gnáthaimh a uathoibriú.

Ar ndóigh, tá GitLab CI / CD i bhfad níos fairsinge agus ilghnéitheach ná mar a d'fhéadfadh a bheith cosúil tar éis an treoir seo a léamh - níl sé sin fíor ar chor ar bith. Tá fiú Tá Auto DevOps, ag ligean

a bhrath go huathoibríoch, a thógáil, a thástáil, a imscaradh, agus monatóireacht a dhéanamh ar d'fheidhmchláir

Anois tá na pleananna chun píblíne a chumrú chun iarratais a imscaradh chuig Azure, ag baint úsáide as Pulumi agus an spriocthimpeallacht a chinneadh go huathoibríoch, a chlúdófar sa chéad alt eile.

Foinse: will.com

Add a comment