He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

Me pehea ranei te tiki tohu ataahua mo to kaupapa i te ahiahi o te whakawaehere ngawari

Akene, ko nga kaiwhakawhanake kei a ia tetahi kaupapa mokai i etahi wa he mate mo nga tohu ataahua me nga mana, te kapinga waehere, nga putanga kete i roto i te nuget... Na tenei matewai i arahi ahau ki te tuhi i tenei tuhinga. I te wa e whakarite ana ahau ki te tuhi, i whiwhi ahau i tenei ataahua i roto i tetahi o aku kaupapa:

He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

Ka hipokina e tenei tuhinga te tatūnga taketake o te whakauru tonu me te tuku mo te kaupapa whare pukapuka akomanga .Net Core i GitLab, te whakaputa tuhinga ki nga Wharangi GitLab me te tuku i nga kohinga kua kohia ki tetahi whangai motuhake i Azure DevOps.

Ko te Waehere VS me te toronga i whakamahia hei taiao whanaketanga Rerengamahi GitLab (ki te whakamana i te konae tautuhinga mai i te taiao whanaketanga).

Panui Whakataki

Ko te CD ko te wa e pana ana koe, engari kua ngaro nga mea katoa i te kiritaki?

He aha te CI/CD me te aha i hiahiatia? Kimihia nga tuhinga katoa mo te whakatu i nga paipa ki GitLab ngawari hoki. I konei ka poto ahau, a, ki te taea, kaore he hapa, ka whakaahua i te tukanga o te punaha mai i te tirohanga a te manu:

  • ka tukuna e te kaiwhakawhanake he here ki te putunga, ka hanga he tono hanumi ma te paetukutuku, i etahi atu huarahi ranei ka tino whakarewahia te paipa,
  • mai i te whirihoranga, ka kowhiria nga mahi katoa ma nga tikanga ka taea te whakarewa i roto i tetahi horopaki,
  • kua whakaritea nga mahi i runga i o raatau wahanga,
  • ka mahia nga wahanga - i.e. whakarara kua oti katoa nga mahi o tenei wahanga,
  • ki te rahua tetahi atamira (arā, ka rahua tetahi o nga mahi o te atamira) - ka mutu te paipa (tata tonu),
  • ki te oti pai nga wahanga katoa, ka kiia te paipa he angitu.

Na kei a matou:

  • Ko te pipeline he huinga mahi kua whakaritea ki roto i nga waahanga ka taea e koe te whakaemi, te whakamatautau, te waehere kete, te tuku i te huihuinga kua oti ki te ratonga kapua, aha atu.
  • atamira (whakangungu) — waeine o te whakahaere paipa, kei roto 1+ mahi,
  • mahi (mahi) he waeine mahi i roto i te paipa. Kei roto ko te tuhinga (e hiahiatia ana), nga tikanga whakarewatanga, nga tautuhinga mo te whakaputa/keteroki taonga me te maha atu.

Na, ko te mahi i te wa e whakatuu ana i te CI/CD ka heke iho ki te hanga i te huinga o nga mahi e whakatinana ana i nga mahi katoa e tika ana mo te whakahiato, te whakamatautau me te whakaputa waehere me nga taonga.

I mua i te tiimata: he aha?

  • He aha a GitLab?

Na te mea i te wa i ara ake ai te hiahia ki te hanga whare putunga motuhake mo nga kaupapa poaka, i utua ki a GitHub, a he apo ahau. Kua waatea nga whare pupuri, engari mo tenei wa ehara tenei i te take pai mo au ki te neke ki GitHub.

  • He aha te take kaore a Azure DevOps Pipelines?

Na te mea he ngawari te tatūnga - kaore koe e hiahia ki te mohio ki te raina whakahau. Te whakauru ki nga kaiwhakarato git o waho - i roto i te rua o nga pao, te kawemai i nga taviri SSH mo te tuku i nga mahi ki te putunga - ano, he ngawari te whirihora i te paipa ahakoa kaore he tauira.

Te tiimatanga: he aha kei a koe me taau e hiahia ana

Kei a matou:

  • putunga i GitLab.

E hiahia ana matou:

  • te huihuinga aunoa me te whakamatautau mo ia tono hanumi,
  • hanga kete mo ia tono hanumi me te pana ki te rangatira, mena he rarangi kei roto i te karere tuku,
  • te tuku i nga kohinga kua kohia ki tetahi whangai motuhake i Azure DevOps,
  • te huihuinga o nga tuhinga me te whakaputanga ki nga wharangi GitLab,
  • tohu!11

Ko nga whakaritenga e whakaahuahia ana ka uru ki te tauira paipa e whai ake nei:

  • Wāhanga 1 - hui
    • Ka kohia e matou te waehere, ka whakaputa i nga konae whakaputa hei taonga
  • Wāhanga 2 - whakamātautau
    • Ka whiwhi taonga mai i te waahi hanga, whakahaere whakamatautau, kohikohi raraunga kapinga waehere
  • Wāhanga 3 - te tuku
    • Tūmahi 1 - kohia te mōkihi nuget ka tukuna ki a Azure DevOps
    • Tūmahi 2 - ka kohia e matou te pae mai i te xmldoc ki te waehere puna ka whakaputa ki nga wharangi GitLab

Kia tīmata!

Huihui i te whirihoranga

Te whakarite kaute

  1. Waihangahia he kaute ki roto Microsoft Azure

  2. Haere ki Devure Ahure

  3. Waihangahia he kaupapa hou

    1. Ingoa - ahakoa
    2. Tirohanga - ahakoa
      He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

  4. Ka paato koe i te paatene Waihanga, ka hangaia te kaupapa, ka kawea koe ki tona wharangi. I tenei wharangi ka taea e koe te whakakore i nga ahuatanga kore e tika ana ma te haere ki nga tautuhinga kaupapa (hononga raro i te rarangi kei te taha maui -> Tirohanga -> Paraka Ratonga Azure DevOps)
    He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

  5. Haere ki Atrifacts, pawhiria Waihanga whangai

    1. Whakauruhia te ingoa puna
    2. Tīpakohia te tirohanga
    3. Wetetaki i te pouaka Whakauruhia nga kohinga mai i nga punaa whanui noakia kore ai te puna e huri hei putunga para o te karaka nuget
      He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

  6. Patohia te Hono ki te whangai, tohua Visual Studio, kape i te Puna mai i te poraka Tatūnga Miihini
    He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

  7. Haere ki nga tautuhinga kaute, tohua te Tohu Whakauru Whaiaro
    He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

  8. Waihangahia he tohu uru hou

    1. Ingoa - arbitrary
    2. Whakahaere - o naianei
    3. Wā whaimana: mōrahi 1 tau
    4. Te Awhi - Whakapaipai/Panui me te Tuhituhi
      He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

  9. Tāruatia te tohu i hanga - i muri i te kati i te matapihi modal ka kore e waatea te uara

  10. Haere ki nga tautuhinga rokiroki i GitLab, tohua nga tautuhinga CI / CD
    He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

  11. Roha te paraka Taurangi ka taapirihia he mea hou

    1. Ingoa - ahakoa kaore he mokowhiti (ka waatea ki te anga whakahau)
    2. Ko te uara te tohu uru mai i te taahiraa 9
    3. Tīpakohia te taurangi Mask
      He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

Ka whakaoti tenei i te tatūnga tuatahi.

Te whakarite i te anga whirihoranga

Ma te taunoa, ko te konae i whakamahia hei whirihora CI/CD i GitLab ko .gitlab-ci.yml mai i te putake o te putunga. Ka taea e koe te whirihora i tetahi ara ritenga ki tenei konae i roto i nga tautuhinga putunga, engari i tenei keehi kaore e tika.

Ka kitea mai i te toronga, kei roto i te konae te whirihoranga i te whakatakotoranga YAML. Ka whakamāramahia e te tuhinga he aha nga taviri ka taea te mau ki te taumata o runga o te whirihoranga, me ia taumata kohanga.

Tuatahi, me taapiri atu ki te konae whirihoranga he hono ki te ahua docker e mahia ai nga mahi. Ki te mahi i tenei ka kitea e matou .Te wharangi whakaahua matua Net i runga i te Docker Hub. Ko te GitHub He aratohu taipitopito mo te ahua hei whiriwhiri mo nga mahi rereke. He ahua ki te .Net Core 3.1 e tika ana ma tatou e hanga, no reira me pai ki te taapiri hei rarangi tuatahi ki te whirihoranga.

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

Inaianei, ka timata koe i te paipa, ka tangohia te ahua kua tohua mai i te putunga whakaahua a Microsoft, ka mahia nga mahi katoa mai i te whirihoranga.

Ko te mahi e whai ake nei ko te taapiri whakangungus. Ma te taunoa, ka tautuhia e GitLab nga waahanga e 5:

  • .pre - ka mahia ki nga waahanga katoa,
  • .post - ka mahia i muri i nga waahanga katoa,
  • build - tuatahi i muri .pre atamira,
  • test - wahanga tuarua,
  • deploy - wahanga tuatoru.

Karekau he mea hei aukati i a koe ki te whakapuaki marama, heoi. Ko te raupapa e whakarārangihia ai nga hikoinga ka pa ki te raupapa i oti ai. Mo te whakaotinga, me taapiri atu ki te whirihoranga:

stages:
  - build
  - test
  - deploy

Mo te patuiro, he mea tika ki te tiki korero mo te taiao e mahia ai nga mahi. Me taapirihia he huinga whakahau o te ao ka mahia i mua i ia mahi before_script:

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

Ka noho tonu ki te taapiri kia kotahi nga mahi kia tukuna mai nga mahi, ka timata te paipa. Inaianei, me taapiri he mahi kau mo te whakaaturanga:

dummy job:
  script:
    - echo ok

Ka timata matou ki te whakamana, ka whiwhi korero kei te pai nga mea katoa, mahia, pana, titiro ki nga hua i runga i te pae... A ka whiwhi matou i te hapa tuhinga - bash: .PSVersion: command not found. WTF?

He arorau nga mea katoa - ma te taunoa, ka whakamahia e nga kaikawe (te kawenga mo te whakahaere i nga tuhinga mahi me te hoatu e GitLab) bash ki te whakahaere whakahau. Ka taea e koe te whakatika i tenei ma te whakaatu marama i roto i te whakaahuatanga mahi he aha nga tohu e tika ana mo te kaikawe pipeline:

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

Rawe! Kei te rere te paipa inaianei.

Ko te kaipanui aro nui, ka whakahoki ano i enei mahi, ka kite kua oti te mahi i te atamira test, ahakoa kaore i tohua e matou te atamira. Ka whakaaro pea koe, test ko te taahiraa taunoa.

Me mahi tonu tatou i te anga whirihoranga ma te taapiri i nga mahi katoa i whakaahuatia i runga ake nei:

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

I whiwhi matou i te paipa kore tino mahi, engari he pai te paipa.

Te whakarite keu

Na te mea kaore he whiriwhiringa keu i tohua mo tetahi o nga mahi, ka pai te paipa tino ka mahia i nga wa katoa ka tukuna nga commits ki te putunga. I te mea ehara tenei i te whanonga e hiahiatia ana i te nuinga o te waa, ka whirihorahia e matou nga whiriwhiringa keu mo nga mahi.

Ka taea te whirihora i nga whiriwhiringa kia rua nga whakatakotoranga: anake/haunga и ture. Hei poto, only/except ka taea e koe te whirihora i nga whiriwhiringa ma te keu (merge_request, hei tauira - ka whirihora i te mahi kia mahia i nga wa katoa ka hangaia he tono hanumi me nga wa katoa ka tukuna atu nga mahi ki te peka ko te puna i roto i te tono hanumi) me nga ingoa peka (tae atu ki te whakamahi i nga whakahuatanga auau); rules ka taea e koe te whakarite i te huinga o nga tikanga, a, ka taea te whakarereke i te ahuatanga mahi mahi i runga i te angitu o nga mahi o mua (when i GitLab CI/CD).

Kia maumahara tatou ki te huinga o nga whakaritenga - te huihuinga me te whakamatautau anake mo nga tono hanumi, te kapi me te tuku ki a Azure DevOps - mo nga tono hanumi me te pana ki te rangatira, reanga tuhinga - mo te pana ki te rangatira.

Tuatahi, me whakarite he mahi whakahiato waehere ma te taapiri i tetahi ture keu e whakaoho ana i te tono hanumi:

build job:
  # snip
  only:
    - merge_request

Inaianei me whirihora i te mahi kapi hei whakaoho i te tono hanumi me te taapiri i nga here ki te rangatira:

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

Ka taea e koe te kite, he ngawari nga mea katoa, he maamaa.

Ka taea hoki e koe te whirihora i te mahi ki te whakaoho mena ka waihangahia he tono hanumi me tetahi whaainga motuhake, peka puna ranei:

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

I nga ahuatanga ka taea te whakamahi taurangi kua whakarārangitia i konei; ture rules kaore i te hototahi ki nga ture only/except.

Whirihorahia te Tiaki Taonga

I te wa e rere ana te mahi build job ka hangahia e matou etahi taonga toi ka taea te whakamahi ano mo nga mahi ka whai ake. Ki te mahi i tenei, me taapiri koe i nga huarahi ki te whirihoranga mahi, nga konae me tiaki me te whakamahi ano i nga mahi ka whai ake, ki te matua artifacts:

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

Ka tautokohia e nga ara nga kaari mohoao, he maamaa ake te whakatakoto.

Mena ka waihangahia e tetahi mahi toi, katahi ka uru atu ki ia mahi ka whai ake - ka noho ki te taha o nga huarahi e pa ana ki te pakiaka putunga i kohia mai i te mahi tuatahi. Kei te waatea hoki nga taonga mo te tango i runga i te paetukutuku.

Inaianei kua reri he anga whirihoranga (me te manatoko), ka taea e tatou te neke ki te tuhi tuhi tuhi mo nga mahi.

Ka tuhia e matou nga tuhinga

Akene, i mua, i roto i te tupuni i tawhiti, i tawhiti, he mamae nga kaupapa hanga whare (tae atu ki nga .net) mai i te rarangi whakahau. Inaianei ka taea e koe te whakaemi, te whakamatautau me te whakaputa i te kaupapa ki nga roopu e 3:

dotnet build
dotnet test
dotnet pack

Ko te tikanga, tera ano etahi ahuatanga ka whakararu tatou i nga whakahau.

  1. Kei te pirangi matou he tuku, ehara i te patuiro, hanga, no reira ka taapiri atu ki ia whakahau -c Release
  2. I te wa e whakamatautau ana, e hiahia ana matou ki te kohi raraunga mo te kapinga waehere, na me hono he kaitirotiro kapinga ki nga whare pukapuka whakamatautau:
    1. Me taapiri te kete ki nga whare pukapuka whakamatautau katoa coverlet.msbuild: dotnet add package coverlet.msbuild mai i te kōpaki kaupapa
    2. Tāpirihia ki te whakahau whakarewa whakamātautau /p:CollectCoverage=true
    3. Me taapiri he taviri ki te whirihoranga mahi whakamatautau kia whiwhi i nga hua kapi (tirohia ki raro)
  3. I te wa e takai ana te waehere ki roto i nga kohinga nuget, ka tautuhia e matou te raarangi whakaputanga mo nga kete: -o .

Kohikohi raraunga kapinga waehere

Whai muri i te whakahaere i nga whakamatautau, ka whakaatu a Coverlet i nga tatauranga whakarewatanga ki te papatohu:

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

Ka taea e GitLab te tautuhi i tetahi korero auau ki te whiwhi tatauranga, ka taea te tiki mai i te ahua o te tohu. Ko te kīanga auau kua tohua i roto i nga tautuhinga mahi me te ki coverage; me whai roopu hopu te korero, ka whakawhitia te uara ki te tohu:

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

I konei ka whiwhi tatou i nga tatauranga mai i te raina me te kapi katoa ma nga raina.

Ka whakaputahia e matou nga kohinga me nga tuhinga

Kei a maatau nga mahi e rua kua tohua ki te waahanga whakamutunga o te paipa - i te mea kua pahemo te huihuinga me nga whakamatautau, ka taea e taatau te tiri i o maatau whanaketanga ki te ao.

Tuatahi, me titiro ki te whakaputanga ki te puna mokihi:

  1. Mena karekau he konae whirihoranga nuget (nuget.config), hanga he mea hou: dotnet new nugetconfig

    Mo te aha: Kaore pea te ahua e whai urunga tuhi ki nga whirihoranga o te ao (kaiwhakamahi me te miihini). Kia kore ai e mau hapa, ka hanga noa e matou he whirihoranga rohe hou ka mahi tahi.

  2. Me tāpiri he puna mōkihi hōu ki te whirihoranga paetata: nuget sources add -name <name> -source <url> -username <organization> -password <gitlab variable> -configfile nuget.config -StorePasswordInClearText
    1. name — ingoa puna rohe, ehara i te mea nui
    2. url — URL o te puna mai i te wahanga “Te whakarite i nga kaute”, taahiraa 6
    3. organization - ingoa o te whakahaere i Azure DevOps
    4. gitlab variable — te ingoa o te taurangi me te tohu uru ki te GitLab ("Te whakarite kaute", wharangi 11). Ko te tikanga, i roto i te whakatakotoranga $variableName
    5. -StorePasswordInClearText — he hack ki te karo i te hapa kua whakakahoretia (Ehara ahau i te tuatahi ki te takahi i tenei rake)
    6. Mena he hapa he pai pea te taapiri -verbosity detailed
  3. Ka tukuna e matou te kete ki te puna: nuget push -source <name> -skipduplicate -apikey <key> *.nupkg
    1. Ka tukuna e matou nga kohinga katoa mai i te raarangi o naianei, na *.nupkg.
    2. name - mai i te taahiraa i runga.
    3. key - tetahi raina. I roto i te Azure DevOps, i roto i te Hono ki te matapihi whangai, ko te rarangi tauira i nga wa katoa az.
    4. -skipduplicate — ki te ngana koe ki te tuku i tetahi kete kua oti kee me te kore tenei ki, ka whakahoki mai te puna he hapa 409 Conflict; me te ki, ka pekehia te tuku.

Inaianei me whakarite te hanga tuhinga:

  1. Hei timata, i roto i te putunga, i te peka matua, ka arawhitia te kaupapa docfx. Ki te mahi i tenei, me whakahaere e koe te whakahau mai i te pakiaka docfx init me te tautuhi i nga tawhā matua mo te whakahiato i nga tuhinga. Te whakamaarama taipitopito mo te tatūnga kaupapa iti konei.
    1. I te wa e whakarite ana, he mea nui ki te tautuhi i te whaiaronga putanga ..public - Ma te taunoa ka tangohia e GitLab nga ihirangi o te kōpaki tūmatanui ki te putake o te putunga hei puna mo nga Whārangi. No te mea ka noho te kaupapa ki roto i te kōpaki kua kohanga ki te putunga - taapiri he putanga ki te taumata e whai ake nei ki te ara.
  2. Me pana nga huringa ki GitLab.
  3. Tāpirihia he mahi ki te whirihoranga paipa pages (kupu i rahuitia mo nga mahi whakaputa pae ki nga wharangi GitLab):
    1. Hōtuhi:
      1. nuget install docfx.console -version 2.51.0 - tāuta docfx; Ka whakaratohia te putanga ki te whakarite kia tika nga huarahi whakaurunga kete.
      2. .docfx.console.2.51.0toolsdocfx.exe .docfx_projectdocfx.json — kohikohi tuhinga
    2. Node Taonga:

pages:
  # snip
  artifacts:
    paths:
      - public

He rereke nga kupu mo docfx

I mua, i te wa e whakarite ana i tetahi kaupapa, i tohua e ahau te puna waehere mo nga tuhinga hei konae otinga. Ko te kino nui ko te hanga tuhinga mo nga kaupapa whakamatautau. Mena kaore e tika ana, ka taea e koe te whakarite i tenei uara ki te node metadata.src:

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

  1. metadata.src.src: "../" — haere ki te taumata kotahi ki runga ki te waahi docfx.json, no te mea Ko te rapu i te rakau whaiaronga kaore e mahi i roto i nga tauira.
  2. metadata.src.files: ["**/*.csproj"] — he tauira o te ao, ka kohia e matou nga kaupapa C # katoa mai i nga raarangi katoa.
  3. metadata.src.exclude: ["*.tests*/**"] - tauira o te ao, waiho nga mea katoa mai i nga kōpaki me .tests I te taitara

Tapekeroto

Ko tenei whirihoranga ngawari ka taea te hanga i roto i te hawhe haora me nga kapu kawhe e rua, ka taea e koe te tirotiro me ia tono hanumi ka tukuna atu ki te rangatira kei te hangahia te waehere ka haere nga whakamatautau, ka whakahiato he hou. mōkihi, te whakahou i nga tuhinga me te pai o te kanohi ki nga tohu ataahua i roto i te kaupapa README.

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

Te korero mo nga tohu

Mo ratou i timata ai nga mea katoa!

Ko nga tohu me nga mana paipa me te kapi waehere e waatea ana i GitLab i roto i nga tautuhinga CI/CD i te paraka paipa Gtntral:

He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

I hanga e ahau he tohu me te hono ki nga tuhinga kei runga i te papa whakangungu rakau.io — He maamaa nga mea katoa ki reira, ka taea e koe te hanga i to ake tohu ka whiwhi ma te tono tono.

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

He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

Ka taea hoki e Azure DevOps Artifacts te hanga tohu mo nga kete e tohu ana i te putanga hou. Ki te mahi i tenei, i te puna i runga i te paetukutuku Azure DevOps, me paato koe ki te Waihanga tohu mo te kete kua tohua ka kape i te tohu tohu:

He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

He Aratohu ki te CI/CD i GitLab mo te (Tata) Tino Tauhou

Te taapiri ataahua

Ka tohua e matou nga wahanga whirihoranga noa

I a au e tuhi ana i te whirihoranga me te rapu i roto i nga tuhinga, ka kite ahau i tetahi ahuatanga YAML whakamere - te whakamahi ano i nga kongakonga.

Ka kite koe mai i nga tautuhinga mahi, me tohu katoa windows mai i te kaiwhaiwhai, ka puta i te wa e tukuna ana he tono hanumi ki te rangatira/te hanga tono hanumi (haunga nga tuhinga). Me taapiri tenei ki te kongakonga ka whakamahia ano e tatou:

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

Na inaianei ka taea e taatau te whakauru i te waahanga kua panuitia i mua ki te whakaahuatanga mahi:

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

Me timata nga ingoa kongakonga ki te waahi kia kore ai e whakamaoritia he mahi.

Putanga putanga

I te wa e hanga ana he kete, ka tirotirohia e te kaitoi nga huringa raina whakahau, me te kore e ngaro, nga konae kaupapa; I te kitenga o te node Putanga, ka riro tona uara hei putanga o te kete e hangaia ana. Te ahua nei mo te hanga i tetahi kete me te putanga hou, me whakahou e koe i roto i te konae kaupapa, tuku ranei hei tohenga rarangi whakahau.

Kia kotahi ano te hiahia - kia rua nga tau iti rawa o te putanga ko te tau me te ra i hangaia ai te kete, me te taapiri i nga putanga tukunga. Ko te tikanga, ka taea e koe te taapiri i enei raraunga ki te konae kaupapa me te tirotiro i mua i ia tukunga - engari ka taea ano e koe te mahi i roto i te paipa, te kohi i te putanga mokihi mai i te horopaki me te tuku i roto i te tautohetohe rarangi whakahau.

Kia whakaae tatou mehemea kei roto i te karere commit he raina penei release (v./ver./version) <version number> (rev./revision <revision>)?, katahi ka tangohia te putanga kete mai i tenei raina, taapirihia ki te ra o naianei ka tukuna hei tohenga ki te whakahau dotnet pack. Ki te kore he raina, kare noa matou e kohi i te kete.

Ko te tuhinga e whai ake nei hei whakaoti i tenei raru:

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

Te taapiri i tetahi tuhinga ki tetahi mahi pack and deploy job me tino titiro ki te huihuinga o nga kete mena he rarangi kua tohua i roto i te karere tuku.

Te tapeke

I muri i te paunga o te hawhe haora ki te haora ki te tuhi i te whirihoranga, te patuiro i roto i te hiko o te rohe, me etahi o nga whakarewanga kaore i angitu, ka whiwhi matou i tetahi whirihoranga ngawari mo te whakaaunoa i nga mahi o ia ra.

Ae ra, ko GitLab CI/CD he nui ake te whanui me te maha atu i te ahua i muri i te panui o tenei aratohu - e kore e pono katoa. Kei reira ano DevOps Aunoa aetuku ana

te kimi aunoa, te hanga, te whakamatautau, te hora, me te aro turuki i o tono

Inaianei ko nga mahere ko te whirihora i te paipa mo te tuku tono ki Azure, ma te whakamahi i te Pulumi me te kimi aunoa i te taiao whaainga, ka hipokina ki te tuhinga e whai ake nei.

Source: will.com

Hokona te manaaki pono mo nga waahi me te tiaki DDoS, nga kaiwhakarato VPS VDS 🔥 Hokona he manaaki paetukutuku pono me te tiakitanga DDoS, ngā tūmau VPS VDS | ProHoster