ProHoster > Blog > Tsamaiso > Tataiso ea CI/CD ho GitLab bakeng sa (hoo e ka bang) ea qalang ka botlalo
Tataiso ea CI/CD ho GitLab bakeng sa (hoo e ka bang) ea qalang ka botlalo
Kapa mokhoa oa ho fumana libeche tse ntle bakeng sa morero oa hau mantsiboeeng a le mang a ho ngola habonolo
Mohlomong, moqapi e mong le e mong ea nang le bonyane morero o le mong oa phoofolo ea lapeng ka nako e itseng o na le ho hlohlona ka libeche tse ntle tse nang le li-status, tšireletso ea khoutu, liphetolelo tsa sephutheloana ka nuget ... 'Me ho hlohlona hona ho ile ha etsa hore ke ngole sehlooho sena. Ha ke itokisetsa ho e ngola, ke fumane botle bona ho e 'ngoe ea merero ea ka:
Sengoliloeng sena se tla u tsamaisa ka setaele sa mantlha sa kopanyo e tsoelang pele le phano bakeng sa projeke ea laeborari ea sehlopha sa .Net Core ho GitLab, ho hatisa litokomane ho Maqephe a GitLab, le ho sutumelletsa liphutheloana tse hahiloeng ho fepa ea poraefete ho Azure DevOps.
VS Code e ne e sebelisoa e le tikoloho ea ntlafatso le katoloso Mokhoa oa ho sebetsa oa GitLab (bakeng sa ho netefatsa faele ea litlhophiso ka kotloloho ho tsoa tikolohong ea nts'etsopele).
Kenyelletso e khutšoanyane
CD - na ke ha u sa tsoa sutumetsa, 'me ntho e' ngoe le e 'ngoe e se e oele ho mofani?
CI / CD ke eng le hore na ke hobane'ng ha u e hloka - u ka e sebelisa habonolo google. Fumana litokomane tse felletseng mabapi le ho lokisa lipeipi ho GitLab hape bonolo. Mona ke tla hlalosa ka bokhutšoanyane 'me, ha ho khoneha, ntle le mefokolo ea tsamaiso ea tsamaiso ka pono ea nonyana:
moqapi o romela boitlamo sebakeng sa polokelo, o etsa kopo ea ho kopanya ka sebaka sa marang-rang, kapa ka tsela e 'ngoe, ka mokhoa o hlakileng kapa ka mokhoa o sa tobang o qala lipeipi,
mesebetsi eohle e khethiloe ho tsoa ho tlhophiso, maemo a eona a lumellang hore e hlahisoe maemong a fanoeng,
mesebetsi e hlophisoa ho ea ka mekhahlelo ea eona,
mekhahlelo e phethiloe ka ho latellana - i.e. tshoanang mesebetsi eohle ea mokhahlelo ona e phethiloe,
haeba sethala se hloleha (ke hore, bonyane e 'ngoe ea mesebetsi ea sethala e hloleha), phaepe e emisa (hoo e ka bang kamehla),
haeba mekhahlelo eohle e phethoa ka katleho, pipeline e nkoa e atlehile.
Kahoo, re na le:
pipeline - sete sa mesebetsi e hlophisitsoeng ka mekhahlelo eo ho eona u ka hahang, ho lekola, khoutu ea sephutheloana, ho tsamaisa moaho o felileng ho ts'ebeletso ea leru, jj.
sethala (sethaleng) - yuniti ea mokhatlo oa liphaephe, e na le mosebetsi o 1+,
mosebetsi (ke mosebetsi) ke karolo ea mosebetsi o ntseng o tsoela pele. E na le script (e tlamang), maemo a ho qala, litlhophiso tsa ho hatisa / ho boloka lintho tsa khale, le tse ling tse ngata.
Ka hona, mosebetsi oa ho theha CI / CD o theohela ho theha letoto la mesebetsi e kenyang liketso tsohle tse hlokahalang bakeng sa ho aha, ho lekola le ho hatisa khoutu le lintho tsa khale.
Pele o qala: hobaneng?
Ke hobane'ng ha Gitlab?
Hobane ha ho hlokahala hore ho thehoe libaka tsa polokelo ea poraefete bakeng sa merero ea liphoofolo tsa lapeng, li ne li lefshoa ho GitHub, 'me ke ne ke le meharo. Libaka tsa polokelo li se li lokolohile, empa ho fihlela joale sena ha se lebaka le lekaneng la hore ke fallele GitHub.
Hobaneng u sa etse liphaephe tsa Azure DevOps?
Hobane moo tlhophiso ke ea mantlha - tsebo ea mola oa taelo ha e hlokehe. Ho kopanngoa le bafani ba git ba kantle - ka ho penya makhetlo a 'maloa, ho kenngoa ha linotlolo tsa SSH ho romella litlatsetso sebakeng sa polokelo - hape, pipeline e hlophisoa habonolo leha e se ho tsoa template.
Boemo ba ho qala: seo u nang le sona le seo u se batlang
Re na le:
polokelo ho GitLab.
Re batla:
kopano le liteko tsa othomathike bakeng sa kopo e 'ngoe le e' ngoe ea ho kopanya,
ho haha liphutheloana bakeng sa kopo e 'ngoe le e' ngoe ea ho kopanya le ho sutumelletsa ho monghali, ha feela ho na le mola o itseng molaetseng oa boitlamo,
ho romella liphutheloana tse hahiloeng ho fepa ea poraefete ho Azure DevOps,
kopano ea litokomane le phatlalatso ho GitLab Pages,
libeche!11
Litlhoko tse hlalositsoeng li oela ka mokhoa o latelang oa liphaephe:
Mothati oa 1 - kopano
Re bokella khoutu, re phatlalatsa lifaele tsa tlhahiso e le li-artifacts
Mothati oa 2 - tlhahlobo
Re fumana li-artifacts ho tloha sethaleng sa kaho, re etsa liteko, re bokella lintlha tsa boitsebiso ba khoutu
Mothati oa 3 - Ipehele
Mosebetsi oa 1 - haha sephutheloana sa nuget ebe u se romela ho Azure DevOps
Mosebetsi oa 2 - re bokella sebaka sa marang-rang ho xmldoc ho khoutu ea mohloli ebe re e phatlalatsa ho GitLab Maqephe.
Ha o tobetsa konopo ea Create, morero o tla etsoa 'me o tla fetisetsoa leqepheng la oona. Leqepheng lena, o ka tima likarolo tse sa hlokahaleng ka ho ea ho li-setting tsa projeke (sehokelo se tlase lethathamong le letšehali -> Overview -> Azure DevOps Services block)
Eya ho Atrifacts, tobetsa Create feed
Kenya lebitso la mohloli
Khetha ponahalo
Tlosa ho hlahloba Kenyelletsa liphutheloana tse tsoang mehloling e tloaelehileng ea sechaba, e le hore mohloli o se ke oa fetoha lesela la ho lahla nuget clone
Tobetsa Connect ho fepa, khetha Visual Studio, kopitsa Mohloli ho tsoa ho Setupo sa Mochine block
Eya ho litlhophiso tsa ak'haonte, khetha Letšoao la Phihlello ea Motho
Etsa tokene e ncha ea ho kena
Lebitso - ka boithatelo
Mokhatlo - hona joale
E sebetsa ho fihlela selemo se le 1
Scope - Packaging/Bala & Ngola
Kopitsa token e entsoeng - ka mor'a hore fensetere ea modal e koetsoe, boleng bo ke ke ba fumaneha
Eya ho litlhophiso tsa polokelo ho GitLab, khetha litlhophiso tsa CI / CD
Atolosa boloko ba Liphetoho, eketsa e ncha
Lebitso - leha e le efe ntle le libaka (e tla fumaneha ka har'a khetla ea taelo)
Boleng - tokene ea phihlello ho tsoa serapeng sa 9
Khetha Mask feto-fetoha
Sena se phethela tlhophiso ea pele.
Ho lokisa moralo oa tlhophiso
Ka ho sa feleng, tlhophiso ea CI/CD ho GitLab e sebelisa faele .gitlab-ci.yml ho tsoa motsong oa polokelo. U ka beha tsela e hanyetsanang ea faele ena sebakeng sa polokelo, empa tabeng ena ha ho hlokahale.
Joalokaha u ka bona ho tsoa katolosong, faele e na le tlhophiso ka sebopeho YAML. Lintlha tsa litokomane tseo linotlolo li ka bang teng maemong a holimo a tlhophiso, le maemong a mang le a mang.
Taba ea pele, ha re kenye sehokelo ho setšoantšo sa docker faeleng ea tlhophiso, moo mesebetsi e tla etsoa. Bakeng sa sena re fumana Leqephe la litšoantšo tsa .Net Core ho Docker Hub. The GitHub ho na le tataiso e qaqileng mabapi le hore na u ka khetha setšoantšo sefe bakeng sa mesebetsi e fapaneng. Setšoantšo se nang le .Net Core 3.1 se loketse hore re hahe, kahoo ikutloe u lokolohile ho kenya mohala oa pele ho tlhophiso.
image: mcr.microsoft.com/dotnet/core/sdk:3.1
Hona joale, ha pipeline e qala ho tloha polokelong ea litšoantšo ea Microsoft, setšoantšo se boletsoeng se tla khoasolloa, moo mesebetsi eohle e tsoang ho tlhophiso e tla etsoa.
Mohato o latelang ke ho eketsa sethaleng's. Ka mokhoa o ikhethileng, GitLab e hlalosa methati e 5:
.pre - e etsoa ka mekhahlelo eohle,
.post - e etsoa ka mor'a mekhahlelo eohle,
build - pele ka mor'a .pre sethala,
test - mohato oa bobeli,
deploy - mohato oa boraro.
Leha ho le joalo, ha ho letho le u thibelang ho li phatlalatsa ka ho hlaka. Tatelano eo mehato e thathamisitsoeng ka eona e ama tatellano eo li etsoang ka eona. Bakeng sa botlalo, a re kenyelletseng ho tlhophiso:
stages:
- build
- test
- deploy
Bakeng sa ho lokisa liphoso, hoa utloahala ho fumana leseli mabapi le tikoloho eo mesebetsi e etsoang ho eona. Ha re kenyelle lenane la litaelo tsa lefats'e tse tla etsoa pele mosebetsi o mong le o mong ka before_script:
before_script:
- $PSVersionTable.PSVersion
- dotnet --version
- nuget help | select-string Version
E sala e le ho eketsa bonyane mosebetsi o le mong e le hore ha li-commit li romeloa, pipeline e tla qala. Hajoale, ha re kenyeng mosebetsi o se nang letho ho bontša:
dummy job:
script:
- echo ok
Re qala ho netefatsa, re fumana molaetsa oa hore ntho e 'ngoe le e' ngoe e lokile, rea itlama, rea sutumelletsa, re sheba liphetho setšeng ... 'Me re fumana phoso ea script - bash: .PSVersion: command not found. wtf?
Ntho e ngoe le e ngoe e ea utloahala - ka ho sa feleng, limathi (tse ikarabellang bakeng sa ho etsa litokomane tsa mosebetsi mme li fanoe ke GitLab) ts'ebeliso. bash ho phethahatsa ditaelo. U ka lokisa sena ka ho hlakisa ka ho hlaka tlhalosong ea mosebetsi hore na li-tag tseo semathi sa pipeline se lokelang ho ba le tsona ke life:
dummy job on windows:
script:
- echo ok
tags:
- windows
E kholo! Lipeipi li ntse li sebetsa.
'Mali ea hlokolosi, ha a se a pheta mehato e bontšitsoeng, o tla hlokomela hore mosebetsi o phethiloe sethaleng test, leha re sa ka ra hlakisa sethala. Joalokaha u ka nahana test ke mohato oa kamehla.
Ha re tsoeleng pele ho theha skeleton ea tlhophiso ka ho kenyelletsa mesebetsi eohle e hlalositsoeng ka holimo:
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
Re na le phaephe e sa sebetseng haholo, empa leha ho le joalo e nepahetse.
Ho theha li-trigger
Ka lebaka la hore ha ho li-filters tsa trigger tse boletsoeng bakeng sa mesebetsi leha e le efe, lipeipi li tla ka botlalo e etsoa nako le nako ha boitlamo bo sutumelletsoa sebakeng sa polokelo. Kaha sena ha se boits'oaro bo lakatsehang ka kakaretso, re tla theha li-trigger filters bakeng sa mesebetsi.
Li-filters li ka hlophisoa ka mefuta e 'meli: feela/ntle le и Melao. Ka bokhutšoanyane, only/except e o lumella ho hlophisa li-filters ka li-trigger (merge_request, mohlala - e beha mosebetsi o lokelang ho etsoa nako le nako ha kopo ea ho hula e etsoa 'me nako le nako ha li-commit li romeloa lekaleng leo e leng mohloli oa kopo ea ho kopanya) le mabitso a makala (ho kenyeletsoa le ho sebelisa lipolelo tse tloaelehileng); rules e u lumella ho etsa maemo a ikhethileng, 'me, ka boikhethelo, u fetole boemo ba ts'ebetso ho latela katleho ea mesebetsi e fetileng (when ho GitLab CI/CD).
Ha re hopoleng sehlopha sa litlhoko - kopano le liteko feela bakeng sa kopo ea ho kopanya, ho paka le ho romella ho Azure DevOps - bakeng sa kopo ea ho kopanya le ho sutumelletsa ho monghali, tlhahiso ea litokomane - bakeng sa ho sutumelletsa ho monghali.
Taba ea pele, ha re theheng mosebetsi oa ho aha khoutu ka ho eketsa molao o tukang feela ka kopo ea ho kopanya:
build job:
# snip
only:
- merge_request
Joale ha re theheng mosebetsi oa ho paka ho chesa kopo ea ho kopanya ebe re eketsa boitlamo ho monghali:
Nakong ea mosebetsi build job re tla ba le li-artifacts tse ka sebelisoang hape mesebetsing e latelang. Ho etsa sena, o hloka ho kenyelletsa litsela tsa tlhophiso ea mosebetsi, lifaele tseo u tla hloka ho li boloka le ho li sebelisa hape mesebetsing e latelang, ho senotlolo. artifacts:
Litsela li tšehetsa li-wildcards, tse etsang hore ho be bonolo ho li beha.
Haeba mosebetsi o theha li-artifacts, mosebetsi o mong le o mong o latelang o tla khona ho li fihlela - li tla be li le haufi le litsela tse tšoanang le motso oa polokelo o neng o bokelloa mosebetsing oa pele. Li-artifacts li fumaneha hape bakeng sa ho jarollwa setšeng.
Kaha joale re se re na le moralo oa tlhophiso o lokisitsoeng ('me o lekoa), re ka tsoela pele ho ngola mangolo a mesebetsi.
Re ngola mangolo
Mohlomong, ka nako e 'ngoe, sehlopheng sa linaleli se hole, hole, merero ea kaho (ho kenyeletsoa le tse ho .net) ho tloha molaong oa taelo e ne e le bohloko. Joale o ka haha, oa leka le ho phatlalatsa morero ka lihlopha tse 3:
dotnet build
dotnet test
dotnet pack
Ka tlhaho, ho na le li-nuances tse ling ka lebaka leo re tla thatafatsa litaelo ka mokhoa o itseng.
Re batla moaho oa tokollo, eseng moaho oa debug, kahoo re eketsa taelong ka 'ngoe -c Release
Ha re etsa liteko, re batla ho bokella lintlha tsa ts'ireletso ea khoutu, kahoo re hloka ho kenyelletsa mohlahlobi oa litaba lilaebraring tsa liteko:
Kenya sephutheloana lilaebraring tsohle tsa liteko coverlet.msbuild: dotnet add package coverlet.msbuild ho tsoa foldareng ea morero
Eketsa ho taelo ea teko ea teko /p:CollectCoverage=true
Kenya senotlolo ho tlhophiso ea mosebetsi oa tlhahlobo ho fumana liphetho tsa khaso (sheba ka tlase)
Ha o kenya khoutu ka har'a lipakete tsa nuget, beha bukana ea tlhahiso bakeng sa liphutheloana: -o .
Ho bokella lintlha tsa khaso ea khoutu
Kamora ho etsa liteko, likhatiso tsa Coverlet li tsamaisa lipalo-palo ho khomphutha:
GitLab e u lumella ho hlakisa polelo e tloaelehileng ho fumana lipalo-palo, tse ka fumanoang ka mokhoa oa beche. Polelo e tloaelehileng e hlalositsoe litlhophisong tsa mosebetsi ka senotlolo coverage; polelo e tlameha ho ba le sehlopha sa ho hapa, seo boleng ba sona bo tla fetisetsoa becheng:
test and cover job:
# snip
coverage: /|s*Totals*|s*(d+[,.]d+%)/
Mona re fumana lipalo-palo ho tsoa moleng o nang le kakaretso ea line.
Phatlalatsa liphutheloana le litokomane
Liketso tsena ka bobeli li reriloe bakeng sa mohato oa ho qetela oa lipeipi - kaha kopano le liteko li fetile, re ka arolelana tsoelo-pele ea rona le lefats'e.
Ntlha ea pele, nahana ka ho phatlalatsa mohloli oa thepa:
Haeba projeke e se na faele ea tlhophiso ea nuget (nuget.config), theha e ncha: dotnet new nugetconfig
Molelmong oa eng: setšoantšo se kanna sa se be le phihlello ea ho ngola ho litlhophiso tsa lefats'e (mosebelisi le mochini). E le hore re se ke ra tšoasa liphoso, re mpa re theha tlhophiso e ncha ea lehae ebe re sebetsa le eona.
Ha re kenye mohloli o mocha oa sephutheloana ho tlhophiso ea lehae: nuget sources add -name <name> -source <url> -username <organization> -password <gitlab variable> -configfile nuget.config -StorePasswordInClearText
name - lebitso la mohloli oa lehae, eseng ho nyatsa
url - URL ea mohloli ho tloha sethaleng "Ho lokisetsa li-account", leq
organization - lebitso la mokhatlo ho Azure DevOps
gitlab variable - lebitso la phetoho e nang le letšoao la ho fihlella le kentsoeng ho GitLab ("Ho lokisetsa li-account", leq. 11). Ka tlhaho, ka sebopeho $variableName
Re romella liphutheloana tsohle ho tsoa bukeng ea hona joale, kahoo *.nupkg.
name - ho tloha mohatong o ka holimo.
key - mola ofe kapa ofe. Ho Azure DevOps, ho Connect ho fepa fensetere, mohlala o lula e le mohala az.
-skipduplicate - ha o leka ho romela sephutheloana se seng se ntse se le teng ntle le senotlolo sena, mohloli o tla khutlisa phoso 409 Conflict; ka senotlolo, ho romela ho tla tloloa.
Joale a re hlophiseng tlhahiso ea litokomane:
Taba ea pele, sebakeng sa polokelo, lekaleng le leholo, re qala projeke ea docfx. Ho etsa sena, tsamaisa taelo ho tsoa motsong docfx init 'me ka mokhoa o kopanetsoeng u behe litekanyetso tsa bohlokoa bakeng sa ho haha litokomane. Tlhaloso e qaqileng ea bonyane ba tlhophiso ea morero mona.
Ha o hlophisa, ho bohlokoa ho hlakisa bukana ea tlhahiso ..public - GitLab ka mokhoa o ikhethileng e nka litaba tsa foldara ea sechaba motso oa polokelo e le mohloli oa Maqephe. Hobane morero o tla be o le foldareng e behiloeng sebakeng sa polokelo - eketsa tlhahiso ho boemo bo holimo tseleng.
Ha re sutumelleng liphetoho ho GitLab.
Kenya mosebetsi ho tlhophiso ea lipeipi pages (lentsoe le boloketsoeng bakeng sa mesebetsi ea khatiso ea sebaka sa marang-rang Maqepheng a GitLab):
Script:
nuget install docfx.console -version 2.51.0 - kenya docfx; phetolelo e boletsoeng ho netefatsa hore litsela tsa ho kenya sephutheloana li nepahetse.
.docfx.console.2.51.0toolsdocfx.exe .docfx_projectdocfx.json - ho bokella litokomane
Node artifacts:
pages:
# snip
artifacts:
paths:
- public
Phallo ea mantsoe mabapi le docfx
Nakong e fetileng, ha ke theha morero, ke hlalositse mohloli oa khoutu bakeng sa litokomane e le faele ea tharollo. Bothata bo boholo ke hore litokomane li boetse li bōptjoa bakeng sa merero ea liteko. Haeba sena se sa hlokahale, o ka beha boleng bona ho node metadata.src:
metadata.src.src: "../" - re nyolohela boemong bo le bong ho latela sebaka docfx.json, hobane ka mekhoa, ho batla sefate sa directory ha se sebetse.
metadata.src.files: ["**/*.csproj"] - paterone ea lefats'e, re bokella merero eohle ea C # ho tsoa litsamaisong tsohle.
metadata.src.exclude: ["*.tests*/**"] - Paterone ea lefats'e, kenyelletsa ntho e ngoe le e ngoe ho tsoa lifoldareng ka .tests Ka sehlooho
Kakaretso
Sebopeho se bonolo joalo se ka etsoa ka halofo ea hora le linoelo tse 'maloa tsa kofi, tse tla u lumella ho hlahloba hore na khoutu e hahiloe le hore liteko li fete, ho haha sephutheloana se secha, ho ntlafatsa litokomane le ho khahlisa leihlo ka botle. libeche ho README ea morero ka kopo e 'ngoe le e' ngoe ea ho kopanya le ho romela ho mong'a eona.
Qetellong .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
Ho bua ka libeche
Ka lebaka la bona, ka mor'a tsohle, tsohle li ile tsa qala!
Libeche tse nang le maemo a lipeipi le tšireletso ea khoutu li fumaneha ho GitLab ho litlhophiso tsa CI/CD sebakeng sa boloko sa lipeipi tsa Gtntral:
Ke thehile beche e nang le sehokelo sa litokomane tse sethaleng lithebe.io - ntho e ngoe le e ngoe e otlolohile moo, o ka iketsetsa beche ea hau mme oa e amohela ka kopo.
![Пример с Shields.io](https://img.shields.io/badge/custom-badge-blue)
Azure DevOps Artifacts e boetse e u lumella ho etsa libeche bakeng sa liphutheloana tse nang le mofuta oa morao-rao. Ho etsa sena, mohloling o sebakeng sa Azure DevOps, o hloka ho tobetsa ho Theha beche bakeng sa sephutheloana se khethiloeng ebe o kopitsa letšoao la letšoao:
Ho eketsa botle
Ho totobatsa likaroloana tse tloaelehileng tsa Configuration
Ha ke ntse ke ngola tlhophiso le ho batlisisa litokomaneng, ke ile ka kopana le karolo e khahlisang ea YAML - ho sebelisa likhechana hape.
Joalokaha u ka bona ho li-setting tsa mosebetsi, kaofela li hloka tag windows ho semathi, 'me li hlahisoa ha kopo ea ho kopanya e romelloa ho monghali / ea bōpiloeng (ntle le litokomane). Ha re kenyelle sena sekhechanang seo re tla se sebelisa hape:
'Me joale re ka kenya sekhechana se boletsoeng pejana tlhalosong ea mosebetsi:
build job:
<<: *common_tags
<<: *common_only
Mabitso a likhechana a tlameha ho qala ka letheba, e le hore a se ke a hlalosoa e le mosebetsi.
Phetolelo ea sephutheloana
Ha u theha sephutheloana, moqapi o hlahloba li-switches tsa line ea taelo, 'me ha li le sieo, lifaele tsa morero; ha e fumana node ea Version, e nka boleng ba eona e le mofuta oa sephutheloana se ntseng se hahuoa. Hoa etsahala hore e le hore u ka haha sephutheloana ka phetolelo e ncha, u lokela ho e ntlafatsa ka har'a faele ea morero kapa u e fetise e le khang ea mola oa taelo.
Ha re kenyeng Lenane la Litakatso - tlohella linomoro tse peli tse nyane tokollong e be selemo mme re thehe letsatsi la sephutheloana, 'me re kenye liphetolelo tse lokolotsoeng. Ha e le hantle, o ka eketsa lintlha tsena ho faele ea morero 'me u hlahlobe pele ho tlhahiso e' ngoe le e 'ngoe - empa u ka e etsa hape ka phaephe, ho bokella phetolelo ea sephutheloana ho tloha moelelong le ho e fetisa ka khang ea mola oa taelo.
Ha re lumellane hore haeba molaetsa oa boitlamo o na le mola o kang release (v./ver./version) <version number> (rev./revision <revision>)?, ebe re tla nka mofuta oa sephutheloana moleng ona, re e tlatse ka letsatsi la hajoale ebe re e fetisa e le khang ho taelo. dotnet pack. Ha ho se na mola, re ke ke ra bokella sephutheloana.
Script e latelang e rarolla bothata bona:
# регулярное выражение для поиска строки с версией
$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
Ho eketsa mongolo mosebetsing pack and deploy job 'me u hlokomele kopano ea liphutheloana ka tieo ka pel'a khoele e fanoeng molaetsa oa boitlamo.
Kakaretso
Kamora ho qeta hoo e ka bang halofo ea hora kapa hora re ngola tlhophiso, re lokisa "powershell" ea lehae, 'me, mohlomong, le likheo tse 'maloa tse sa atleheng, re ile ra fumana tlhophiso e bonolo ea ho iketsetsa mesebetsi e tloaelehileng.
Ehlile, GitLab CI / CD e pharaletse haholo ebile e na le likarolo tse ngata ho feta kamoo e ka bonahalang ka teng kamora ho bala tataiso ena - seo ha se nnete ho hang. Ho na le hoo Auto DevOps kelumella
bona, haha, leka, tsamaisa, 'me u hlokomele lits'ebetso tsa hau
Hona joale merero ke ho lokisa liphaephe bakeng sa ho romela likopo ho Azure, ho sebelisa Pulumi le ho iketsetsa qeto ea tikoloho e reretsoeng, e tla tšohloa sehloohong se latelang.