.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

Arendasime DevOpsi nii hĂ€sti kui suutsime. Meid oli kaheksa ja Vasja oli neist kĂ”ige lahedam. WindowsÄkitselt lahkus Vasja ja mul oli ĂŒlesanne kĂ€ivitada uus projekt, mis varustab Windows-arendus. Kui ma kogu virna lauale viskasin Windows-arengud, siis sain aru, et olukord on valus...

Nii see lugu algab Aleksandra Sinchinova edasi DevOpsConfKui juhtiv spetsialist ettevĂ”ttest lahkus Windows, Aleksander mĂ”tles, mida nĂŒĂŒd teha. Mine aadressile LinuxMuidugi! Aleksander rÀÀgib teile, kuidas tal Ă”nnestus pretsedent luua ja osa tĂ”lkida Windows arengud Linux kasutades nĂ€itena 100 000 lĂ”ppkasutaja jaoks lĂ”petatud projekti.

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

Kuidas projekti TFS-i, Puppeti ja muude tööriistade abil RPM-ile lihtsalt ja vaevata edastada? Linux .NET Core? Kuidas hallata projekti andmebaasi versioonimist, kui arendaja kuuleb sĂ”nu Postgres ja Flyway esimest korda ning tĂ€htaeg on ĂŒlehomme? Kuidas integreerida Dockeriga? Kuidas motiveerida .NET arendajaid loobuma Windows ja smuutid Nukule ja LinuxKuidas lahendada ideoloogilisi konflikte, kui teenite Windows Kas sul pole energiat, soovi vĂ”i ressursse tootmiskeskkonnaga alustamiseks? Alexanderi ettekanne kĂ€sitleb seda, aga ka veebi juurutamist, testimist, CI-d, TFS-i tavasid olemasolevates projektides ning loomulikult katkiseid ja toimivaid lahendusi.

Esita video

Niisiis, Vasja lahkus, ĂŒlesanne oli minu ja arendajad ootasid kannatamatult kahvlitega. Kui ma lĂ”puks taipasin, et Vasja tagasi ei tule, asusin asja kallale. Esmalt hindasin meie masinapargi Win VM-ide protsenti. Ć ansid olid tema vastu. Windows.

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

Kuna me tegeleme aktiivselt DevOpsi arendamisega, mĂ”istsin, et peame uute rakenduste juurutamise lĂ€henemisviisis midagi muutma. Oli ainult ĂŒks lahendus: viia kĂ”ik vĂ”imaluse korral natiivsele tasemele. LinuxGoogle aitas mind – sel ajal oli .Net juba portitud Linux, ja ma sain aru, et see oligi lahendus!

Miks .NET tuum koos Linux?

Sellel oli mitu pĂ”hjust. Maksmise ja maksmata jĂ€tmise vahel valides valiks enamik inimesi viimase – nagu ka mina. MSDB litsents maksab umbes 1000 dollarit ja virtuaalsete masinate laevastiku haldamine Windows ulatub sadadesse dollaritesse. Suure ettevĂ”tte jaoks on see mĂ€rkimisvÀÀrne kulu. SeetĂ”ttu kokkuhoid - esimene pĂ”hjus. Mitte kĂ”ige olulisem, kuid ĂŒks olulisemaid.

Virtuaalsed masinad Windows tarbivad rohkem ressursse kui nende vennad Linux - nad on raskedArvestades suurettevĂ”tte suurust, valisime Linux.

SĂŒsteem on lihtsalt integreeritud olemasolevasse CI-ssePeame end progressiivseteks DevOpsi esindajateks, kasutame Bamboot, Jenkinsit ja GitLab CI-d, seega suurem osa meie tööst toimub Linux.

Viimane pĂ”hjus on mugav kaaslane. Me pidime langetama sisenemisbarjÀÀri "hooldajatele" – neile, kes mĂ”istavad tehnilist poolt, tagavad tööaja ja haldavad teenuseid teisest liinist alates. Nad olid juba sĂŒsteemiga tuttavad. Linux, seega on neil uue toote mĂ”istmine, toetamine ja hooldamine palju lihtsam kui sarnaste tarkvarafunktsioonide mĂ”istmiseks lisaressursse kulutada. Windows platvorm.

NÔuded

EelkÔige - uue lahenduse mugavus arendajateleMitte kÔik neist polnud muutusteks valmis, eriti pÀrast seda, kui sÔna oli lausutud. LinuxArendajad tahavad oma lemmik Visual Studiot, TFS-i automatiseeritud ehitustestidega ja smoothies'eid. See, kuidas nad tootmiskeskkonda jÔuavad, pole nende jaoks oluline. SeetÔttu otsustasime tuttavat protsessi mitte muuta ja selle sinnapaika jÀtta. Windows- arengud jÀÀvad samaks.

Vaja uus projekt integreerida olemasolevasse CI-sse. Rööpad olid juba olemas ja kogu töö tuli teha konfiguratsioonihaldussĂŒsteemi parameetreid, aktsepteeritud tarnestandardeid ja seiresĂŒsteeme arvestades.

Toetamise ja kasutamise lihtsus, mis on kÔikide uute osalejate eri osakondadest ja tugiosakonnast minimaalse sisseastumislÀve tingimuseks.

TĂ€htaeg - eile.

VÔida arendusgrupp

Millega meeskond siis töötas? Windows?

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

NĂŒĂŒd vĂ”in seda julgelt vĂ€ita Identiteediserver4 on lahe tasuta alternatiiv sarnaste vĂ”imalustega ADFS-ile vĂ”i mis Olemi raamistiku tuum - arendaja paradiis, kus ei pea vaeva nĂ€gema SQL skriptide kirjutamisega, vaid kirjeldama andmebaasis olevaid pĂ€ringuid OOP terminites. Aga siis, tegevuskava arutamise ajal, vaatasin seda virna, nagu oleks see sumeri kiilkiri, tundes Ă€ra ainult PostgreSQL ja Git.

Sel ajal kasutasime aktiivselt Nukuteater konfiguratsioonihaldussĂŒsteemina. Enamikus oma projektides kasutasime GitLab CI, Elastne, tasakaalustatud suure koormusega teenuseid kasutades HAProxy jĂ€lgis kĂ”ike Zabbix, sidemed grafana Đž Prometheus, Jaeger, ja see kĂ”ik keerles rauatĂŒkkide peal HPESXi edasi VMware. KĂ”ik teavad seda – ĆŸanri klassika.

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

Vaatame ja proovime mÔista, mis toimus enne kÔigi nende sekkumiste alustamist.

Mis juhtus

TFS on ĂŒsna vĂ”imas sĂŒsteem, mis mitte ainult ei edasta koodi arendajalt lĂ”plikule tootmismasinale, vaid omab ka komplekti vĂ€ga paindlikuks integreerimiseks erinevate teenustega - CI pakkumiseks platvormidevahelisel tasemel.

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel
Varem olid need kĂ”ik aknad. TFS kasutas mitut ehitusagenti, mis ehitasid mitu projekti. Igal agendil oli 3-4 töötajat ĂŒlesannete paralleelseks ja protsessi optimeerimiseks. SeejĂ€rel, vastavalt vĂ€ljalaskeplaanidele, edastas TFS vĂ€rskelt kĂŒpsetatud ehituse... Windows- rakendusserver.

Mida me saavutada tahtsime?

Kasutame TFS-i nii tarnimiseks kui ka arenduseks ning kĂ€ivitame rakenduse Linux Rakendusserver ja nende vahel on mingi vĂ”lujĂ”ud. See Magic Box ja ees on töö sool. Enne lahti vĂ”tmist astun sammu kĂ”rvale ja rÀÀgin mĂ”ne sĂ”na rakenduse kohta.

Projekt

Rakendus pakub funktsioone ettemakstud kaartide kÀsitlemiseks.

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

klient

Kasutajaid oli kahte tĂŒĂŒpi. Esimene sai juurdepÀÀsu SSL SHA-2 sertifikaadiga sisse logides. U teine oli juurdepÀÀs sisselogimise ja parooliga.

HAProxy

SeejÀrel lÀks kliendi taotlus HAProxy-le, mis lahendas jÀrgmised probleemid:

  • esmane luba;
  • SSL-i lĂ”petamine;
  • HTTP pĂ€ringute hÀÀlestamine;
  • saatetaotlused.

Kliendi sertifikaati kontrolliti kogu ahela ulatuses. Meie - asutus ja me saame seda endale lubada, kuna me ise vÀljastame teenindusklientidele sertifikaate.

Pöörake tÀhelepanu kolmandale punktile, selle juurde naaseme veidi hiljem.

Taustaprogramm

Tagaosa oli plaanis teha LinuxTagaserver suhtleb andmebaasiga, laadib vajaliku Ă”iguste loendi ja seejĂ€rel, olenevalt volitatud kasutaja Ă”igustest, annab juurdepÀÀsu finantsdokumentide allkirjastamiseks ja tĂ€itmiseks saatmiseks vĂ”i aruande genereerimiseks.

SÀÀstud HAProxyga

Lisaks kahele kontekstile, milles iga klient navigeeris, oli olemas ka identiteedikontekst. Identiteediserver4 vĂ”imaldab lihtsalt sisse logida, see on tasuta ja vĂ”imas analoog ADFS - Active Directory föderatsiooni teenused.

Identiteeditaotlust töödeldi mitmes etapis. Esimene samm - klient sattus tagaprogrammi, mis suhtles selle serveriga ja kontrollis kliendi tokeni olemasolu. Kui seda ei leitud, tagastati pĂ€ring tagasi konteksti, kust see pĂ€rines, kuid ĂŒmbersuunamisega ja koos ĂŒmbersuunamisega lĂ€ks see identiteedile.

Teine samm – taotlus vĂ”eti vastu IdentityServeri autoriseerimislehele, kuhu klient registreerus, ja see kauaoodatud mĂ€rk ilmus IdentityServeri andmebaasi.

Kolmas samm - klient suunati tagasi konteksti, kust see tuli.

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

IdentityServer4-l on funktsioon: see tagastab vastuse tagastamistaotlusele HTTP kaudu. ÜkskĂ”ik kui palju me serveri seadistamisega vaeva nĂ€gime, kui palju me end dokumentatsiooniga valgustasime, saime iga kord esialgse kliendipĂ€ringu URL-iga, mis tuli HTTPS-i kaudu ja IdentityServer tagastas sama konteksti, kuid HTTP-ga. Olime ĆĄokeeritud! Ja me kandsime selle kĂ”ik lĂ€bi identiteedikonteksti HAProxy-sse ja pĂ€istes pidime muutma HTTP-protokolli HTTPS-iks.

Mis on paranemine ja kust sÀÀstsite?

SÀÀstsime raha, kasutades tasuta lahendust kasutajate grupi, ressursside autoriseerimiseks, kuna me ei paigutanud IdentityServer4 eraldiseisvasse segmenti eraldi sÔlmena, vaid kasutasime seda koos taustaprogrammiga samas serveris, kus rakenduse taustaprogramm töötab. .

Kuidas see peaks toimima

Niisiis, nagu ma lubasin – Magic Box. Me juba mĂ”istame, et liigume kindlasti selles suunas LinuxSĂ”nastagem konkreetsed ĂŒlesanded, mis vajasid lahendamist.

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

Nuku manifest. Teenuste ja rakenduste konfiguratsiooni tarnimiseks ja haldamiseks tuli kirjutada lahedaid retsepte. Pliiatsirull nÀitab kÔnekalt, kui kiiresti ja tÔhusalt see tehtud sai.

Kohaletoimetamise viis. Standard on RPM. KĂ”ik saavad sellest aru. Linux Sellest polnud muud ĂŒle, aga projekt ise oli pĂ€rast ehitamist kĂ€ivitatavate DLL-failide kogum. Neid oli umbes 150, mis tegi projekti ĂŒsna mahukaks. Ainus jĂ€tkusuutlik lahendus oli pakkida need binaarfailid RPM-i ja rakendus sealt juurutada.

Versioonide koostamine. Me kavatsesime vĂ€ga tihti vĂ€lja anda ja pidime otsustama, kuidas paketi nime moodustada. See oli TFS-iga integratsiooni taseme kĂŒsimus. Meil ​​oli peal ehitusagent LinuxKui TFS saadab Build agendi töötajale ĂŒlesande, edastab see talle ka hulga muutujaid, mis on salvestatud töötaja keskkonda. Need keskkonnamuutujad sisaldavad jĂ€rgu nime, versiooni nime ja muid muutujaid. Lisateavet leiate jaotisest "RPM-paketi loomine".

TFS-i seadistamine KĂ”ik taandus torujuhtme rajamisele. Varem ehitasime edasi Windows- kĂ”ik agendid Windows-projektid ja nĂŒĂŒd paistab see vĂ€lja Linux-agent — ehitusagent, mis tuleb lisada ehitusgruppi, rikastada mĂ”ne artefaktiga, mÀÀrata, millist tĂŒĂŒpi projekte sellele ehitusagendile ehitatakse, ja muuta mingil moel torujuhet.

Identiteediserver. ADFS ei ole meie tee, me kasutame avatud lÀhtekoodi.

Vaatame komponente lÀbi.

Magic Box

Koosneb neljast osast.

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

Linux Ehitusagent. Linux, sest me kompileerime selle jaoks – see on loogiline. See osa valmis kolmes etapis.

  • Konfigureerige töötajaid ja mitte ĂŒksi, sest projektiga loodeti jagada tööd.
  • Installige .NET Core 1.x. Miks 1.x, kui 2.0 on standardhoidlas juba saadaval? Sest kui arendamisega alustasime, oli stabiilne versioon 1.09 ja selle pĂ”hjal otsustatigi projekt teha.
  • Git 2.x.

RPM-hoidla. RPM-paketid pidid kuskil olema. Me pidime kasutama sama ettevÔtte RPM-hoidlat, mis oli kÔigile ligipÀÀsetav. Linux hostid. Seda me tegimegi. Hoidla server on konfigureeritud veebikonks mis laadis mÀÀratud asukohast alla vajaliku RPM-paketi. Paketi versioonist teatas veebihaagile ehitusagent.

GitLab. Pane tÀhele: GitLabi ei kasuta siin arendajad, vaid operatsioonide osakond rakenduste versioonide, pakettide versioonide ja kÔigi oleku haldamiseks. Linux-masinad ja see salvestab retsepti - kÔik nukute manifestid.

Nukuteater â€” lahendab kĂ”ik vastuolulised probleemid ja pakub Gitlabilt tĂ€pselt sellise konfiguratsiooni, mida me tahame.

Hakkame sukelduma. Kuidas DLL-i edastamine RPM-ile töötab?

Tarne DDL kuni RPM

Oletame, et meil on .NET-i arenduse rokkstaar. See kasutab Visual Studio ja loob vĂ€ljalaskeharu. PĂ€rast seda laadib see selle Giti ĂŒles ja Git on siin TFS-ĂŒksus, st see on rakenduste hoidla, millega arendaja töötab.

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

PÀrast seda nÀeb TFS, et uus commit on saabunud. Milline rakendus? TFS-i sÀtted nÀitavad, millised ressursid igal ehitusagendil on. Sel juhul nÀeb see, et me ehitame .NET Core'i projekti ja valib Linux Loo agent basseinist.

Ehitusagent saab allikad ja laadib need alla sÔltuvused .NET-i hoidlast, npm-st jne. ja pÀrast rakenduse enda koostamist ja sellele jÀrgnevat pakkimist saadab RPM-i paketi RPM-i hoidlasse.

Teisest kĂŒljest juhtub jĂ€rgmine. Operatsiooniosakonna insener on projekti juurutamisega otseselt seotud: ta muudab sisse pakettide versioone Hiera hoidlas, kus on salvestatud rakenduse retsept, mille jĂ€rel vallandub Nukk Yum, toob hoidlast uue paketi ja rakenduse uus versioon on kasutamiseks valmis.

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

SÔnades on kÔik lihtne, aga mis toimub Buildi agendi enda sees?

Pakkimine DLL RPM

Sai projekti allikad ja ehitusĂŒlesande TFS-ist. Ehitusagent hakkab projekti ise allikatest ĂŒles ehitama. Kokkupandud projekt on saadaval komplektina DLL-failid, mis on failisĂŒsteemi koormuse vĂ€hendamiseks pakitud ZIP-arhiivi.

ZIP-arhiiv visatakse minema RPM-paketi ehituskataloogi. JĂ€rgmisena lĂ€htestab Bashi skript keskkonnamuutujad, otsib ĂŒlesehituse versiooni, projekti versiooni, tee ehituskataloogi ja kĂ€ivitab RPM-ehituse. Kui ehitamine on lĂ”petatud, avaldatakse pakett aadressil kohalik hoidla, mis asub ehitusagendil.

JÀrgmiseks ehitusagendilt serverisse RPM-i hoidlas JSON-i pÀring on saadetud mÀrkides versiooni ja jÀrgu nime. Webhook, millest ma varem rÀÀkisin, laadib just selle paketi Build agendi kohalikust hoidlast alla ja teeb uue koostu installimiseks kÀttesaadavaks.

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

Miks RPM-repositooriumi jaoks just see konkreetne edastusskeem? Miks ei saa loodud paketti kohe repositooriumisse saata? See on turvanĂ”ue. See stsenaarium piirab vĂ”imalust, et volitamata isikud laadivad RPM-pakette ĂŒles avalikult ligipÀÀsetavale serverile. Linux-autod.

Andmebaasi versioonide loomine

Arenduskonsultatsioonil selgus, et tĂŒĂŒbid on MS SQL-ile lĂ€hemal, aga enamasti mitte-Windows Kasutasime PostgreSQL-i juba ulatuslikult mitme projekti jaoks. Kuna olime juba otsustanud tasulisest tarkvarast loobuda, hakkasime ka siin PostgreSQL-i kasutama.

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

Selles osas tahan teile rÀÀkida, kuidas me andmebaasi versiooni tegime ja kuidas valisime Flyway ja Entity Framework Core'i vahel. Vaatame nende plusse ja miinuseid.

Miinused

Flyway lĂ€heb ainult ĂŒhte suunda, meie me ei saa tagasi pöörata â€” see on mĂ€rkimisvÀÀrne puudus. Seda saab Entity Framework Core'iga vĂ”rrelda ka muul viisil – arendaja mugavuse seisukohast. MĂ€letate, et seadsime selle esmatĂ€htsaks ja peamine kriteerium oli mitte midagi muuta Windows-arengud.

Meie jaoks Flyway mingit ĂŒmbrist oli vajaet poisid ei kirjutaks SQL pĂ€ringud. Nad on OOP-i mĂ”istes tegutsemisele palju lĂ€hemal. Kirjutasime juhised andmebaasiobjektidega töötamiseks, genereerisime SQL-pĂ€ringu ja kĂ€ivitasime selle. Andmebaasi uus versioon on valmis, testitud - kĂ”ik on korras, kĂ”ik töötab.

Entity Framework Core'il on miinus – suure koormuse korral see loob suboptimaalseid SQL pĂ€ringuid, ja andmebaasi vĂ€henemine vĂ”ib olla mĂ€rkimisvÀÀrne. Aga kuna meil pole suure koormusega teenust, siis me ei arvuta koormust sadades RPS-ides, vĂ”tsime need riskid vastu ja delegeerisime probleemi enda kanda.

Plusse

Olemi raamistiku tuum töötab karbist vÀlja ja seda on lihtne arendadaja Flyway Lihtne integreerida olemasolevasse CI-sse. Aga teeme selle arendajatele mugavaks :)

Roll-up protseduur

Puppet nĂ€eb, et tulemas on muudatus paketi versioonis, sealhulgas selles, mis vastutab migratsiooni eest. Esiteks installib see paketi, mis sisaldab migratsiooniskripte ja andmebaasiga seotud funktsioone. PĂ€rast seda taaskĂ€ivitatakse andmebaasiga töötav rakendus. JĂ€rgmine on ĂŒlejÀÀnud komponentide paigaldamine. Pakettide installimise ja rakenduste kĂ€ivitamise jĂ€rjekorda kirjeldatakse Puppeti manifestis.

Rakendused kasutavad tundlikke andmeid, nagu mĂ€rgid, andmebaasi paroolid, kĂ”ik see tĂ”mmatakse Puppet masterist konfiguratsiooni, kus need salvestatakse krĂŒpteeritud kujul.

TFS-i probleemid

PĂ€rast seda, kui olime otsustanud ja mĂ”istnud, et meie jaoks kĂ”ik tĂ”esti töötab, otsustasin vaadata, mis toimub Win arendusosakonna TFS-i koostudega tervikuna teiste projektide puhul – kas ehitasime/vĂ€ljastame kiiresti vĂ”i mitte, ja avastas olulisi probleeme kiirusega.

Ühe pĂ”hiprojekti kokkupanekuks kulub 12-15 minutit – see on pikk aeg, nii ei saa elada. Kiire analĂŒĂŒs nĂ€itas sisend-vĂ€ljundis kohutavat tĂ”rget ja see oli massiividel.

PĂ€rast selle komponentide kaupa analĂŒĂŒsimist tuvastasin kolm koldet. Esiteks - "Kaspersky viirusetĂ”rje", mis kehtib kĂ”igile Windows Ehitusagendid skannivad lĂ€htekoodi. Teine on Windows Indekseerija. Seda ei keelatud ja kĂ”ik indekseeriti juurutusprotsessi ajal ehitusagentides reaalajas.

Kolmas - Npm installimine. Selgus, et enamiku torujuhtmete puhul kasutasime tĂ€pselt seda stsenaariumi. Miks ta halb on? Npm installiprotseduur kĂ€ivitatakse, kui sĂ”ltuvuspuu moodustatakse pakett-lukk.json, kus salvestatakse projekti koostamiseks kasutatavate pakettide versioonid. Negatiivne kĂŒlg on see, et Npm install tĂ”mbab iga kord Internetist uusimad pakettide versioonid ja see vĂ”tab suure projekti puhul palju aega.

Arendajad katsetavad mĂ”nikord kohaliku masinaga, et testida, kuidas konkreetne osa vĂ”i kogu projekt töötab. MĂ”nikord selgus, et kohapeal oli kĂ”ik lahe, aga panid kokku, rullisid lahti ja miski ei töötanud. Hakkame aru saama, milles probleem on – jah, erinevad sĂ”ltuvustega pakettide versioonid.

otsus

  • Allikad AV erandites.
  • Keela indekseerimine.
  • Üleminek npm ci.

Npm ci eelised seisnevad selles, et meie Kogume sĂ”ltuvuspuu ĂŒks kordja saame vĂ”imaluse pakkuda arendajale praegune pakettide nimekiri, millega ta saab kohapeal katsetada nii palju kui tahab. See sÀÀstab aega arendajad, kes kirjutavad koodi.

Konfiguratsioon

NĂŒĂŒd natuke hoidla konfiguratsioonist. Ajalooliselt kasutame Nexus hoidlate haldamiseks, sealhulgas Sisemine REPO. See sisemine repositoorium sisaldab kĂ”iki komponente, mida kasutame sisemistel eesmĂ€rkidel, nĂ€iteks enda kirjutatud jĂ€lgimiseks.

.NET Core on sisse lĂŒlitatud LinuxDevOps on tĂ”usuteel

Kasutame ka NuGet, kuna sellel on teiste paketihalduritega vÔrreldes parem vahemÀlu.

Tulemus

PÀrast ehitusagentide optimeerimist vÀhenes keskmine ehitusaeg 12 minutilt 7-le.

Kui loeme kokku kĂ”ik masinad, mida saaksime kasutada Windows, aga tĂ”lgituna keelde Linux Selle projektiga sÀÀstsime umbes 10 000 dollarit. Ja see on ainult litsentside pealt; kui arvestada ka sisu, on see veelgi suurem.

Plaanid

JÀrgmises kvartalis plaanisime töötada koodi edastamise optimeerimisega.

LĂŒlitumine eelkoostatud Dockeri pildile. TFS on lahe asi paljude pistikprogrammidega, mis vĂ”imaldavad teil Pipeline'i integreerida, sealhulgas nĂ€iteks Dockeri kujutise pÀÀstikupĂ”hine kokkupanek. Tahame selle kĂ€ivitada samale pakett-lukk.json. Kui projekti koostamiseks kasutatud komponentide koostis kuidagi muutub, ehitame uue Dockeri pildi. Seda kasutatakse hiljem konteineri juurutamiseks koos kokkupandud rakendusega. Praegu see nii ei ole, kuid meie ettevĂ”ttes aktiivselt arenevas ja juba pikemat aega tootmislahendusi teenindavas Kubernetes plaanime ĂŒle minna mikroteenuste arhitektuurile.

KokkuvÔte

Ma kutsun kĂ”iki ĂŒles see minema viskama Windows, aga see pole sellepĂ€rast, et ma ei teaks, kuidas seda valmistada. PĂ”hjus on selles, et enamik avatud lĂ€htekoodiga lahendusi on Linux-virn. kas sul on kĂ”ik korras sÀÀsta ressursseMinu arvates on tulevik avatud lĂ€htekoodiga lahenduste pĂ€ralt. Linux vĂ”imsa kogukonnaga.

Aleksandr Sintƥinovi kÔneleja profiil GitHubis.

DevOps Conf on konverents arendus-, testimis- ja tööprotsesside integreerimisest professionaalidele professionaalide poolt. SellepĂ€rast see projekt, millest Aleksander rÀÀkis? rakendatud ja töökorras ning esinemispĂ€eval ilmus kaks edukat vĂ€ljaannet. Peal DevOps Conf aadressil RIT++ 27. ja 28. mail on sarnaseid juhtumeid praktikutelt veelgi rohkem. Viimasesse vankrisse saab veel hĂŒpata ja esitada aruanne vĂ”i vĂ”ta aega broneerima pilet. Kohtume Skolkovos!

Allikas: www.habr.com

Ostke DDoS-kaitsega saitide jaoks usaldusvÀÀrne hostimine, VPS VDS-serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster