Vai arÄ« kÄ iegÅ«t skaistas nozÄ«mÄ«tes savam projektam vienÄ mierÄ«gÄ kodÄÅ”anas vakarÄ
DroÅ”i vien katram izstrÄdÄtÄjam, kuram kaut kad ir kaut viens mÄjdzÄ«vnieku projekts, niez pÄc skaistÄm nozÄ«mÄ«tÄm ar statusiem, koda pÄrklÄjumu, pakotÅu versijÄm nuget... Un Ŕī nieze lika man uzrakstÄ«t Å”o rakstu. Gatavojoties tÄ rakstÄ«Å”anai, es ieguvu Å”o skaistumu vienÄ no saviem projektiem:
Å ajÄ rakstÄ tiks apskatÄ«ta nepÄrtrauktas integrÄcijas un piegÄdes pamatiestatÄ«Å”ana .Net Core klases bibliotÄkas projektam GitLab, dokumentÄcijas publicÄÅ”ana GitLab lapÄs un apkopoto pakotÅu nosÅ«tÄ«Å”ana uz privÄtu plÅ«smu pakalpojumÄ Azure DevOps.
VS kods ar paplaÅ”inÄjumu tika izmantots kÄ izstrÄdes vide GitLab darbplÅ«sma (lai apstiprinÄtu iestatÄ«jumu failu tieÅ”i no izstrÄdes vides).
ÄŖss ievads
CD ir tad, kad tu tikko spiedi, bet klients jau visu pazaudÄjis?
Kas ir CI/CD un kÄpÄc tas ir vajadzÄ«gs?Var viegli pameklÄt google. Atrodiet pilnÄ«gu dokumentÄciju par cauruļvadu iestatÄ«Å”anu GitLab arÄ« viegli. Å eit es Ä«si un, ja iespÄjams, bez trÅ«kumiem, aprakstÄ«Å”u sistÄmas procesu no putna lidojuma:
izstrÄdÄtÄjs nosÅ«ta saistÄ«bas krÄtuvei, izveido sapludinÄÅ”anas pieprasÄ«jumu, izmantojot vietni, vai kÄdÄ citÄ veidÄ tieÅ”i vai netieÅ”i palaiž cauruļvadu,
no konfigurÄcijas tiek atlasÄ«ti visi uzdevumi, kuru nosacÄ«jumi ļauj tos palaist noteiktÄ kontekstÄ,
uzdevumi tiek organizÄti atbilstoÅ”i to posmiem,
posmi tiek izpildÄ«ti pÄc kÄrtas - t.i. paralÄli visi Ŕī posma uzdevumi ir izpildÄ«ti,
ja posms neizdodas (t.i., neizdodas vismaz viens no posma uzdevumiem) - cauruļvads apstÄjas (gandrÄ«z vienmÄr),
ja visi posmi ir veiksmīgi pabeigti, cauruļvads tiek uzskatīts par veiksmīgu.
TÄdÄjÄdi mums ir:
konveijera ir uzdevumu kopums, kas sakÄrtots posmos, kuros varat montÄt, pÄrbaudÄ«t, pakotÄt kodu, izvietot gatavo montÄžu mÄkoÅpakalpojumÄ utt.
posms (posms) ā cauruļvadu organizÄcijas vienÄ«ba, satur 1+ uzdevumu,
uzdevums (darbs) ir darba vienÄ«ba konveijerÄ. SastÄv no skripta (nepiecieÅ”ams), palaiÅ”anas nosacÄ«jumiem, iestatÄ«jumiem artefaktu publicÄÅ”anai/keÅ”atmiÅai un daudz ko citu.
AttiecÄ«gi CI/CD iestatÄ«Å”anas uzdevums ir izveidot uzdevumu kopu, kas Ä«steno visas nepiecieÅ”amÄs darbÄ«bas koda un artefaktu apkopoÅ”anai, testÄÅ”anai un publicÄÅ”anai.
Pirms sÄkam: kÄpÄc?
KÄpÄc GitLab?
Jo, kad radÄs vajadzÄ«ba izveidot privÄtas krÄtuves mÄjdzÄ«vnieku projektiem, par tiem maksÄja GitHub, un es biju mantkÄrÄ«gs. KrÄtuves ir kļuvuÅ”as bezmaksas, taÄu pagaidÄm tas nav pietiekami labs iemesls, lai es pÄrietu uz GitHub.
KÄpÄc ne Azure DevOps cauruļvadi?
TÄ kÄ iestatÄ«Å”ana ir vienkÄrÅ”a ā jums pat nav vajadzÄ«gas komandrindas zinÄÅ”anas. IntegrÄcija ar ÄrÄjiem git nodroÅ”inÄtÄjiem ā ar pÄris klikŔķiem, SSH atslÄgu importÄÅ”ana saistÄ«bu nosÅ«tÄ«Å”anai uz repozitoriju ā arÄ« konveijers ir viegli konfigurÄjams pat bez veidnes.
SÄkuma pozÄ«cija: kas jums ir un ko vÄlaties
Mums ir:
repozitorijs GitLab.
MÄs gribam:
automÄtiska montÄža un pÄrbaude katram apvienoÅ”anas pieprasÄ«jumam,
veidojot pakotnes katram sapludinÄÅ”anas pieprasÄ«jumam un nosÅ«tot uz galveno, ja apstiprinÄjuma ziÅojumÄ ir noteikta rinda,
savÄkto pakotÅu nosÅ«tÄ«Å”ana uz privÄtu plÅ«smu pakalpojumÄ Azure DevOps,
dokumentÄcijas apkopoÅ”ana un publicÄÅ”ana GitLab lapÄs,
NoklikŔķinot uz pogas Izveidot, projekts tiks izveidots un tiksiet novirzÄ«ts uz tÄ lapu. Å ajÄ lapÄ jÅ«s varat atspÄjot nevajadzÄ«gas funkcijas, dodoties uz projektu iestatÄ«jumiem (apakÅ”ÄjÄ saite sarakstÄ kreisajÄ pusÄ -> PÄrskats -> Azure DevOps pakalpojumu bloks)
Atveriet sadaļu Atrifacts, noklikŔķiniet uz Izveidot plūsmu
Ievadiet avota nosaukumu
IzvÄlieties redzamÄ«bu
NoÅemiet atzÄ«mi no izvÄles rÅ«tiÅas Iekļaujiet pakotnes no plaÅ”i izplatÄ«tiem publiskiem avotiemlai avots nepÄrvÄrstos par tÄ«rradÅa klona atkritumu izgÄztuvi
NoklikŔķiniet uz Connect to feed, atlasiet Visual Studio, kopÄjiet avotu no bloka Machine Setup
Dodieties uz konta iestatÄ«jumiem, atlasiet PersoniskÄ piekļuves pilnvara
Izveidojiet jaunu piekļuves pilnvaru
Nosaukums - patvaļīgs
OrganizÄcija ā aktuÄla
DerÄ«guma termiÅÅ”: maksimÄli 1 gads
DarbÄ«bas joma ā iepakojums/lasÄ«Å”ana un rakstÄ«Å”ana
Nosaukums ā jebkurÅ” bez atstarpÄm (bÅ«s pieejams komandu apvalkÄ)
VÄrtÄ«ba ir piekļuves pilnvara no 9. darbÄ«bas
Atlasiet maskas mainīgo
Tas pabeidz sÄkotnÄjo iestatÄ«Å”anu.
KonfigurÄcijas ietvara sagatavoÅ”ana
PÄc noklusÄjuma fails, ko izmanto CI/CD konfigurÄÅ”anai GitLab, ir .gitlab-ci.yml no repozitorija saknes. Repozitorija iestatÄ«jumos varat konfigurÄt pielÄgotu ceļu uz Å”o failu, taÄu Å”ajÄ gadÄ«jumÄ tas nav nepiecieÅ”ams.
KÄ redzams no paplaÅ”inÄjuma, fails satur konfigurÄciju formÄtÄ YAML. DokumentÄcijÄ ir sÄ«ki aprakstÄ«ts, kÄdas atslÄgas var ietvert konfigurÄcijas augÅ”ÄjÄ lÄ«menÄ« un katrÄ ligzdotajÄ lÄ«menÄ«.
Vispirms konfigurÄcijas failam pievienosim saiti uz docker attÄlu, kurÄ tiks izpildÄ«ti uzdevumi. Lai to izdarÄ«tu, mÄs atrodam .Net Core attÄlu lapa vietnÄ Docker Hub. Uz GitHub Ir detalizÄts ceļvedis, kuru attÄlu izvÄlÄties dažÄdiem uzdevumiem. AttÄls ar .Net Core 3.1 ir piemÄrots mÅ«su izveidei, tÄpÄc pievienojiet to konfigurÄcijai kÄ pirmo rindiÅu.
image: mcr.microsoft.com/dotnet/core/sdk:3.1
Tagad, palaižot cauruļvadu, norÄdÄ«tais attÄls tiks lejupielÄdÄts no Microsoft attÄlu krÄtuves, kurÄ tiks izpildÄ«ti visi konfigurÄcijas uzdevumi.
NÄkamais solis ir pievienot posmss. PÄc noklusÄjuma GitLab definÄ 5 posmus:
.pre - veikta visos posmos,
.post - izpildÄ«ts pÄc visiem posmiem,
build - vispirms pÄc .pre posms,
test - otrais posms,
deploy - treŔais posms.
TomÄr nekas neliedz jums tos skaidri paziÅot. KÄrtÄ«ba, kÄdÄ tiek uzskaitÄ«tas darbÄ«bas, ietekmÄ to izpildes secÄ«bu. Lai nodroÅ”inÄtu pilnÄ«gumu, pievienosim konfigurÄcijai:
stages:
- build
- test
- deploy
AtkļūdoÅ”anai ir lietderÄ«gi iegÅ«t informÄciju par vidi, kurÄ tiek izpildÄ«ti uzdevumi. Pievienosim globÄlu komandu kopu, kas tiks izpildÄ«ta pirms katra uzdevuma izmantoÅ”anas before_script:
before_script:
- $PSVersionTable.PSVersion
- dotnet --version
- nuget help | select-string Version
Atliek pievienot vismaz vienu uzdevumu, lai, nosÅ«tot saistÄ«bas, tiktu sÄkta konveijera. PagaidÄm demonstrÄcijai pievienosim tukÅ”u uzdevumu:
dummy job:
script:
- echo ok
SÄkam validÄciju, saÅemam ziÅojumu, ka viss kÄrtÄ«bÄ, apÅemamies, spiežam, apskatÄm rezultÄtus vietnÄ... Un saÅemam skripta kļūdu - bash: .PSVersion: command not found. WTF?
Viss ir loÄ£iski - pÄc noklusÄjuma skrÄjÄji (atbildÄ«gi par uzdevumu skriptu izpildi un nodroÅ”ina GitLab) izmanto bash lai izpildÄ«tu komandas. Varat to novÄrst, uzdevuma aprakstÄ skaidri norÄdot, kÄdiem tagiem jÄbÅ«t izpildÄ«tÄjam konveijera palaidÄjam:
dummy job on windows:
script:
- echo ok
tags:
- windows
Lieliski! Cauruļvads tagad darbojas.
UzmanÄ«gs lasÄ«tÄjs, atkÄrtojot Ŕīs darbÄ«bas, pamanÄ«s, ka uzdevums ir izpildÄ«ts posmÄ test, lai gan mÄs nenorÄdÄ«jÄm posmu. KÄ jÅ«s varÄtu nojaust, test ir noklusÄjuma solis.
TurpinÄsim konfigurÄcijas skeleta izveidi, pievienojot visus iepriekÅ” aprakstÄ«tos uzdevumus:
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
MÄs saÅÄmÄm ne Ä«paÅ”i funkcionÄlu, bet tomÄr pareizu cauruļvadu.
Trigeru iestatīŔana
SakarÄ ar to, ka nevienam uzdevumam nav norÄdÄ«ti sprÅ«da filtri, konveijera tiks veikta pilnÄ«gi tiek izpildÄ«ts katru reizi, kad saistÄ«bas tiek nosÅ«tÄ«tas uz repozitoriju. TÄ kÄ Å”Ä« darbÄ«ba kopumÄ nav vÄlama, mÄs konfigurÄsim uzdevumu aktivizÄtÄjus.
Filtrus var konfigurÄt divos formÄtos: tikai/izÅemot Šø noteikumi. ÄŖsumÄ, only/except ļauj konfigurÄt filtrus pÄc trigeriem (merge_request, piemÄram - konfigurÄ uzdevumu izpildi katru reizi, kad tiek izveidots sapludinÄÅ”anas pieprasÄ«jums un katru reizi, kad tiek nosÅ«tÄ«tas saistÄ«bas filiÄlei, kas ir sapludinÄÅ”anas pieprasÄ«juma avots) un filiÄļu nosaukumus (tostarp izmantojot regulÄrÄs izteiksmes); rules ļauj pielÄgot nosacÄ«jumu kopu un pÄc izvÄles mainÄ«t uzdevuma izpildes nosacÄ«jumu atkarÄ«bÄ no iepriekÅ”Äjo uzdevumu panÄkumiem (when GitLab CI/CD).
AtcerÄsimies prasÄ«bu kopumu - montÄža un testÄÅ”ana tikai sapludinÄÅ”anas pieprasÄ«jumiem, iesaiÅoÅ”ana un nosÅ«tÄ«Å”ana uz Azure DevOps - sapludinÄÅ”anas pieprasÄ«jumiem un nosÅ«tÄ«jumiem uz galveno, dokumentÄcijas Ä£enerÄÅ”ana - pushem uz galveno.
Vispirms iestatÄ«sim koda montÄžas uzdevumu, pievienojot trigera kÄrtulu, kas aktivizÄ tikai sapludinÄÅ”anas pieprasÄ«jumu:
build job:
# snip
only:
- merge_request
Tagad konfigurÄsim iepakoÅ”anas uzdevumu, lai aktivizÄtu sapludinÄÅ”anas pieprasÄ«jumu un pievienotu saistÄ«bas galvenajam:
Varat arÄ« konfigurÄt uzdevumu, lai tas tiktu aktivizÄts tikai tad, ja sapludinÄÅ”anas pieprasÄ«jums ir izveidots ar noteiktu mÄrÄ·a vai avota atzaru:
KamÄr uzdevums tiek izpildÄ«ts build job mums bÅ«s izveidoti artefakti, kurus varÄs izmantot atkÄrtoti turpmÄkajos uzdevumos. Lai to izdarÄ«tu, atslÄgai ir jÄpievieno ceļi uzdevuma konfigurÄcijai, faili, pa kuriem bÅ«s jÄsaglabÄ un atkÄrtoti jÄizmanto nÄkamajos uzdevumos. artifacts:
Ceļi atbalsta aizstÄjÄjzÄ«mes, kas noteikti atvieglo to iestatÄ«Å”anu.
Ja uzdevums rada artefaktus, katrs nÄkamais uzdevums varÄs tiem piekļūt - tie atradÄ«sies pa tiem paÅ”iem ceļiem attiecÄ«bÄ pret repozitorija sakni, pa kuru tie tika savÄkti no sÄkotnÄjÄ uzdevuma. Artefakti ir pieejami arÄ« lejupielÄdei vietnÄ.
Tagad, kad mums ir gatava (un pÄrbaudÄ«ta) konfigurÄcijas sistÄma, mÄs varam pÄriet uz uzdevumu skriptu rakstÄ«Å”anu.
MÄs rakstÄm scenÄrijus
IespÄjams, kÄdreiz tÄlu, tÄlu galaktikÄ bÅ«vniecÄ«bas projekti (tostarp .net) no komandrindas bija sÄpÄ«gi. Tagad jÅ«s varat salikt, pÄrbaudÄ«t un publicÄt projektu 3 komandÄs:
dotnet build
dotnet test
dotnet pack
Protams, ir dažas nianses, kuru dÄļ mÄs nedaudz sarežģīsim komandas.
MÄs vÄlamies laidienu, nevis atkļūdoÅ”anu, bÅ«vÄjumu, tÄpÄc pievienojam katrai komandai -c Release
PÄrbaudot, mÄs vÄlamies apkopot datus par koda pÄrklÄjumu, tÄpÄc mums ir jÄpievieno pÄrklÄjuma analizators ar testa bibliotÄkÄm:
Pakete jÄpievieno visÄm testa bibliotÄkÄm coverlet.msbuild: dotnet add package coverlet.msbuild no projekta mapes
Pievienojiet testa palaiŔanas komandai /p:CollectCoverage=true
GitLab ļauj norÄdÄ«t regulÄro izteiksmi, lai iegÅ«tu statistiku, ko pÄc tam var iegÅ«t emblÄmas veidÄ. RegulÄrÄ izteiksme ir norÄdÄ«ta uzdevuma iestatÄ«jumos ar taustiÅu coverage; izteiksmÄ jÄsatur uztverÅ”anas grupa, kuras vÄrtÄ«ba tiks pÄrnesta uz emblÄmu:
test and cover job:
# snip
coverage: /|s*Totals*|s*(d+[,.]d+%)/
Å eit mÄs iegÅ«stam statistiku no rindas ar kopÄjo pÄrklÄjumu pa rindÄm.
MÄs publicÄjam paketes un dokumentÄciju
Mums ir abas darbÄ«bas, kas noteiktas cauruļvada pÄdÄjam posmam - kopÅ” montÄžas un pÄrbaudes ir pagÄjuÅ”as, mÄs varam dalÄ«ties ar savu attÄ«stÄ«bu ar pasauli.
Vispirms apskatÄ«sim publicÄÅ”anu pakotnes avotÄ:
Ja projektam nav tÄ«rradÅa konfigurÄcijas faila (nuget.config), izveidojiet jaunu: dotnet new nugetconfig
Par ko: AttÄlam var nebÅ«t rakstÄ«Å”anas piekļuves globÄlajÄm (lietotÄja un maŔīnas) konfigurÄcijÄm. Lai netiktu pieļautas kļūdas, mÄs vienkÄrÅ”i izveidosim jaunu lokÄlo konfigurÄciju un strÄdÄsim ar to.
MÄs sÅ«tÄm visas paketes no paÅ”reizÄjÄ direktorija, tÄpÄc *.nupkg.
name - no iepriekÅ” minÄtÄ soļa.
key - jebkura lÄ«nija. Programmas Azure DevOps logÄ Connect to feed piemÄra rinda vienmÄr ir az.
-skipduplicate ā ja mÄÄ£inÄt nosÅ«tÄ«t jau esoÅ”u pakotni bez Ŕīs atslÄgas, avots atgriezÄ«s kļūdu 409 Conflict; ar atslÄgu, nosÅ«tÄ«Å”ana tiks izlaista.
Tagad iestatÄ«sim dokumentÄcijas izveidi:
SÄkumÄ repozitorijÄ galvenajÄ filiÄlÄ mÄs inicializÄjam docfx projektu. Lai to izdarÄ«tu, jums ir jÄpalaiž komanda no saknes docfx init un interaktÄ«vi iestatiet galvenos parametrus dokumentÄcijas komplektÄÅ”anai. DetalizÄts minimÄlÄ projekta iestatÄ«Å”anas apraksts Å”eit.
IestatÄ«Å”anas laikÄ ir svarÄ«gi norÄdÄ«t izvades direktoriju ..public - GitLab pÄc noklusÄjuma izmanto repozitorija saknÄ esoÅ”Äs publiskÄs mapes saturu kÄ lapu avotu. Jo projekts atradÄ«sies mapÄ, kas ir ligzdots repozitorijÄ - pievienojiet ceļam izeju uz nÄkamo lÄ«meni.
nuget install docfx.console -version 2.51.0 - instalÄt docfx; Versija tiek nodroÅ”inÄta, lai nodroÅ”inÄtu, ka pakotnes instalÄÅ”anas ceļi ir pareizi.
IepriekÅ”, veidojot projektu, kÄ risinÄjuma failu norÄdÄ«ju dokumentÄcijas koda avotu. Galvenais trÅ«kums ir tas, ka dokumentÄcija tiek veidota arÄ« testa projektiem. Ja tas nav nepiecieÅ”ams, varat iestatÄ«t Å”o vÄrtÄ«bu mezglam metadata.src:
metadata.src.src: "../" ā ejiet vienu lÄ«meni uz augÅ”u attiecÄ«bÄ pret atraÅ”anÄs vietu docfx.json, jo MeklÄÅ”ana direktoriju kokÄ nedarbojas modeļos.
metadata.src.files: ["**/*.csproj"] ā globÄls modelis, mÄs apkopojam visus C# projektus no visiem direktorijiem.
metadata.src.exclude: ["*.tests*/**"] - globÄls modelis, izslÄdziet visu no mapÄm ar .tests VirsrakstÄ
Starpsumma
Å o vienkÄrÅ”o konfigurÄciju var izveidot burtiski pusstundas un pÄris kafijas tasÄ«Å”u laikÄ, kas ļaus ar katru sapludinÄÅ”anas pieprasÄ«jumu pÄrbaudÄ«t un nosÅ«tÄ«t meistaram, ka kods tiek veidots un testi iet, saliekot jaunu pakotni, aktualizÄjot dokumentÄciju un iepriecinot aci ar skaistÄm nozÄ«mÄ«tÄm projektÄ README.
Galīgais .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
RunÄjot par nozÄ«mÄ«tÄm
TieÅ”i viÅu dÄļ viss tika sÄkts!
EmblÄmas ar konveijera statusiem un koda pÄrklÄjumu ir pieejamas GitLab CI/CD iestatÄ«jumos blokÄ Gtntral konveijera:
Es izveidoju emblÄmu ar saiti uz platformas dokumentÄciju shields.io ā tur viss ir diezgan vienkÄrÅ”i, jÅ«s varat izveidot savu nozÄ«mÄ«ti un saÅemt to, izmantojot pieprasÄ«jumu.
Azure DevOps Artifacts arÄ« ļauj izveidot emblÄmas pakotnÄm, kas norÄda jaunÄko versiju. Lai to izdarÄ«tu, Azure DevOps vietnes avotÄ jums jÄnoklikŔķina uz Izveidot emblÄmu atlasÄ«tajai pakotnei un jÄkopÄ atzÄ«mes:
Rakstot konfigurÄciju un pÄrmeklÄjot dokumentÄciju, es uzgÄju interesantu YAML funkciju - fragmentu atkÄrtotu izmantoÅ”anu.
KÄ redzat no uzdevuma iestatÄ«jumiem, tiem visiem ir nepiecieÅ”ams tags windows no izpildÄ«tÄja, un tiek aktivizÄti, nosÅ«tot sapludinÄÅ”anas pieprasÄ«jumu galvenajam/veidojot sapludinÄÅ”anas pieprasÄ«jumu (izÅemot dokumentÄciju). Pievienosim Å”o fragmentam, ko izmantosim atkÄrtoti:
Un tagad mÄs varam ievietot iepriekÅ” izziÅoto fragmentu uzdevuma aprakstÄ:
build job:
<<: *common_tags
<<: *common_only
Fragmentu nosaukumiem jÄsÄkas ar punktu, lai netiktu interpretÄts kÄ uzdevums.
Pakotnes versiju noteikŔana
Veidojot pakotni, kompilators pÄrbauda komandrindas slÄdžus un, ja to nav, projekta failus; PÄc mezgla Version atraÅ”anas tas iegÅ«st tÄ vÄrtÄ«bu kÄ veidojamÄs pakotnes versiju. IzrÄdÄs, lai izveidotu pakotni ar jaunu versiju, tÄ ir jÄatjaunina projekta failÄ vai jÄnodod kÄ komandrindas arguments.
Pievienosim vÄl vienu vÄlmi ā lai divi mazÄkie skaitļi versijÄ ir pakotnes izveides gads un datums, un pievienojam pirmsizlaides versijas. Protams, jÅ«s varat pievienot Å”os datus projekta failam un pÄrbaudÄ«t tos pirms katras iesniegÅ”anas, taÄu varat to izdarÄ«t arÄ« konveijerÄ, savÄcot pakotnes versiju no konteksta un nododot to caur komandrindas argumentu.
Vienosimies, ja commit ziÅojumÄ ir rindiÅa patÄ«k release (v./ver./version) <version number> (rev./revision <revision>)?, tad mÄs paÅemsim pakotnes versiju no Ŕīs rindas, papildinÄsim to ar paÅ”reizÄjo datumu un nodosim to kÄ argumentu komandai dotnet pack. Ja nav lÄ«nijas, mÄs vienkÄrÅ”i nesaliksim iepakojumu.
Skripta pievienoÅ”ana uzdevumam pack and deploy job un stingri ievÄrojiet paku salikÅ”anu, ja commit ziÅojumÄ ir norÄdÄ«ta rinda.
KopÄ
PÄc apmÄram pusstundas lÄ«dz stundai, kas bija pavadÄ«ta konfigurÄcijas rakstÄ«Å”anai, atkļūdoÅ”anai vietÄjÄ Powershell un, iespÄjams, pÄris neveiksmÄ«gÄm palaiÅ”anas reizÄm, mÄs saÅÄmÄm vienkÄrÅ”u konfigurÄciju ikdienas uzdevumu automatizÄÅ”anai.
Protams, GitLab CI/CD ir daudz plaÅ”Äks un daudzpusÄ«gÄks, nekÄ varÄtu Ŕķist pÄc Ŕīs rokasgrÄmatas izlasÄ«Å”anas - tÄ nemaz nav taisnÄ«ba. Ir pat Auto DevOps jÄpieļaujot
automÄtiski noteikt, izveidot, pÄrbaudÄ«t, izvietot un pÄrraudzÄ«t jÅ«su lietojumprogrammas
Tagad ir plÄnots konfigurÄt konveijeru lietojumprogrammu izvietoÅ”anai Azure, izmantojot Pulumi un automÄtiski nosakot mÄrÄ·a vidi, kas tiks aplÅ«kota nÄkamajÄ rakstÄ.