Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

Na ny fomba hahazoana mari-pamantarana tsara tarehy ho an'ny tetikasanao amin'ny takariva iray amin'ny fanodinana mora

Angamba, ny mpamorona tsirairay izay manana tetikasa biby iray farafahakeliny amin'ny fotoana iray dia manana mangidihidy momba ny mari-pamantarana tsara tarehy misy sata, fandrakofana kaody, dikan-teny ao amin'ny nuget ... Ary io mangidihidy io no nitarika ahy hanoratra ity lahatsoratra ity. Ho fanomanana ny fanoratana azy dia nahazo ity hatsarana ity tao amin'ny iray amin'ireo tetikasako aho:

Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

Ity lahatsoratra ity dia hitarika anao amin'ny fananganana fototra amin'ny fampidirana sy fandefasana mitohy ho an'ny tetikasa famakiam-boky kilasy .Net Core ao amin'ny GitLab, famoahana antontan-taratasy ao amin'ny GitLab Pages, ary manosika ireo fonosana namboarina ho an'ny fahana manokana ao amin'ny Azure DevOps.

VS Code dia nampiasaina ho tontolo fampandrosoana miaraka amin'ny fanitarana GitLab Workflow (amin'ny fanamarinana ny fisie fichier mivantana avy amin'ny tontolo fampandrosoana).

Fampidirana fohy

CD - rehefa nanosika fotsiny ianao, ary efa nianjera tamin'ny mpanjifa ny zava-drehetra?

Inona no atao hoe CI / CD ary nahoana ianao no mila izany - azonao atao amin'ny google mora foana izany. Mitadiava antontan-taratasy feno momba ny fanamboarana fantsona ao amin'ny GitLab mora koa. Eto aho dia hiresaka fohifohy ary, raha azo atao, dia mamaritra ny fizotran'ny rafitra amin'ny fomba fijerin'ny vorona:

  • mandefa commit amin'ny tahiry ny developer, mamorona fangatahana fampiraisana amin'ny alàlan'ny tranokala, na amin'ny fomba hafa, manomboka mazava na an-kolaka ny fantsona,
  • ny asa rehetra dia voafantina avy amin'ny fanamafisana, ny fepetra ahafahan'izy ireo manomboka amin'ny toe-javatra nomena,
  • ny asa dia voalamina araka ny dingana misy azy,
  • dingana dia tanterahina mifandimby - i.e. mifanindran-dàlana vita ny asa rehetra amin'ity dingana ity,
  • raha tsy mahomby ny dingana (izany hoe, farafaharatsiny ny iray amin'ireo asa amin'ny sehatra dia tsy mahomby), mijanona ny fantsona (saika foana),
  • raha vita soa aman-tsara ny dingana rehetra dia heverina ho mahomby ny fantsona.

Noho izany, manana:

  • pipeline - andiana asa voalamina amin'ny dingana ahafahanao manangana, mizaha toetra, kaody fonosana, mametraka trano vita amin'ny serivisy rahona, sns.,
  • sehatra (sehatra) - vondrona fandaminana fantsona, misy asa 1+,
  • asa (asa) dia singa iray miasa ao anaty fantsona. Ahitana script (takina), fepetra fanombohana, fandrindrana ho an'ny famoaham-boky/caching artifacts sy ny maro hafa.

Noho izany, ny asa rehefa manangana CI / CD dia midina amin'ny famoronana andiana asa izay manatanteraka ny hetsika rehetra ilaina amin'ny fananganana, fitsapana ary famoahana kaody sy artifacts.

Alohan'ny hanombohana: nahoana?

  • Nahoana no Gitlab?

Satria rehefa nilaina ny namorona trano fitehirizam-bokatra manokana ho an'ny tetikasa biby fiompy, dia naloa tao amin'ny GitHub izy ireo, ary tia vola aho. Nanjary maimaim-poana ny tahiry, saingy hatreto dia tsy ampy ny antony hifindrako any amin'ny GitHub.

  • Maninona no tsy Azure DevOps Pipelines?

Satria misy ny toerana misy azy - tsy ilaina akory ny fahalalana ny baiko. Fampidirana amin'ireo mpamatsy git ivelany - amin'ny tsindry roa, fanafarana ny lakile SSH handefasana commits amin'ny tahiry - koa, ny pipeline dia mora amboarina na dia tsy avy amin'ny môdely aza.

Toerana fanombohana: izay anananao sy izay tianao

Manana isika:

  • repository ao amin'ny GitLab.

Tianay:

  • fivoriambe mandeha ho azy sy fitsapana ho an'ny fangatahana fampitambatra tsirairay,
  • manorina fonosana ho an'ny fangatahana fanakambanana tsirairay ary manosika mankany amin'ny tompony, raha toa ka misy andalana iray ao amin'ny hafatra commit,
  • mandefa fonosana voaangona amin'ny fahana manokana ao amin'ny Azure DevOps,
  • fanangonana antontan-taratasy sy famoahana ao amin'ny GitLab Pages,
  • marika!11

Ireo fepetra voalaza etsy ambony dia miankina amin'ny modely fantsona manaraka:

  • Dingana 1 - fivoriambe
    • Manangona ny kaody izahay, mamoaka ny rakitra vokarina ho artifacts
  • Dingana 2 - fitsapana
    • Mahazo artifacts avy amin'ny dingana fananganana izahay, manao fitsapana, manangona angon-drakitra momba ny kaody
  • Dingana 3 - Alefaso
    • Asa 1 - manamboatra ny fonosana nuget ary alefaso any amin'ny Azure DevOps
    • Asa 2 - manangona ny tranokala avy amin'ny xmldoc ao amin'ny kaody loharano izahay ary mamoaka azy ao amin'ny GitLab Pages

Andao hanomboka!

Manangona ny config

Manomana kaonty

  1. Mamorona kaonty amin'ny Microsoft Azure

  2. Mandeha Azure DevOps

  3. Mamorona tetikasa vaovao

    1. Anarana - any
    2. Visibility - na inona na inona
      Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

  4. Rehefa manindry ny bokotra Mamorona ianao dia hoforonina ny tetikasa ary halefa any amin'ny pejiny ianao. Amin'ity pejy ity dia azonao atao ny manafoana ireo endri-javatra tsy ilaina amin'ny alàlan'ny fandehanana any amin'ny sehatry ny tetikasa (rohy ambany ao amin'ny lisitra eo ankavia -> Overview -> Azure DevOps Services block)
    Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

  5. Mandehana any amin'ny Atrifacts, tsindrio Mamorona sakafo

    1. Ampidiro ny anaran'ny loharano
    2. Fidio ny fahitana
    3. Esory ny boaty Ampidiro ny fonosana avy amin'ny loharanom-baovao mahazatra, mba tsy hivadika ho clone nuget fanariam-pako ny loharano
      Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

  6. Tsindrio ny Connect mba hamahanana, mifidiana Visual Studio, kopia loharano avy amin'ny sakana Machine Setup
    Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

  7. Mandehana any amin'ny firafitry ny kaonty, mifidiana Personal Access Token
    Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

  8. Mamorona famantarana fidirana vaovao

    1. Anarana - tsy misy dikany
    2. Organisation - Amin'izao fotoana izao
    3. Manan-kery mandritra ny 1 taona fara-fahakeliny
    4. Faritra - Fonosana/Vakio & Soraty
      Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

  9. Adikao ny marika noforonina - rehefa mikatona ny varavarankelin'ny modal dia tsy ho hita ilay sanda

  10. Mandehana any amin'ny fitehirizana tahiry ao amin'ny GitLab, safidio ny fikandrana CI / CD
    Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

  11. Manitatra ny sakana Variables, ampio iray vaovao

    1. Anarana - izay tsy misy habaka (dia ho hita ao amin'ny baiko shell)
    2. Sanda - token'ny fidirana avy amin'ny paragrafy 9
    3. Select Mask variable
      Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

Izany dia mamita ny pre-configuration.

Manomana ny rafi-pandaminana

Amin'ny alàlan'ny default, ny konfigurasi CI/CD ao amin'ny GitLab dia mampiasa ny rakitra .gitlab-ci.yml avy amin'ny fototry ny repository. Azonao atao ny mametraka lalana tsy misy dikany mankany amin'ity rakitra ity ao amin'ny firafitry ny tahiry, fa amin'ity tranga ity dia tsy ilaina izany.

Araka ny hitanao avy amin'ny fanitarana, ny rakitra dia misy fanamafisam-peo amin'ny endrika YAML. Ny antsipirian'ny antontan-taratasy izay fanalahidy azo asiana eo amin'ny ambaratonga ambony amin'ny tefy, ary isaky ny ambaratonga misy akany.

Voalohany, andao hampiditra rohy mankany amin'ny sarin'ny docker ao amin'ny rakitra fanamafisana, izay hanatanterahana ny asa. Noho izany dia hitantsika Pejy sary .Net Core ao amin'ny Docker Hub. The GitHub misy torolàlana amin'ny antsipiriany momba ny sary hofidiana amin'ny asa samihafa. Ny sary miaraka amin'ny .Net Core 3.1 dia mety hamboarinay, koa aza misalasala manampy ny andalana voalohany amin'ny fanitsiana.

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

Ankehitriny, rehefa atomboka avy amin'ny tahiry sary Microsoft ny fantsona, dia alaina ilay sary voatondro, izay hanatanterahana ny asa rehetra avy amin'ny fanamafisana.

Ny dingana manaraka dia ny manampy sehatra's. Amin'ny alàlan'ny default, GitLab dia mamaritra dingana 5:

  • .pre - natao hatramin'ny dingana rehetra,
  • .post - atao aorian'ny dingana rehetra,
  • build - voalohany aorian'izay .pre sehatra,
  • test - dingana faharoa,
  • deploy - ny dingana fahatelo.

Tsy misy misakana anao tsy hanambara azy ireo mazava anefa. Ny filaharan'ireo dingana voatanisa dia misy fiantraikany amin'ny filaharan'ny fanatanterahana azy. Mba hamenoana dia andao ampidirina amin'ny config:

stages:
  - build
  - test
  - deploy

Ho an'ny debugging, misy dikany ny maka vaovao momba ny tontolo iainan'ny asa. Andeha isika hanampy andiana baiko maneran-tany izay hotanterahina alohan'ny asa tsirairay before_script:

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

Mbola manampy asa iray farafahakeliny izany ka rehefa alefa ny commit dia hanomboka ny fantsona. Amin'izao fotoana izao, andao hanampy asa poakaty hanehoana:

dummy job:
  script:
    - echo ok

Manomboka ny fanamarinana izahay, mahazo hafatra fa tsara ny zava-drehetra, manolo-tena, manosika, mijery ny valiny ao amin'ny tranokala ... Ary mahazo fahadisoana amin'ny script - bash: .PSVersion: command not found. WTF?

Lojika daholo ny zava-drehetra - amin'ny alàlan'ny default, ny mpihazakazaka (tompon'andraikitra amin'ny fanatanterahana ny script asa ary nomen'ny GitLab) dia mampiasa bash manatanteraka baiko. Azonao atao ny manamboatra izany amin'ny alàlan'ny famaritana mazava ao amin'ny famaritana asa izay marika tokony hananan'ny mpihazakazaka pipeline:

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

Mahafinaritra! Efa mandeha izao ny fantsona.

Ny mpamaky mahay, rehefa mamerina ireo dingana voalaza, dia hahatsikaritra fa vita teo amin'ny sehatra ilay asa test, na dia tsy nofaritanay aza ny sehatra. Araka ny mety eritreretinao test dia ny dingana default.

Andeha isika hanohy hamorona ny skeleton configuration amin'ny fampidirana ireo asa rehetra voalaza etsy ambony:

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

Nahazo pipeline tsy tena miasa izahay, nefa marina.

Fametrahana trigger

Noho ny zava-misy fa tsy misy sivana trigger voatondro ho an'ny asa rehetra, ny fantsona dia hanao tanteraka hotanterahina isaky ny atosiky ny commit mankany amin'ny tahiry. Satria tsy izany no fihetsika tiana amin'ny ankapobeny, dia hametraka sivana trigger ho an'ny asa isika.

Ny sivana dia azo amboarina amin'ny endrika roa: ihany/afa-tsy и fitsipika. Fohy, only/except ahafahanao manamboatra sivana amin'ny trigger (merge_request, ohatra - mametraka ny asa hotanterahina isaky ny misy fangatahana misintona ary isaky ny mandefa ny commit any amin'ny sampana izay loharanon'ny fangatahana fampiraisana) sy ny anaran'ny sampana (anisan'izany ny fampiasana fiteny mahazatra); rules mamela anao hanamboatra fepetra maromaro ary, raha tsy izany, hanova ny fepetra fanatanterahana asa miankina amin'ny fahombiazan'ny asa teo aloha (when ao amin'ny GitLab CI/CD).

Andeha hotsaroantsika ny fepetra takiana - fivoriambe sy fitsapana ho an'ny fangatahana fanakambanana, fonosana ary fandefasana any amin'ny Azure DevOps - ho an'ny fangatahana fanakambanana sy fanosehana amin'ny tompony, famokarana antontan-taratasy - ho an'ny fanosehana amin'ny tompony.

Voalohany, andao hametraka ny asa fananganana kaody amin'ny alàlan'ny fampidirana fitsipika iray izay mirehitra raha tsy amin'ny fangatahana fampitambatra:

build job:
  # snip
  only:
    - merge_request

Andeha hojerentsika izao ny asa famonosana handrehitra ny fangatahana fampiraisana ary ampio ny commit amin'ny tompony:

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

Araka ny hitanao, ny zava-drehetra dia tsotra sy mahitsy.

Azonao atao ihany koa ny mametraka ny asa ho afo raha tsy misy fangatahana fanakambanana noforonina miaraka amin'ny lasibatra na sampana loharano manokana:

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

Amin'ny toe-javatra, azonao ampiasaina variables voatanisa eto; Fitsipika rules tsy mifanaraka amin'ny fitsipika only/except.

Fanamboarana Artifact Saving

Nandritra ny asa iray build job hanana artifacts izay azo ampiasaina indray amin'ny asa manaraka isika. Mba hanaovana izany dia mila ampidirinao ny lalana mankany amin'ny fandrindrana asa, ireo rakitra izay ilainao hotehirizina sy hampiasaina amin'ireto asa manaraka ireto, amin'ny fanalahidy. artifacts:

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

Ny lalana dia manohana ny wildcard, izay tena manamora ny fametrahana azy ireo.

Raha mamorona artifacts ny asa iray, dia ho afaka miditra amin'izy ireo ny asa manaraka - ho hita eo amin'ny lalana mitovy amin'ny fototry ny tahiry izay nangonina tamin'ny asa tany am-boalohany. Azo alaina ao amin'ny tranokala ihany koa ny artifacts.

Amin'izao fotoana izao dia efa vonona ny rafi-pandaminana (ary nosedraina), afaka miroso amin'ny fanoratana script ho an'ny asa isika.

Manoratra script izahay

Angamba, indray mandeha, tany amin'ny vahindanitra lavitra, lavitra, ny fananganana tetikasa (anisan'izany ireo ao amin'ny .net) avy amin'ny tsipika baiko dia nanaintaina. Afaka manangona, manandrana ary mamoaka ny tetikasa amin'ny ekipa 3 ianao izao:

dotnet build
dotnet test
dotnet pack

Mazava ho azy, misy ny nuances sasany izay hanasarotra ny baiko.

  1. Famoronana famotsorana no tadiavinay fa tsy fananganana debug, ka ampianay ny baiko tsirairay -c Release
  2. Rehefa manao fitiliana dia te-hanangona angon-drakitra momba ny fandrakofana kaody izahay, noho izany dia mila mampiditra mpanadihady fandrakofana ao amin'ny tranomboky fitsapana izahay:
    1. Ampio ny fonosana amin'ny tranomboky andrana rehetra coverlet.msbuild: dotnet add package coverlet.msbuild avy amin'ny lahatahiry tetikasa
    2. Ampio amin'ny baiko andrana /p:CollectCoverage=true
    3. Manampia lakile amin'ny fanefena asa andrana mba hahazoana valin'ny fandrakofana (jereo eto ambany)
  3. Rehefa mametraka ny kaody ao anaty fonosana nuget dia apetraho ny lahatahiry famoahana ho an'ny fonosana: -o .

Manangona angona momba ny fandrakofana kaody

Aorian'ny fanaovana ny andrana, ny fanontana Coverlet dia mandefa antontan'isa mankany amin'ny console:

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 dia ahafahanao mamaritra fomba fiteny mahazatra hahazoana antontan'isa, izay azo alaina amin'ny endrika marika. Ny fitenenana mahazatra dia voafaritra ao amin'ny firafitry ny asa miaraka amin'ny fanalahidy coverage; ny fitenenana dia tsy maintsy misy vondrona maka sary, ny sandan'izany dia halefa amin'ny marika:

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

Eto isika dia mahazo antontan'isa avy amin'ny tsipika misy fandrakofana andalana manontolo.

Mamoaka fonosana sy antontan-taratasy

Samy manana hetsika voatendry ho amin'ny dingana farany amin'ny fantsona isika - satria efa lasa ny fivoriambe sy ny fitsapana, dia afaka mizara ny fivoarantsika amin'izao tontolo izao isika.

Voalohany, diniho ny famoahana amin'ny loharano fonosana:

  1. Raha tsy manana fichier nuget ny tetikasa (nuget.config), mamorona vaovao: dotnet new nugetconfig

    Hatao inona: ny sary dia mety tsy manana fahafahana manoratra amin'ny fanamafisam-peo manerantany (mpampiasa sy milina). Mba tsy hisian'ny lesoka dia mamorona config vaovao eo an-toerana fotsiny izahay ary miara-miasa aminy.

  2. Andeha isika hanampy loharano fonosana vaovao amin'ny fandrindrana eo an-toerana: nuget sources add -name <name> -source <url> -username <organization> -password <gitlab variable> -configfile nuget.config -StorePasswordInClearText
    1. name — anarana loharano eo an-toerana, tsy zava-dehibe
    2. url - URL ny loharano avy amin'ny sehatra "Manomana kaonty", p. 6
    3. organization - anaran'ny fikambanana ao amin'ny Azure DevOps
    4. gitlab variable - ny anaran'ny fari-pahalalana miaraka amin'ny marika fidirana nampiana GitLab ("Manomana kaonty", p. 11). Mazava ho azy, amin'ny endrika $variableName
    5. -StorePasswordInClearText - hack mba hialana amin'ny hadisoana nolavina (Tsy izaho no voalohany nanitsaka an'io rake io)
    6. Raha misy hadisoana dia mety ilaina ny manampy -verbosity detailed
  3. Mandefa ny fonosana amin'ny loharano: nuget push -source <name> -skipduplicate -apikey <key> *.nupkg
    1. Mandefa ny fonosana rehetra avy amin'ny lahatahiry ankehitriny izahay, noho izany *.nupkg.
    2. name - avy amin'ny dingana etsy ambony.
    3. key - andalana rehetra. Ao amin'ny Azure DevOps, ao amin'ny varavarankely Connect to feed, ny ohatra dia ny tsipika foana az.
    4. -skipduplicate - rehefa manandrana mandefa fonosana efa misy tsy misy an'io fanalahidy io dia hiverina ny loharano 409 Conflict; miaraka amin'ny fanalahidy, ny fandefasana dia ho voatsindrina.

Andeha isika hametraka ny famoronana ny antontan-taratasy:

  1. Voalohany, ao amin'ny tahiry, ao amin'ny sampana master, dia manomboka ny tetikasa docfx isika. Mba hanaovana izany, mandehana ny baiko avy amin'ny root docfx init ary apetraho amin'ny fomba ifanakalozan-kevitra ireo mari-pamantarana fototra ho an'ny antontan-taratasy fananganana. Famaritana amin'ny antsipiriany momba ny fananganana tetikasa kely indrindra eto.
    1. Rehefa configuring dia zava-dehibe ny mamaritra ny output lahatahiry ..public - GitLab amin'ny alàlan'ny default dia maka ny votoatin'ny lahatahiry ho an'ny daholobe ao amin'ny fototry ny tahiry ho loharanon'ny Pejy. SATRIA ny tetikasa dia ho hita ao amin'ny lahatahiry nipetraka ao amin'ny repository - ampio vokatra amin'ny ambaratonga ambony amin'ny lalana.
  2. Andao hanosika ny fanovana amin'ny GitLab.
  3. Manampia asa amin'ny fandrindrana fantsona pages (teny voatokana ho an'ny asa famoahana tranonkala ao amin'ny GitLab Pages):
    1. Script:
      1. nuget install docfx.console -version 2.51.0 - mametraka docfx; nofaritana ny dikan-teny mba hahazoana antoka fa marina ny lalan'ny fametrahana fonosana.
      2. .docfx.console.2.51.0toolsdocfx.exe .docfx_projectdocfx.json - fanangonana antontan-taratasy
    2. Node artifacts:

pages:
  # snip
  artifacts:
    paths:
      - public

Digression tononkira momba ny docfx

Teo aloha, rehefa nanangana tetikasa aho dia nanondro ny loharanon-kaody ho an'ny antontan-taratasy ho rakitra vahaolana. Ny fatiantoka lehibe dia ny famoronana antontan-taratasy ho an'ny tetikasa fitsapana. Raha toa ka tsy ilaina izany dia azonao atao ny mametraka io sanda io amin'ny node metadata.src:

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

  1. metadata.src.src: "../" - miakatra ambaratonga iray isika raha oharina amin'ny toerana docfx.json, satria amin'ny lamina, tsy mandeha ny fikarohana ny hazo lahatahiry.
  2. metadata.src.files: ["**/*.csproj"] - lamina manerantany, manangona ny tetikasa C # rehetra avy amin'ny lahatahiry rehetra izahay.
  3. metadata.src.exclude: ["*.tests*/**"] - modely manerantany, esory ny zava-drehetra amin'ny lahatahiry misy .tests Ao amin'ny lohateny

Subtotal

Ny fanamafisana tsotra toy izany dia azo noforonina ao anatin'ny antsasak'adiny sy kafe roa kaopy, izay ahafahanao manamarina fa vita ny kaody ary mandalo ny fitsapana, manangana fonosana vaovao, manavao ny antontan-taratasy ary mampifaly ny maso amin'ny tsara tarehy. badge ao amin'ny README an'ny tetikasa miaraka amin'ny fangatahana fanakambanana tsirairay ary alefa any amin'ny tompony.

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

Raha miresaka badge

Noho izy ireo rahateo no nanomboka ny zava-drehetra!

Ny mari-pamantarana misy sata fantsona sy fandrakofana kaody dia hita ao amin'ny GitLab ao amin'ny firafitry ny CI/CD ao amin'ny sakana Gtntral pipelines:

Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

Namorona badge misy rohy mankany amin'ny antontan-taratasy eo amin'ny lampihazo aho shields.io - Tsotra ny zava-drehetra ao, azonao atao ny mamorona ny marikao manokana ary mandray izany amin'ny alàlan'ny fangatahana.

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

Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

Azure DevOps Artifacts dia ahafahanao mamorona marika ho an'ny fonosana miaraka amin'ny dikan-teny farany. Mba hanaovana izany, ao amin'ny loharano ao amin'ny tranokala Azure DevOps dia mila manindry Mamorona marika ho an'ny fonosana voafantina ianao ary mandika ny marika marika:

Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

Torolàlana ho an'ny CI/CD ao amin'ny GitLab ho an'ny vao manomboka tanteraka (saika).

Manampy hatsarana

Manasongadina ireo sombin-javatra iombonana

Teo am-panoratana sy nikaroka ny antontan-taratasy aho dia nahita endri-javatra mahaliana an'ny YAML - ny fampiasana indray ny sombiny.

Araka ny hitanao avy amin'ny firafitry ny asa dia mila ny tag avokoa izy rehetra windows amin'ny mpihazakazaka, ary mipoitra rehefa misy fangatahana fampiraisana alefa any amin'ny tompony / noforonina (afa-tsy ny antontan-taratasy). Andao ampidirintsika amin'ny sombiny izay hampiasaintsika indray:

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

Ary ankehitriny isika dia afaka mampiditra ny sombiny nambara teo aloha ao amin'ny famaritana asa:

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

Ny anaran'ny sombintsombiny dia tsy maintsy manomboka amin'ny teboka, mba tsy ho raisina ho toy ny asa.

Fanamboarana fonosana

Rehefa mamorona fonosana, ny compiler dia manamarina ny baikon'ny baiko, ary raha tsy eo izy ireo, ny rakitra tetikasa; rehefa mahita node Version izy dia maka ny sandany ho toy ny dikan-tenin'ny fonosana namboarina. Hita fa raha te hanangana fonosana misy dikan-teny vaovao ianao dia mila manavao azy ao amin'ny rakitra tetikasa na mandefa azy io ho toy ny tohan-kevitry ny baiko.

Andeha isika hanampy iray hafa Wishlist - avelao ny isa roa kely ao amin'ny dikan-ny taona sy ny fananganana ny fonosana, ary ampio prerelease dikan. Mazava ho azy, azonao atao ny manampy an'io data io amin'ny rakitra tetikasa ary manamarina alohan'ny fandefasana tsirairay - fa azonao atao ihany koa ny manao izany amin'ny fantsona, manangona ny dikan-drakitra avy amin'ny contexte ary mandalo izany amin'ny alàlan'ny tohan-kevitry ny baiko.

Andao hanaiky fa raha misy tsipika toy ny hafatra commit release (v./ver./version) <version number> (rev./revision <revision>)?, dia horaisintsika avy amin'ity tsipika ity ny dikan-tenin'ny fonosana, ampio amin'ny daty ankehitriny ary ampidiro ho tohan-kevitra amin'ny baiko dotnet pack. Raha tsy misy tsipika dia tsy hanangona ny fonosana fotsiny izahay.

Ity script manaraka ity dia mamaha ity olana ity:

# регулярное выражение для поиска строки с версией
$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

Manampy script amin'ny asa iray pack and deploy job ary tandremo tsara ny fivorian'ny fonosana eo anatrehan'ny tady nomena ao amin'ny hafatra commit.

Итого

Rehefa avy nandany antsasak'adiny na adiny iray teo ho eo tamin'ny fanoratana ny fanitsiana, ny debugging tao amin'ny powershell eo an-toerana ary, angamba, ny fandefasana roa tsy nahomby, dia nahazo fanitsiana tsotra ho an'ny asa mahazatra.

Mazava ho azy fa ny GitLab CI / CD dia midadasika kokoa sy marolafy kokoa noho izay mety ho hita rehefa avy namaky ity torolàlana ity - tsy marina mihitsy izany. Misy aza Auto DevOps diamamela

mamantatra ho azy, manangana, andramana, manaparitaka ary manara-maso ny fampiharanao

Amin'izao fotoana izao, ny drafitra dia ny hanitsy ny fantsona amin'ny fametrahana fampiharana amin'ny Azure, amin'ny fampiasana Pulumi ary mamaritra ho azy ny tontolo iainana kendrena, izay hodinihina ao amin'ny lahatsoratra manaraka.

Source: www.habr.com

Add a comment