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:

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 (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 . 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
Waihangahia he kaute ki roto
Haere ki
Waihangahia he kaupapa hou
- Ingoa - ahakoa
- Tirohanga - ahakoa

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)

Haere ki Atrifacts, pawhiria Waihanga whangai
- Whakauruhia te ingoa puna
- Tīpakohia te tirohanga
- 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

Patohia te Hono ki te whangai, tohua Visual Studio, kape i te Puna mai i te poraka Tatūnga Miihini

Haere ki nga tautuhinga kaute, tohua te Tohu Whakauru Whaiaro

Waihangahia he tohu uru hou
- Ingoa - arbitrary
- Whakahaere - o naianei
- Wā whaimana: mōrahi 1 tau
- Te Awhi - Whakapaipai/Panui me te Tuhituhi

Tāruatia te tohu i hanga - i muri i te kati i te matapihi modal ka kore e waatea te uara
Haere ki nga tautuhinga rokiroki i GitLab, tohua nga tautuhinga CI / CD

Roha te paraka Taurangi ka taapirihia he mea hou
- Ingoa - ahakoa kaore he mokowhiti (ka waatea ki te anga whakahau)
- Ko te uara te tohu uru mai i te taahiraa 9
- Tīpakohia te taurangi Mask

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 . Ko te 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.1Inaianei, 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.preatamira,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
- deployMo 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 VersionKa 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 okKa 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:
- windowsRawe! 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: deployI 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: и . 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 ().
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_requestInaianei 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
- masterKa 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 ; 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 :
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 packKo te tikanga, tera ano etahi ahuatanga ka whakararu tatou i nga whakahau.
- Kei te pirangi matou he tuku, ehara i te patuiro, hanga, no reira ka taapiri atu ki ia whakahau
-c Release - 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:
- Me taapiri te kete ki nga whare pukapuka whakamatautau katoa
coverlet.msbuild:dotnet add package coverlet.msbuildmai i te kōpaki kaupapa - Tāpirihia ki te whakahau whakarewa whakamātautau
/p:CollectCoverage=true - Me taapiri he taviri ki te whirihoranga mahi whakamatautau kia whiwhi i nga hua kapi (tirohia ki raro)
- Me taapiri te kete ki nga whare pukapuka whakamatautau katoa
- 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:
Mena karekau he konae whirihoranga nuget (
nuget.config), hanga he mea hou:dotnet new nugetconfigMo 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.
- 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 -StorePasswordInClearTextname— ingoa puna rohe, ehara i te mea nuiurl— URL o te puna mai i te wahanga “Te whakarite i nga kaute”, taahiraa 6organization- ingoa o te whakahaere i Azure DevOpsgitlab 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-StorePasswordInClearText— he hack ki te karo i te hapa kua whakakahoretia ()- Mena he hapa he pai pea te taapiri
-verbosity detailed
- Ka tukuna e matou te kete ki te puna:
nuget push -source <name> -skipduplicate -apikey <key> *.nupkg- Ka tukuna e matou nga kohinga katoa mai i te raarangi o naianei, na
*.nupkg. name- mai i te taahiraa i runga.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 katoaaz.-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 hapa409 Conflict; me te ki, ka pekehia te tuku.
- Ka tukuna e matou nga kohinga katoa mai i te raarangi o naianei, na
Inaianei me whakarite te hanga tuhinga:
- 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 initme te tautuhi i nga tawhā matua mo te whakahiato i nga tuhinga. Te whakamaarama taipitopito mo te tatūnga kaupapa iti .- 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.
- I te wa e whakarite ana, he mea nui ki te tautuhi i te whaiaronga putanga
- Me pana nga huringa ki GitLab.
- Tāpirihia he mahi ki te whirihoranga paipa
pages(kupu i rahuitia mo nga mahi whakaputa pae ki nga wharangi GitLab):- Hōtuhi:
nuget install docfx.console -version 2.51.0- tāuta docfx; Ka whakaratohia te putanga ki te whakarite kia tika nga huarahi whakaurunga kete..docfx.console.2.51.0toolsdocfx.exe .docfx_projectdocfx.json— kohikohi tuhinga
- Node Taonga:
- Hōtuhi:
pages:
# snip
artifacts:
paths:
- publicHe 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 ---
}metadata.src.src: "../"— haere ki te taumata kotahi ki runga ki te waahidocfx.json, no te mea Ko te rapu i te rakau whaiaronga kaore e mahi i roto i nga tauira.metadata.src.files: ["**/*.csproj"]— he tauira o te ao, ka kohia e matou nga kaupapa C # katoa mai i nga raarangi katoa.metadata.src.exclude: ["*.tests*/**"]- tauira o te ao, waiho nga mea katoa mai i nga kōpaki me.testsI 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:
- masterTe 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:

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

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:


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
- masterNa inaianei ka taea e taatau te whakauru i te waahanga kua panuitia i mua ki te whakaahuatanga mahi:
build job:
<<: *common_tags
<<: *common_onlyMe 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=$versionTe 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 - . Kei reira ano tuku 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








