Okanye ungazifumana njani iibheji ezintle zeprojekthi yakho ngobusuku obunye bokubhala ikhowudi
Mhlawumbi, wonke umthuthukisi onayo iprojekthi enye yesilwanyana sasekhaya ngexesha elithile unomdla malunga neebheji ezintle ezinamazinga, ukugubungela ikhowudi, iinguqulelo zephakheji kwi-nuget ... Kwaye le itch ibangele ukuba ndibhale eli nqaku. Ukulungiselela ukuyibhala, ndifumene obu buhle kwenye yeeprojekthi zam:
Eli nqaku liza kukuhamba ngoseto olusisiseko lokudityaniswa okuqhubekayo kunye nokuhanjiswa kweprojekthi yethala leencwadi leklasi ye-.Net Core kwi-GitLab, ukupapasha amaxwebhu kuMaphepha e-GitLab, kunye nokutyhalela iipakethe ezakhiweyo kwifidi yabucala kwi-Azure DevOps.
IKhowudi ye-VS yasetyenziswa njengendawo yophuhliso kunye nolwandiso
Intshayelelo emfutshane
I-CD - ngaba xa utyhala nje, kwaye yonke into sele iwele kumxhasi?
Yintoni i-CI / CD kwaye kutheni uyifuna-unokuyisebenzisa kugoogle ngokulula. Fumana uxwebhu olupheleleyo kuqwalaselo lwemibhobho kwi-GitLab
- umphuhlisi uthumela isibophelelo kwindawo yokugcina, wenza isicelo sokudibanisa kwisiza, okanye ngenye indlela, ngokucacileyo okanye ngokungafihliyo iqala umbhobho,
- yonke imisebenzi ikhethiwe kuqwalaselo, iimeko ezibavumela ukuba baqaliswe kumxholo onikiweyo,
- imisebenzi icwangciswa ngokwezigaba zayo,
- izigaba zenziwa ngokulandelelana - okt. ukufana yonke imisebenzi yesi sigaba igqityiwe,
- ukuba inqanaba liyasilela (oko kukuthi, umsebenzi omnye weqonga uyasilela), umbhobho uyayeka (phantse qho),
- ukuba zonke izigaba zigqitywe ngempumelelo, umbhobho uthathwa njengempumelelo.
Ngaloo ndlela, sine:
- umbhobho - isethi yemisebenzi ehlelwe ngokwezigaba apho unokwakha khona, uvavanyo, ikhowudi yephakheji, ukuhambisa isakhiwo esigqityiweyo kwinkonzo yefu, njl.
- iqonga (uqeqesho) - iyunithi yombutho wombhobho, iqulethe 1+ umsebenzi,
- umsebenzi (umsebenzi) yiyunithi yomsebenzi kumbhobho. Iqulethe iscript (isinyanzelo), iimeko zokuqaliswa, izicwangciso zokupapasha / i-caching artifics, kunye nokunye okuninzi.
Ngokufanelekileyo, umsebenzi xa ubeka i-CI / iCD yehla ekudaleni isethi yemisebenzi eyenza zonke izenzo eziyimfuneko zokwakha, ukuvavanya kunye nokushicilela ikhowudi kunye nezinto zakudala.
Ngaphambi kokuba uqale: kutheni?
- Kutheni iGitlab?
Kuba xa kuye kwafuneka ukuba kwenziwe iindawo zokugcina zabucala zeeprojekthi zezilwanyana zasekhaya, zahlawulwa kwi-GitHub, kwaye ndandibawa. Iindawo zokugcina zikhululekile, kodwa ukuza kuthi ga ngoku esi ayisosizathu saneleyo sokuba ndiye eGitHub.
- Kutheni le nto i-Azure DevOps Pipelines?
Kuba apho useto lusisiseko - ulwazi lomgca womyalelo alufuneki nokufunwa. Ukudityaniswa nababoneleli be-git bangaphandle - kunqakrazo olubini, ukungeniswa kwezitshixo ze-SSH ukuthumela ukuzinikela kwindawo yokugcina - kwakhona, umbhobho uqwalaselwe ngokulula nokuba hayi kwitemplate.
Indawo yokuqala: into onayo kunye nento oyifunayo
Si:
- indawo yokugcina kwiGitLab.
Sifuna:
- indibano ezenzekelayo kunye novavanyo kwisicelo ngasinye sokudibanisa,
- iiphakheji zokwakha zesicelo ngasinye sokudibanisa kunye nokutyhala kwinkosi, ngaphandle kokuba kukho umgca othile kumyalezo wokuzibophelela,
- ukuthumela iipakethe ezakhiweyo kwisondlo sabucala kwi-Azure DevOps,
- indibano yamaxwebhu kunye nopapasho kumaphepha eGitLab,
- iibheji!11
Iimfuno ezichaziweyo ziwela kwimodeli yombhobho ilandelayo:
- Inqanaba 1 - indibano
- Siqokelela ikhowudi, sipapashe iifayile zemveliso njengezinto zakudala
- Inqanaba 2 - uvavanyo
- Sifumana izinto zakudala ukusuka kwinqanaba lokwakha, qhuba iimvavanyo, uqokelele idatha yokugubungela ikhowudi
- Inqanaba lesi-3 - Ngenisa
- Umsebenzi 1 - yakha iphakheji ye-nuget kwaye uyithumele kwi-Azure DevOps
- Umsebenzi wesi-2 - siqokelela isayithi kwi-xmldoc kwikhowudi yomthombo kwaye siyipapashe kumaphepha eGitLab
Masiqalise!
Ukuqokelela ubumbeko
Ukulungiselela iiakhawunti
-
Yenza iakhawunti kwi
Microsoft Azure -
Yiya e
Yenza i-DevOps -
Senza iprojekthi entsha
- Igama - nayiphi na
- Ukubonakala - nayiphi na
-
Xa ucofa kwi Yenza iqhosha, iprojekthi iya kwenziwa kwaye uya kuhanjiswa kwiphepha layo. Kweli phepha, unokukhubaza izinto ezingeyomfuneko ngokuya kuseto lweprojekthi (ikhonkco elisezantsi kuluhlu olusekhohlo -> Umboniso -> Iinkonzo ze-Azure DevOps block)
-
Yiya kwi-Atrifacts, cofa Yenza ifidi
- Ngenisa igama lomthombo
- Khetha ukubonakala
- Susa uqwalaselo Bandakanya iipakethe ezivela kwimithombo yoluntu eqhelekileyo, ukuze umthombo ungajiki ube yi-dump nuget clone
-
Cofa uQhagamshela ukondla, khetha Isitudiyo esiBonakalayo, khuphela uMthombo kwibhloko yokuSeta umatshini
-
Yiya kwiisetingi zeakhawunti, khetha iToken yoFikelelo loBuqu
-
Yenza ithokheni entsha yokufikelela
- Igama - ngokungenasizathu
- Umbutho - Ngoku
- Ivumeleke ubuninzi bonyaka om-1
- Ububanzi - Ukupakishwa/Funda & Bhala
-
Khuphela umqondiso owenziweyo - emva kokuba ifestile yemodal ivaliwe, ixabiso aliyi kufumaneka
-
Yiya kwindawo yokugcina kwi-GitLab, khetha useto lweCI / CD
-
Yandisa ibhloko yeeGuquguquko, yongeza entsha
- Igama - nayiphi na ngaphandle kwezithuba (iya kufumaneka kwiqokobhe lomyalelo)
- Ixabiso - ithokheni yokufikelela kumhlathi we-9
- Khetha ukwahluka kweMaski
Oku kugqiba uqwalaselo lwangaphambili.
Ukulungisa isakhelo soqwalaselo
Ngokungagqibekanga, ubumbeko lweCI/CD kwiGitLab isebenzisa ifayile .gitlab-ci.yml
ukusuka kwingcambu yendawo yokugcina. Ungacwangcisa umendo ongekho mthethweni kule fayile kwizicwangciso zokugcina, kodwa kulo mzekelo akukho mfuneko.
Njengoko unokubona kwisandiso, ifayile iqulethe uqwalaselo kwifomathi YAML
. Amaxwebhu aneenkcukacha zeziphi izitshixo ezinokuqulathwa kumgangatho ophezulu woqwalaselo, nakwinqanaba ngalinye elibekwe kwindlwane.
Okokuqala, masenze ikhonkco kumfanekiso wedoki kwifayile yoqwalaselo, apho kuya kwenziwa khona imisebenzi. Kule nto siyifumana
image: mcr.microsoft.com/dotnet/core/sdk:3.1
Ngoku, xa umbhobho uqaliswa ukusuka kwindawo yokugcina imifanekiso yeMicrosoft, umfanekiso ochaziweyo uya kukhutshelwa, apho yonke imisebenzi esuka kuqwalaselo iya kuphunyezwa.
Isinyathelo esilandelayo kukongeza uqeqesho's. Ngokungagqibekanga, iGitLab ichaza izigaba ezi-5:
.pre
- yenziwe kuwo onke amanqanaba,.post
-yenziwe emva kwazo zonke izigaba,build
- kuqala emva.pre
iqonga,test
- isigaba sesibini,deploy
- inqanaba lesithathu.
Akukho nto ikuthintelayo ukuba uzichaze ngokucacileyo, nangona kunjalo. Indlela amanyathelo adweliswe ngayo ichaphazela indlela enziwa ngayo. Ukugqibelela, masongeze kuqwalaselo:
stages:
- build
- test
- deploy
Ukulungisa ingxaki, kuyavakala ukufumana ulwazi malunga nokusingqongileyo apho imisebenzi yenziwa khona. Masidibanise uluhlu lwemiyalelo yehlabathi eya kwenziwa phambi komsebenzi ngamnye nge before_script
:
before_script:
- $PSVersionTable.PSVersion
- dotnet --version
- nuget help | select-string Version
Kuhlala ukongeza ubuncinane umsebenzi omnye ukwenzela ukuba xa ukuthunyelwa kuthunyelwe, umbhobho uya kuqala. Okwangoku, masidibanise umsebenzi ongenanto ukubonisa:
dummy job:
script:
- echo ok
Siqala ukuqinisekiswa, sifumana umyalezo wokuba yonke into ilungile, siyazibophelela, sityhala, sijonge iziphumo kwisayithi ... Kwaye sifumana impazamo yeskripthi - bash: .PSVersion: command not found
. wtf?
Yonke into isengqiqweni-ngokungagqibekanga, iimbaleki (zinoxanduva lokuphumeza izikripthi zomsebenzi kwaye zibonelelwe yiGitLab) sebenzisa bash
ukwenza imiyalelo. Ungalungisa oku ngokuchaza ngokucacileyo kwinkcazo yomsebenzi ukuba zeziphi iithegi umgijimi osebenzayo wombhobho afanele ukuba nazo:
dummy job on windows:
script:
- echo ok
tags:
- windows
Kakhulu! Umbhobho uyasebenza ngoku.
Umfundi onomdla, emva kokuphindaphinda amanyathelo abonakalisiweyo, uya kuqaphela ukuba umsebenzi ugqityiwe kwinqanaba test
, nangona singasichazanga iqonga. Njengoko unokuthelekelela test
linyathelo elimiselweyo.
Masiqhubeke nokwenza uqwalaselo lwamathambo ngokongeza yonke imisebenzi echazwe ngasentla:
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
Sinendlela engasebenziyo ngokukodwa, kodwa nangona kunjalo umbhobho ochanekileyo.
Ukuseta izichukumisi
Ngenxa yokuba akukho zihluzi ze-trigger zichaziweyo kuyo nayiphi na imisebenzi, umbhobho uya kwenza ngokupheleleyo senziwa ngalo lonke ixesha isibophelelo sityhalelwa kwindawo yokugcina. Ukusukela oku ingeyiyo indlela yokuziphatha enqwenelekayo ngokubanzi, sizakucwangcisa izihluzi zemisebenzi.
Izihluzi zinokumiselwa kwiifomathi ezimbini: only/except
ikuvumela ukuba uqwalasele izihluzi ngezitshisi (merge_request
, umzekelo - ubeka umsebenzi oza kuphunyezwa ngalo lonke ixesha isicelo sokutsalwa sisenziwa kwaye lonke ixesha ukuzinikela kuthunyelwa kwisebe elingumthombo kwisicelo sokudibanisa) kunye namagama esebe (kubandakanywa nokusetyenziswa kweentetho eziqhelekileyo); rules
ikuvumela ukuba wenze uluhlu lweemeko kwaye, ngokukhetha, utshintshe imeko yokwenziwa komsebenzi ngokuxhomekeke kwimpumelelo yemisebenzi yangaphambili (when
kwiGitLab CI/CD
Masikhumbule isethi yeemfuno - ukudibanisa kunye nokuvavanya kuphela isicelo sokudibanisa, ukupakishwa kunye nokuthumela kwi-Azure DevOps - ukudibanisa isicelo kunye nokutyhala kwinkosi, ukuveliswa kwamaxwebhu - ukutyhala kwinkosi.
Okokuqala, makhe simise umsebenzi wokwakha ikhowudi ngokongeza umthetho otshisa kuphela kwisicelo sokudibanisa:
build job:
# snip
only:
- merge_request
Ngoku makhe sisete umsebenzi wokupakisha umlilo kwisicelo sokudibanisa kwaye songeze ukuzinikela kwinkosi:
pack and deploy job:
# snip
only:
- merge_request
- master
Njengoko ubona, yonke into ilula kwaye ithe ngqo.
Unokuseta umsebenzi ukuba utshise kuphela ukuba isicelo sokudibanisa senziwa kunye nethagethi ethile okanye isebe lomthombo:
rules:
- if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"
Ngaphantsi kweemeko, ungasebenzisa rules
ayihambelani nemithetho only/except
.
Ukuqwalasela ukugcinwa kweArtifact
Ngexesha lomsebenzi build job
siya kuba nezinto zokwakha ezinokuphinda zisetyenziswe kwimisebenzi elandelayo. Ukwenza oku, kufuneka udibanise umendo kuqwalaselo lomsebenzi, iifayile oya kuzifuna ukugcina nokusebenzisa kwakhona kule misebenzi ilandelayo, kwisitshixo. artifacts
build job:
# snip
artifacts:
paths:
- path/to/build/artifacts
- another/path
- MyCoolLib.*/bin/Release/*
Iindlela zixhasa amakhadi asendle, nto leyo eyenza kube lula ukuseta.
Ukuba umsebenzi udala ii-artifacts, ngoko umsebenzi ngamnye olandelayo uya kukwazi ukufikelela kuzo - ziya kubekwa ecaleni kwendlela efanayo ngokunxulumene nengcambu yogcino oluqokelelwe kumsebenzi wokuqala. Ii-artifacts nazo ziyafumaneka ukuze zikhutshelwe kwisiza.
Ngoku ukuba sinesakhelo soqwalaselo silungile (kwaye sivavanyiwe), sinokuqhubeka sibhale ngokwenene izikripthi zemisebenzi.
Sibhala imibhalo
Mhlawumbi, kanye ngexesha, kwi-galaxy ekude, ekude, iiprojekthi zokwakha (kubandakanywa ne-.net) ukusuka kumgca womyalelo wawubuhlungu. Ngoku unokwakha, uvavanye kwaye upapashe iprojekthi kumaqela ama-3:
dotnet build
dotnet test
dotnet pack
Ngokwemvelo, kukho ezinye ii-nuances ngenxa yokuba siya kuyenza nzima imiyalelo ngandlel 'ithile.
- Sifuna ukukhululwa kokwakhiwa, kungekhona ukwakhiwa kwe-debug, ngoko songeza kumyalelo ngamnye
-c Release
- Xa sivavanya, sifuna ukuqokelela idatha yokugubungela ikhowudi, ngoko ke kufuneka sibandakanye umhlalutyi wokugubungela kumathala eencwadi ovavanyo:
- Yongeza ipakethe kuzo zonke iilayibrari zovavanyo
coverlet.msbuild
:dotnet add package coverlet.msbuild
ukusuka kwifolda yeprojekthi - Yongeza kumyalelo wokuqhuba uvavanyo
/p:CollectCoverage=true
- Yongeza isitshixo kuqwalaselo lomsebenzi wovavanyo ukufumana iziphumo zokhuselo (jonga ngezantsi)
- Yongeza ipakethe kuzo zonke iilayibrari zovavanyo
- Xa upakisha ikhowudi kwiipakethe ze-nuget, seta isilawuli semveliso yeepakethe:
-o .
Ukuqokelela idatha yekhowudi
Emva kokuqhuba iimvavanyo, ushicilelo lwe-Coverlet luqhuba izibalo kwikhonsoli:
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% |
+---------+--------+--------+--------+
I-GitLab ikuvumela ukuba uchaze intetho eqhelekileyo ukufumana izibalo, ezinokufunyanwa ngokohlobo lwebheji. Intetho eqhelekileyo ichaziwe kwizicwangciso zomsebenzi ngeqhosha coverage
; intetho mayiqulathe iqela lokubamba, ixabiso eliya kudluliselwa kwibheji:
test and cover job:
# snip
coverage: /|s*Totals*|s*(d+[,.]d+%)/
Apha sifumana iinkcukacha-manani ukusuka kumgca onobubanzi obupheleleyo.
Papasha iipakethe kunye namaxwebhu
Zombini ezi zenzo zicwangciselwe inqanaba lokugqibela lombhobho - ekubeni indibano kunye neemvavanyo zidlulile, sinokwabelana ngophuhliso lwethu nehlabathi.
Okokuqala, qwalasela ukupapasha kumthombo wephakheji:
-
Ukuba iprojekthi ayinayo ifayile yoqwalaselo ye-nuget (
nuget.config
), yenza entsha:dotnet new nugetconfig
Yantoni: umfanekiso unganakho ukufikelela ekubhaleni kuqwalaselo lwehlabathi (umsebenzisi kunye nomatshini). Ukuze singabambi iimpazamo, senza nje uqwalaselo olutsha lwasekhaya kwaye sisebenze nalo.
- Masidibanise umthombo omtsha wephakheji kuqwalaselo lwasekhaya:
nuget sources add -name <name> -source <url> -username <organization> -password <gitlab variable> -configfile nuget.config -StorePasswordInClearText
name
- Igama lomthombo wengingqi, alibalulekangaurl
-I-URL yomthombo ukusuka kwinqanaba elithi "Ukulungiselela ii-akhawunti", ipheorganization
- igama lombutho kwi-Azure DevOpsgitlab variable
- igama lenguqu kunye nethokheni yokufikelela eyongeziweyo kwi-GitLab ("Ukulungiselela ii-akhawunti", iphe. 11). Ngokwemvelo, kwifomathi$variableName
-StorePasswordInClearText
- i-hack yokugqitha impazamo eyaliwe yokufikelela (Andiqali ukunyathela le rakhi )- Kwimeko yeempazamo, kunokuba luncedo ukongeza
-verbosity detailed
- Ukuthumela ipakethe kumthombo:
nuget push -source <name> -skipduplicate -apikey <key> *.nupkg
- Sithumela zonke iipakethe kuluhlu lwangoku, ngoko
*.nupkg
. name
- ukusuka kwinqanaba eliphezulu.key
- nawuphi na umgca. Kwi-Azure DevOps, kwi-Connect to feed window, umzekelo uhlala umgcaaz
.-skipduplicate
- xa uzama ukuthumela iphakheji esele ikhona ngaphandle kwesi sitshixo, umthombo uya kubuyisela impazamo409 Conflict
; ngesitshixo, ukuthumela kuya kutsitywa.
- Sithumela zonke iipakethe kuluhlu lwangoku, ngoko
Ngoku makhe sisete ukuyilwa kwamaxwebhu:
- Okokuqala, kwindawo yokugcina, kwisebe elikhulu, siqalisa iprojekthi ye-docFX. Ukwenza oku, sebenzisa umyalelo osuka kwingcambu
docfx init
kunye nokuseta ngokudibeneyo iiparamitha eziphambili zokwakhiwa kwamaxwebhu. Inkcazo eneenkcukacha yobuncinci bokusekwa kweprojekthiapha .- Xa uqwalasela, kubalulekile ukukhankanya uvimba weefayili wemveliso
..public
- I-GitLab ngokungagqibekanga ithatha imixholo yesiqulathi seefayili sikawonke-wonke kwingcambu yendawo yokugcina njengomthombo waMaphepha. Ngokuba iprojekthi iya kubekwa kwifolda ebekwe kwindawo yokugcina - yongeza imveliso kwinqanaba phezulu kwindlela.
- Xa uqwalasela, kubalulekile ukukhankanya uvimba weefayili wemveliso
- Masityhale utshintsho kwiGitLab.
- Yongeza umsebenzi kuqwalaselo lombhobho
pages
(igama eligciniweyo lemisebenzi yokupapasha indawo kumaphepha eGitLab):- Ushicilelo:
nuget install docfx.console -version 2.51.0
-fakela i-docfx; uguqulelo luxeliwe ukuqinisekisa ukuba iindlela zofakelo lwempahla zichanekile..docfx.console.2.51.0toolsdocfx.exe .docfx_projectdocfx.json
- ukuqokelela amaxwebhu
- Ii-artifacts zeNode:
- Ushicilelo:
pages:
# snip
artifacts:
paths:
- public
Uqhawulo lweengoma malunga ne-docx
Ngaphambili, xa ndiseta iprojekthi, ndachaza umthombo wekhowudi yamaxwebhu njengefayile yesisombululo. Eyona nto ingalunganga kukuba uxwebhu lwenziwe kwiiprojekthi zovavanyo. Kwimeko apho oku akuyomfuneko, ungabeka eli xabiso kwindawo metadata.src
:
{
"metadata": [
{
"src": [
{
"src": "../",
"files": [
"**/*.csproj"
],
"exclude":[
"*.tests*/**"
]
}
],
// --- snip ---
},
// --- snip ---
],
// --- snip ---
}
metadata.src.src: "../"
- sihamba kwinqanaba elinye ukuya kwindawodocfx.json
, ngokuba kwiipateni, ukukhangela umthi wolawulo akusebenzi.metadata.src.files: ["**/*.csproj"]
- ipateni yehlabathi, siqokelela zonke iiprojekthi ze-C # kuzo zonke iirejista.metadata.src.exclude: ["*.tests*/**"]
-ipateni yehlabathi, ungabandakanyi yonke into kwiifolda ezine.tests
Kwisihloko
Ixabiso lilonke
Ulungelelwaniso olulula olunjalo lunokwenziwa kwisiqingatha seyure kunye neekomityi ezimbalwa zekofu, eziza kukuvumela ukuba ukhangele ukuba ikhowudi yakhiwe kwaye iimvavanyo zidlula, ukwakha iphakheji entsha, ukuhlaziya uxwebhu kwaye ukholise iliso ngobuhle. iibheji kwi-README yeprojekthi kunye nesicelo sokudibanisa ngasinye kunye nokuthumela kumphathi.
Okokugqibela .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
Ukuthetha ngeebheji
Ngenxa yabo, emva koko, yonke into yaqalwa!
Iibheji ezinesimo semibhobho kunye nekhowudi egqunyiweyo ziyafumaneka kwi-GitLab kwiisetingi ze-CI/CD kwibhloko yemibhobho ye-Gtntral:
Ndenze ibheji enekhonkco kumaxwebhu eqongeni
![ΠΡΠΈΠΌΠ΅Ρ Ρ Shields.io](https://img.shields.io/badge/custom-badge-blue)
I-Azure DevOps Artifacts ikwakuvumela ukuba wenze iibheji zeepakethi ezinohlobo lwamva nje. Ukwenza oku, kumthombo kwindawo ye-Azure DevOps, kufuneka ucofe kwi-Yenza ibheji yephakheji ekhethiweyo kwaye ukope uphawu lokuphawula:
Ukongeza ubuhle
Ukuqaqambisa amaqhekeza oLungiselelo oluqhelekileyo
Ngelixa ndibhala uqwalaselo kunye nokukhangela kuxwebhu, ndifumene into enomdla ye-YAML- iphinda isebenzise amaqhekeza.
Njengoko unokubona kwiisetingi zomsebenzi, zonke zifuna ithegi windows
kwimbaleki, kwaye ziqhutywa xa isicelo sokudibanisa sithunyelwa kumphathi/owenziweyo (ngaphandle kwamaxwebhu). Makhe songeze oku kwisiqwenga esiya kuphinda sisebenzise:
.common_tags: &common_tags
tags:
- windows
.common_only: &common_only
only:
- merge_requests
- master
Kwaye ngoku sinokufaka isiqwenga esichazwe ngaphambili kwinkcazo yomsebenzi:
build job:
<<: *common_tags
<<: *common_only
Amagama amaqhekeza kufuneka aqale ngechaphaza, ukuze angatolikwa njengomsebenzi.
Uguqulelo lwepakethi
Xa udala ipakethe, umqokeleli uhlola umgca womyalelo wokutshintsha, kwaye ngokungabikho kwabo, iifayile zeprojekthi; xa ifumana indawo yoguqulelo, ithatha ixabiso layo njengoguqulelo lwempahla eyakhiwayo. Kuyavela ukuba ukuze wakhe ipakethe ngenguqulelo entsha, kufuneka uyihlaziye kwifayile yeprojekthi okanye uyidlulise njengengxoxo yomgca womyalelo.
Makhe songeze olunye uluhlu lomnqweno yimfumba - vumela amanani amabini amancinci kuguqulelo abe ngunyaka kwaye sakhe umhla wephakheji, kwaye wongeze iinguqulelo zangaphambili. Ngokuqinisekileyo, unokongeza le datha kwifayile yeprojekthi kwaye ukhangele phambi kokungeniswa ngalunye - kodwa ungayenza kwakhona kumbhobho, ukuqokelela inguqulo yephakheji ukusuka kumxholo kwaye uyidlulise kwingxabano yomgca womyalelo.
Masivume ukuba ukuba umyalezo wokuzibophelela uqulethe umgca onje release (v./ver./version) <version number> (rev./revision <revision>)?
, emva koko siya kuthatha uguqulelo lwepakethe kulo mgca, songezelele ngomhla wangoku kwaye siwugqithise njengengxabano kumyalelo. dotnet pack
. Ukungabikho komgca, asiyi kuqokelela iphakheji.
Okushicilelweyo kulandelayo kuyisombulula le ngxaki:
# ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΡΡΠΎΠΊΠΈ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ
$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
Ukongeza iskripthi kumsebenzi pack and deploy job
kwaye ujonge indibano yeepakethe ngokungqongqo phambi komtya onikiweyo kumyalezo wokuzibophelela.
Iyonke
Emva kokuchitha malunga nesiqingatha seyure okanye iyure ubhala ulungelelwaniso, ukulungisa ingxaki kwi-powershell yendawo kwaye, mhlawumbi, ukusungulwa okumbalwa okungaphumelelanga, sifumene ulungelelwaniso olulula lwemisebenzi yesiqhelo ezenzekelayo.
Ewe kunjalo, iGitLab CI / CD ibanzi kakhulu kwaye inamacala amaninzi kunokuba inokubonakala emva kokufunda esi sikhokelo -
Fumana ngokuzenzekelayo, wakhe, uvavanye, usasaze kwaye ubeke iliso kwizicelo zakho
Ngoku izicwangciso kukuqulunqa umbhobho wokuhambisa izicelo kwi-Azure, usebenzisa i-Pulumi kwaye unqume ngokuzenzekelayo indawo ekujoliswe kuyo, eya kubandakanywa kwinqaku elilandelayo.
umthombo: www.habr.com