.NET Core sa Linux, DevOps sa kabayo

Gipalambo namo ang DevOps kutob sa among mahimo. Adunay 8 kanamo, ug si Vasya ang labing cool sa Windows. Sa kalit si Vasya mibiya, ug ako adunay buluhaton sa paglansad sa usa ka bag-ong proyekto nga gihatag sa pagpalambo sa Windows. Sa diha nga akong gilabay ang tibuok Windows development stack sa lamesa, akong naamgohan nga ang sitwasyon usa ka kasakit ...

Ingon niini nagsugod ang istorya Alexandra Sinchinova sa DevOpsConf. Sa diha nga ang nag-unang Windows nga espesyalista mibiya sa kompanya, Alexander naghunahuna unsa ang buhaton karon. Pagbalhin sa Linux, siyempre! Isulti kanimo ni Alexander kung giunsa niya paghimo ang usa ka pasiuna ug pagbalhin bahin sa pag-uswag sa Windows sa Linux gamit ang panig-ingnan sa usa ka nahuman nga proyekto alang sa 100 nga mga tiggamit sa katapusan.

.NET Core sa Linux, DevOps sa kabayo

Sa unsa nga paagi sa dali ug walay kahago sa paghatod sa usa ka proyekto ngadto sa RPM gamit ang TFS, Puppet, Linux .NET core? Giunsa pagsuporta ang pag-bersyon sa usa ka database sa proyekto kung ang grupo sa pagpauswag makadungog sa mga pulong nga Postgres ug Flyway sa unang higayon, ug ang deadline mao ang pagkaugma? Giunsa ang pag-integrate sa Docker? Giunsa ang pagdasig sa mga .NET developers nga biyaan ang Windows ug smoothies pabor sa Puppet ug Linux? Giunsa pagsulbad ang mga panagbangi sa ideolohiya kung wala’y kusog, o tinguha, o mga kahinguhaan aron mapadayon ang Windows sa produksiyon? Mahitungod niini, maingon man mahitungod sa Web Deploy, testing, CI, mahitungod sa mga gawi sa paggamit sa TFS sa kasamtangan nga mga proyekto, ug, siyempre, mahitungod sa nabuak nga crutches ug mga solusyon sa pagtrabaho, sa transcript sa report ni Alexander.


Busa, mibiya si Vasya, ang buluhaton anaa kanako, ang mga developers naghulat nga walay pailub sa mga pitchforks. Sa dihang sa kataposan akong naamgohan nga si Vasya dili na mabalik, ako miadto sa negosyo. Sa pagsugod, akong gi-assess ang porsyento sa Win VMs sa among fleet. Ang iskor dili pabor sa Windows.

.NET Core sa Linux, DevOps sa kabayo

Tungod kay kami aktibo nga nagpalambo sa DevOps, akong naamgohan nga adunay kinahanglan nga usbon sa pamaagi sa paghatud sa usa ka bag-ong aplikasyon. Adunay usa ra ka solusyon - kung mahimo, ibalhin ang tanan sa Linux. Gitabangan ko sa Google - niadtong panahona ang .Net na-port na sa Linux, ug akong naamgohan nga kini ang solusyon!

Nganong .NET core inubanan sa Linux?

Adunay daghang mga hinungdan niini. Taliwala sa "pagbayad og kwarta" ug "dili pagbayad", ang kadaghanan mopili sa ikaduha - sama kanako. Ang usa ka lisensya alang sa MSDB nagkantidad ug mga $1; ang pagmintinar sa usa ka panon sa mga Windows virtual machine nagkantidad ug gatosan ka dolyares. Alang sa usa ka dako nga kompanya kini usa ka dako nga gasto. Mao nga pagtipig - unang rason. Dili ang labing hinungdanon, apan usa sa mga hinungdanon.

Ang mga virtual machine sa Windows naggamit ug daghang mga kapanguhaan kaysa sa ilang mga igsoon sa Linux - bug-at sila. Tungod sa gidak-on sa dako nga kompanya, among gipili ang Linux.

Ang sistema yano nga gisagol sa kasamtangan nga CI. Giisip namo ang among kaugalingon nga mga progresibong DevOps, among gigamit ang Bamboo, Jenkins ug GitLab CI, mao nga kadaghanan sa among trabaho nagdagan sa Linux.

Ang kataposang rason kay kombenyente nga duyog. Kinahanglan namon nga ipaubos ang babag sa pagsulod alang sa "mga escort" - ang mga lalaki nga nakasabut sa teknikal nga bahin, pagsiguro nga wala’y hunong nga serbisyo, ug pagpadayon sa mga serbisyo gikan sa ikaduhang linya. Pamilyar na sila sa Linux stack, mao nga mas sayon ​​alang kanila ang pagsabot, pagsuporta ug pagmentinar sa bag-ong produkto kay sa paggasto og dugang nga mga kahinguhaan aron masabtan ang parehas nga gamit sa software para sa Windows platform.

mga kinahanglanon

Una sa tanan - kasayon ​​sa bag-ong solusyon alang sa mga developers. Dili tanan kanila andam alang sa pagbag-o, labi na pagkahuman sa pulong nga Linux gisulti. Gusto sa mga developer ang ilang paborito nga Visual Studio, TFS nga adunay mga autotest para sa mga asembliya ug smoothies. Kung giunsa ang pagpadala sa produksiyon dili hinungdanon alang kanila. Busa, nakahukom kami nga dili usbon ang naandan nga proseso ug ibilin ang tanan nga wala mausab alang sa pag-uswag sa Windows.

Bag-ong proyekto gikinahanglan i-integrate sa kasamtangan nga CI. Ang mga riles naa na didto ug ang tanan nga trabaho kinahanglan buhaton nga gikonsiderar ang mga parameter sa sistema sa pagdumala sa pagsumpo, gidawat nga mga sumbanan sa pagpadala ug mga sistema sa pag-monitor.

Kasayon ​​sa suporta ug operasyon, isip kondisyon para sa minimum nga entry threshold para sa tanang bag-ong partisipante gikan sa lain-laing dibisyon ug sa support department.

Deadline - kagahapon.

Win Development Group

Unsa man ang nagtrabaho sa Windows team kaniadto?

.NET Core sa Linux, DevOps sa kabayo

Karon ako masaligon nga makasulti niana IdentityServer4 usa ka cool nga libre nga alternatibo sa ADFS nga adunay parehas nga kapabilidad, o unsa Entity Framework Core - usa ka paraiso alang sa usa ka developer, diin dili ka kinahanglan nga maghago sa pagsulat sa mga script sa SQL, apan ihulagway ang mga pangutana sa database sa mga termino sa OOP. Apan unya, sa panahon sa paghisgot sa plano sa aksyon, akong gitan-aw kini nga stack nga daw Sumerian cuneiform, nga nakaila lamang sa PostgreSQL ug Git.

Niadtong panahona kami aktibo nga naggamit Mga manunugtog isip usa ka sistema sa pagdumala sa configuration. Sa kadaghanan sa among mga proyekto among gigamit GitLab CI, pagkamaunat-unat, balanse nga high-load nga mga serbisyo gamit HAProxy gimonitor ang tanan nga adunay Zabbix, ligaments grafana ΠΈ Prometheus, Manguha, ug kining tanan nagtuyok sa mga pirasong puthaw HPESXi sa VMware. Ang tanan nahibalo niini - usa ka classic sa genre.

.NET Core sa Linux, DevOps sa kabayo

Atong tan-awon ug sulayan nga masabtan kung unsa ang nahitabo sa wala pa naton sugdan ang tanan nga mga interbensyon.

Unsay nahitabo

Ang TFS usa ka medyo kusgan nga sistema nga dili lamang naghatud sa code gikan sa developer hangtod sa katapusan nga makina sa produksiyon, apan adunay usa usab ka set alang sa labi ka flexible nga panagsama sa lainlaing mga serbisyo - aron mahatagan ang CI sa lebel sa cross-platform.

.NET Core sa Linux, DevOps sa kabayo
Kaniadto, kini mga solidong bintana. Gigamit sa TFS ang daghang mga ahente sa Pagtukod, nga gigamit sa pagtipon sa daghang mga proyekto. Ang matag ahente adunay 3-4 nga mga trabahante aron iparehas ang mga buluhaton ug ma-optimize ang proseso. Dayon, sumala sa mga plano sa pagpagawas, ang TFS naghatud sa bag-ong luto nga Build sa Windows application server.

Unsa ang gusto natong makab-ot?

Gigamit namon ang TFS alang sa paghatud ug pag-uswag, ug gipadagan ang aplikasyon sa usa ka server sa Linux Application, ug adunay usa ka matang sa salamangka sa taliwala nila. Kini Magic Box ug adunay asin sa buluhaton sa unahan. Sa dili pa nako kini ibulag, mopalayo ko ug mosulti ug pipila ka pulong bahin sa aplikasyon.

Ang proyekto

Naghatag ang aplikasyon og gamit alang sa pagdumala sa mga prepaid card.

.NET Core sa Linux, DevOps sa kabayo

Kliyente

Adunay duha ka matang sa tiggamit. Ang una nakakuha og access pinaagi sa pag-log in gamit ang SSL SHA-2 nga sertipiko. U ang ikaduha naay access gamit ang login ug password.

HAProxy

Dayon ang hangyo sa kliyente miadto sa HAProxy, nga nakasulbad sa mosunod nga mga problema:

  • nag-unang pagtugot;
  • pagtapos sa SSL;
  • pag-tune sa mga hangyo sa HTTP;
  • mga hangyo sa pagsibya.

Ang sertipiko sa kliyente gipamatud-an sa kadena. Kami- awtoridad ug makaya namo kini, tungod kay kami mismo ang nag-isyu ug mga sertipiko sa pagserbisyo sa mga kliyente.

Hatagi'g pagtagad ang ikatulo nga punto, kita mobalik niini sa ulahi.

Backend

Nagplano sila nga himuon ang backend sa Linux. Ang backend nakig-uban sa database, nag-load sa gikinahanglan nga listahan sa mga pribilehiyo ug dayon, depende sa unsa nga mga pribilehiyo ang awtorisado nga tiggamit, naghatag og access sa pagpirma sa pinansyal nga mga dokumento ug ipadala kini alang sa pagpatuman, o paghimo og usa ka matang sa report.

Savings sa HAProxy

Gawas pa sa duha ka konteksto nga gi-navigate sa matag kliyente, adunay usa usab ka konteksto sa pagkatawo. IdentityServer4 nagtugot lang kanimo sa pag-log in, kini usa ka libre ug gamhanan nga analogue alang sa ADFS - Mga Serbisyo nga Aktibo nga Directory sa Federation.

Ang hangyo sa pag-ila giproseso sa daghang mga lakang. Unang lakang - kliyente nisulod sa backend, nga nakigkomunikar sa kini nga server ug nagsusi sa presensya sa usa ka timaan alang sa kliyente. Kung wala kini makit-an, ang hangyo ibalik sa konteksto diin kini gikan, apan adunay usa ka pag-redirect, ug uban ang pag-redirect kini napunta sa identidad.

Ikaduha nga lakang - ang hangyo nadawat sa panid sa pagtugot sa IdentityServer, diin ang kliyente nagparehistro, ug kanang dugay nang gipaabot nga timaan nagpakita sa database sa IdentityServer.

Ikatulong lakang - ang kliyente gi-redirect balik ngadto sa konteksto diin kini gikan.

.NET Core sa Linux, DevOps sa kabayo

Ang IdentityServer4 adunay bahin: gibalik niini ang tubag sa hangyo sa pagbalik pinaagi sa HTTP. Bisan unsa pa ka dako ang among pakigbisog sa pag-set up sa server, bisan unsa pa namo kalamdagan ang among kaugalingon sa dokumentasyon, matag higayon nga makadawat kami og inisyal nga hangyo sa kliyente nga adunay URL nga moabut pinaagi sa HTTPS, ug ang IdentityServer mibalik sa samang konteksto, apan sa HTTP. Nakurat mi! Ug gibalhin namo kining tanan pinaagi sa konteksto sa pagkatawo ngadto sa HAProxy, ug sa mga ulohan kinahanglan namong usbon ang HTTP protocol ngadto sa HTTPS.

Unsa ang kalamboan ug asa ka nakadaginot?

Nagtipig kami og kwarta pinaagi sa paggamit sa usa ka libre nga solusyon alang sa pagtugot sa usa ka grupo sa mga tiggamit, mga kahinguhaan, tungod kay wala namo ibutang ang IdentityServer4 isip usa ka bulag nga node sa usa ka bulag nga bahin, apan gigamit kini uban sa backend sa samang server diin ang backend sa aplikasyon midagan .

Sa unsang paagi kini molihok

Busa, ingon sa akong gisaad - Magic Box. Nakasabut na kami nga kami gigarantiyahan nga molihok padulong sa Linux. Maghimo kita og piho nga mga buluhaton nga nagkinahanglan og mga solusyon.

.NET Core sa Linux, DevOps sa kabayo

Puppet nga nagpakita. Aron sa paghatud ug pagdumala sa serbisyo ug pag-configure sa aplikasyon, kinahanglan nga isulat ang mga cool nga resipe. Ang usa ka rolyo sa lapis klarong nagpakita kung unsa ka paspas ug ka episyente kini nahimo.

Pamaagi sa paghatud. Ang standard mao ang RPM. Ang tanan nakasabut nga sa Linux dili nimo mahimo kung wala kini, apan ang proyekto mismo, pagkahuman sa asembliya, usa ka set sa mga executable nga DLL file. Adunay mga 150 kanila, ang proyekto medyo lisud. Ang bugtong harmonious nga solusyon mao ang pag-package niini nga binary ngadto sa RPM ug i-deploy ang aplikasyon gikan niini.

Pag-bersyon. Kinahanglan namon nga buhian kanunay, ug kinahanglan namon nga magdesisyon kung unsaon paghimo ang ngalan sa package. Kini usa ka pangutana sa lebel sa panagsama sa TFS. Kami adunay usa ka ahente sa pagtukod sa Linux. Kung ang TFS nagpadala usa ka buluhaton sa usa ka handler - trabahante - sa ahente sa Pagtukod, gipasa usab niini ang usa ka hugpong sa mga variable nga natapos sa palibot sa proseso sa handler. Kini nga mga variable sa palibot adunay ngalan sa Pagtukod, ngalan sa bersyon, ug uban pang mga variable. Basaha ang dugang bahin niini sa seksyon nga "Pagtukod usa ka RPM nga pakete".

Pag-set up sa TFS mianhi sa pag-set up sa Pipeline. Kaniadto, among gikolekta ang tanan nga mga proyekto sa Windows sa mga ahente sa Windows, apan karon usa ka ahente sa Linux ang nagpakita - usa ka ahente sa Pagtukod, nga kinahanglan ilakip sa grupo sa pagtukod, gipadato sa pipila ka mga artifact, ug gisultihan kung unsang klase sa mga proyekto ang pagatukoron sa kini nga ahente sa Pagtukod. , ug sa usa ka paagi usbon ang Pipeline.

IdentityServer. Ang ADFS dili among paagi, moadto kami sa Open Source.

Atong susihon ang mga sangkap.

Magic Box

Бостоит ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… частСй.

.NET Core sa Linux, DevOps sa kabayo

ahente sa Pagtukod sa Linux. Linux, tungod kay nagtukod kami alang niini - makatarunganon kini. Kini nga bahin gihimo sa tulo ka mga lakang.

  • I-configure ang mga trabahante ug dili mag-inusara, tungod kay gipaabot ang pag-apod-apod sa trabaho sa proyekto.
  • I-install ang .NET Core 1.x. Ngano nga ang 1.x kung ang 2.0 anaa na sa standard repository? Tungod kay sa dihang nagsugod kami sa pag-uswag, ang stable nga bersyon mao ang 1.09, ug kini nakahukom sa paghimo sa proyekto base niini.
  • Git 2.x.

RPM-repository. Ang mga pakete sa RPM kinahanglan nga tipigan bisan asa. Gituohan nga gamiton namon ang parehas nga corporate RPM repository nga magamit sa tanan nga mga host sa Linux. Mao na ilang gibuhat. Ang repository server gi-configure web hook nga nag-download sa gikinahanglan nga RPM nga pakete gikan sa piho nga lokasyon. Ang bersyon sa pakete gitaho sa webhook sa ahente sa Pagtukod.

GitLab. Atensyon! Ang GitLab dinhi gigamit dili sa mga nag-develop, apan sa departamento sa operasyon aron makontrol ang mga bersyon sa aplikasyon, mga bersyon sa pakete, pag-monitor sa kahimtang sa tanan nga mga makina sa Linux, ug gitipigan niini ang resipe - tanan nga gipakita sa Puppet.

Mga manunugtog β€” nagsulbad sa tanan nga kontrobersyal nga mga isyu ug naghatud sa eksakto nga pagsumpo nga gusto namon gikan sa Gitlab.

Nagsugod kami sa pag-dive. Giunsa ang paghatud sa DLL sa RPM molihok?

Paghatud sa DDL sa RPM

Ingnon ta nga naa tay .NET development rockstar. Gigamit niini ang Visual Studio ug nagmugna og usa ka sanga sa pagpagawas. Pagkahuman niana, gi-upload kini sa Git, ug ang Git dinhi usa ka entidad sa TFS, nga mao, kini ang repositoryo sa aplikasyon diin nagtrabaho ang developer.

.NET Core sa Linux, DevOps sa kabayo

Pagkahuman nakita sa TFS nga usa ka bag-ong pasalig ang miabot. Unsa nga app? Sa mga setting sa TFS adunay usa ka label nga nagpakita kung unsang mga kapanguhaan ang naa sa usa ka partikular nga ahente sa Pagtukod. Sa kini nga kaso, nakita niya nga nagtukod kami usa ka proyekto sa .NET Core ug nagpili usa ka ahente sa Pagtukod sa Linux gikan sa pool.

Ang ahente sa Pagtukod nakadawat sa mga gigikanan ug nag-download sa kinahanglan dependensya gikan sa .NET repository, npm, etc. ug human sa pagtukod sa aplikasyon sa iyang kaugalingon ug sa sunod nga packaging, ipadala ang RPM package ngadto sa RPM repository.

Sa laing bahin, mahitabo ang mosunod. Ang inhenyero sa departamento sa operasyon direktang nalangkit sa paglusad sa proyekto: giusab niya ang mga bersyon sa mga pakete sa Hiera sa repository diin gitipigan ang resipe sa aplikasyon, pagkahuman niini ang Puppet mag-trigger Yum, nagkuha sa bag-ong pakete gikan sa repository, ug ang bag-ong bersyon sa aplikasyon andam nang gamiton.

.NET Core sa Linux, DevOps sa kabayo

Ang tanan yano sa mga pulong, apan unsa ang mahitabo sa sulod mismo sa Build agent?

Pagputos sa DLL RPM

Nakadawat mga tinubdan sa proyekto ug nagtukod og buluhaton gikan sa TFS. Pagtukod nga ahente nagsugod sa pagtukod sa proyekto sa iyang kaugalingon gikan sa mga tinubdan. Ang gitigum nga proyekto magamit isip usa ka set DLL nga mga file, nga giputos sa zip archive aron makunhuran ang load sa file system.

Ang ZIP archive gilabay ngadto sa RPM package build directory. Sunod, ang script sa Bash nag-initialize sa mga variable sa palibot, nakit-an ang bersyon sa Pagtukod, ang bersyon sa proyekto, ang agianan sa direktoryo sa pagtukod, ug gipadagan ang RPM-build. Kung kompleto na ang pagtukod, ang package i-publish sa lokal nga tipiganan, nga nahimutang sa Build agent.

Sunod, gikan sa Build agent ngadto sa server sa RPM repository Gipadala ang hangyo sa JSON nga nagpakita sa ngalan sa bersyon ug pagtukod. Ang Webhook, nga akong gihisgutan sa sayo pa, nag-download niini nga pakete gikan sa lokal nga repository sa Build agent ug naghimo sa bag-ong asembliya nga magamit alang sa pag-instalar.

.NET Core sa Linux, DevOps sa kabayo

Ngano nga kini nga partikular nga laraw sa pagpadala sa pakete sa RPM repository? Ngano nga dili nako mapadala dayon ang gitigum nga pakete sa repository? Ang kamatuoran mao nga kini usa ka kondisyon alang sa pagsiguro sa kaluwasan. Kini nga senaryo naglimite sa posibilidad sa dili awtorisado nga mga tawo nga mag-upload sa RPM nga mga pakete sa usa ka server nga ma-access sa tanang Linux machines.

Pag-bersyon sa database

Sa usa ka konsultasyon sa development team, nahimo nga ang mga lalaki mas duol sa MS SQL, apan sa kadaghanan sa mga proyekto nga dili Windows gigamit na namo ang PostgreSQL sa tanan nilang kusog. Tungod kay nakahukom na kami nga biyaan ang tanan nga gibayad, nagsugod kami sa paggamit sa PostgreSQL dinhi usab.

.NET Core sa Linux, DevOps sa kabayo

Niini nga bahin gusto nakong isulti kanimo kung giunsa namo pag-bersiyon ang database ug giunsa namo pagpili tali sa Flyway ug Entity Framework Core. Atong tan-awon ang ilang mga bentaha ug disbentaha.

ΠœΠΈΠ½ΡƒΡΡ‹

Usa lang ka agianan ang flyway, kami dili ta makabalik - kini mao ang usa ka mahinungdanon nga disbentaha. Mahimo nimo kini itandi sa Entity Framework Core sa ubang mga paagi - sa termino sa kasayon ​​​​sa developer. Nahinumdom ka nga gibutang namon kini sa unahan, ug ang panguna nga sukaranan mao ang dili pagbag-o sa bisan unsang butang alang sa pag-uswag sa Windows.

Para sa Flyway namo usa ka matang sa wrapper ang gikinahanglanpara dili magsulat ang mga lalaki Mga pangutana sa SQL. Mas duol sila sa pag-operate sa mga termino sa OOP. Nagsulat kami og mga instruksyon alang sa pagtrabaho sa mga butang sa database, nakamugna og SQL query ug gipatuman kini. Ang bag-ong bersyon sa database andam na, gisulayan - ang tanan maayo, ang tanan nagtrabaho.

Ang Entity Framework Core adunay minus - ubos sa bug-at nga mga karga niini nagtukod og suboptimal nga mga pangutana sa SQL, ug ang drawdown sa database mahimong mahinungdanon. Apan tungod kay wala kami usa ka serbisyo nga adunay taas nga karga, wala namon gikalkula ang karga sa gatusan nga RPS, gidawat namon kini nga mga peligro ug gitugyan ang problema sa umaabot kanamo.

ΠŸΠ»ΡŽΡΡ‹

Entity Framework Core nagtrabaho sa gawas sa kahon ug dali nga maugmad, ug Flyway Dali nga ma-integrate sa kasamtangan nga CI. Apan gihimo namo kini nga sayon ​​​​alang sa mga developers :)

Roll-up nga pamaagi

Nakita sa puppet nga ang usa ka pagbag-o sa bersyon sa pakete moabut, lakip ang usa nga responsable sa paglalin. Una, nag-install kini usa ka pakete nga adunay mga script sa paglalin ug gamit nga may kalabotan sa database. Pagkahuman niini, ang aplikasyon nga nagtrabaho kauban ang database gi-restart. Sunod moabut ang pag-instalar sa nahabilin nga mga sangkap. Ang han-ay diin ang mga pakete gi-install ug ang mga aplikasyon gilunsad gihulagway sa Puppet manifest.

Ang mga aplikasyon naggamit ug sensitibo nga datos, sama sa mga token, database password, kining tanan gibira ngadto sa config gikan sa Puppet master, diin kini gitipigan sa encrypted nga porma.

Mga problema sa TFS

Human kami nakahukom ug nakaamgo nga ang tanan nagtrabaho gayud alang kanamo, nakahukom ko nga tan-awon kung unsa ang nahitabo sa mga asembliya sa TFS sa kinatibuk-an alang sa departamento sa pagpalambo sa Win sa ubang mga proyekto - kung nagtukod kami / nagpagawas dayon o dili, ug nakadiskobre ug mahinungdanong mga problema sa katulin.

Ang usa sa mga nag-unang proyekto nagkinahanglag 12-15 minuto aron ma-assemble - dugay kana, dili ka mabuhi nga ingon niana. Ang usa ka dali nga pagtuki nagpakita sa usa ka makalilisang nga drawdown sa I/O, ug kini anaa sa arrays.

Human sa pag-analisar niini nga component sa component, akong giila ang tulo ka foci. Una- "Kaspersky antivirus", nga nag-scan sa mga tinubdan sa tanang mga ahente sa Windows Build. Ikaduha - Windows Tig-indeks. Wala kini gi-disable, ug ang tanan na-index sa tinuud nga oras sa mga ahente sa Pagtukod sa panahon sa proseso sa pag-deploy.

Ikatulo - Pag-instalar sa Npm. Kini nahimo nga sa kadaghanan sa mga Pipeline gigamit namon kini nga eksakto nga senaryo. Nganong daotan siya? Ang pamaagi sa pag-install sa Npm gipadagan kung naporma ang dependency tree package-lock.json, diin ang mga bersyon sa mga pakete nga gamiton sa pagtukod sa proyekto girekord. Ang downside mao nga ang pag-install sa Npm nagbira sa pinakabag-o nga mga bersyon sa mga pakete gikan sa Internet matag higayon, ug kini nagkinahanglan og daghang panahon sa kaso sa usa ka dako nga proyekto.

Ang mga developer usahay mag-eksperimento sa usa ka lokal nga makina aron sulayan kung giunsa ang usa ka partikular nga bahin o tibuuk nga proyekto molihok. Usahay kini nahimo nga ang tanan bugnaw sa lokal, apan ilang gitigum kini, gilukot kini, ug walay nahimo. Nagsugod kami nga mahibal-an kung unsa ang problema - oo, lainlaing mga bersyon sa mga pakete nga adunay mga dependency.

desisyon

  • Mga tinubdan sa mga eksepsiyon sa AV.
  • I-disable ang pag-indeks.
  • Adto sa npm ci.

Ang mga bentaha sa npm ci mao nga kita Gikolekta namo ang dependency tree kausa, ug makuha namo ang kahigayonan sa paghatag sa developer kasamtangan nga listahan sa mga pakete, diin mahimo siyang mag-eksperimento sa lokal kutob sa iyang gusto. Kini makadaginot sa panahon mga developer nga nagsulat og code.

Pagsalig

Karon usa ka gamay bahin sa pag-configure sa repository. Sa kasaysayan atong gigamit Nexus alang sa pagdumala sa mga repositoryo, lakip ang Internal nga REPO. Kini nga internal nga repository naglangkob sa tanan nga mga sangkap nga among gigamit alang sa internal nga katuyoan, pananglitan, pag-monitor sa kaugalingon nga gisulat.

.NET Core sa Linux, DevOps sa kabayo

Gigamit usab namo NuGet, tungod kay kini adunay mas maayo nga caching kumpara sa ubang mga managers sa package.

resulta

Pagkahuman namon nga na-optimize ang Mga Ahente sa Pagtukod, ang kasagaran nga oras sa pagtukod gipamubu gikan sa 12 minuto hangtod 7.

Kung atong ihap ang tanan nga mga makina nga magamit unta namo alang sa Windows, apan mibalhin sa Linux niini nga proyekto, nakadaginot kami ug mga $10. Ug kana lang sa mga lisensya, ug labaw pa kon atong tagdon ang sulod.

Mga plano

Alang sa sunod nga quarter, nagplano kami nga magtrabaho sa pag-optimize sa paghatud sa code.

Pagbalhin sa usa ka prebuild nga imahe sa Docker. Ang TFS usa ka cool nga butang nga adunay daghang mga plugins nga nagtugot kanimo sa pag-integrate sa Pipeline, lakip ang trigger-based nga asembliya sa, ingon, usa ka imahe sa Docker. Gusto namon nga himuon kini nga gatilyo alang sa parehas nga usa package-lock.json. Kung ang komposisyon sa mga sangkap nga gigamit sa pagtukod sa proyekto sa usa ka paagi mabag-o, nagtukod kami usa ka bag-ong imahe sa Docker. Kini sa ulahi gigamit sa pag-deploy sa sudlanan uban sa gitigum nga aplikasyon. Dili kini ang kahimtang karon, apan nagplano kami nga mobalhin sa usa ka arkitektura sa microservice sa Kubernetes, nga aktibo nga nag-uswag sa among kompanya ug nagserbisyo sa mga solusyon sa produksiyon sa dugay nga panahon.

Sumaryo

Giawhag nako ang tanan nga ilabay ang Windows, apan dili tungod kay dili ko kahibalo magluto niini. Ang hinungdan mao nga kadaghanan sa mga solusyon sa Opensource Linux stack. okay ra ka makadaginot sa mga kahinguhaan. Sa akong opinyon, ang umaabot iya sa mga solusyon sa Open Source sa Linux nga adunay kusgan nga komunidad.

Profile sa mamumulong ni Alexander Sinchinov sa GitHub.

Ang DevOps Conf mao ang usa ka komperensya sa integration sa kalamboan, pagsulay ug operasyon nga proseso alang sa mga propesyonal sa mga propesyonal. Mao nga ang proyekto nga gihisgutan ni Alexander? gipatuman ug nagtrabaho, ug sa adlaw sa pasundayag adunay duha ka malampuson nga pagpagawas. Sa DevOps Conf sa RIT++ Sa Mayo 27 ug 28 aduna pay mga susamang kaso gikan sa mga practitioner. Makaambak ka pa sa kataposang karwahe ug pagsumite ug report o paggahin sa imong panahon sa libro ticket. Pakigkita kanamo sa Skolkovo!

Source: www.habr.com

Idugang sa usa ka comment