{"id":87467,"date":"2020-07-08T13:42:11","date_gmt":"2020-07-08T11:42:11","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn"},"modified":"2020-07-08T13:42:11","modified_gmt":"2020-07-08T11:42:11","slug":"rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","status":"publish","type":"post","link":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","title":{"rendered":"S\u0101c\u0113ju rokasgr\u0101mata: veidojot DevOps cauru\u013cvadu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Ja esat jauns DevOps jom\u0101, apskatiet \u0161o rokasgr\u0101matu, kas pal\u012bdz\u0113s izveidot j\u016bsu pirmo piecu posmu cauruli.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"S\u0101c\u0113ju rokasgr\u0101mata: veidojot DevOps cauru\u013cvadu\" src=\"\/wp-content\/uploads\/2020\/07\/605ed7d81323d0b5e094f7f912f8c669.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>DevOps ir k\u013cuvis par standarta risin\u0101jumu, lai labotu l\u0113nus, izklied\u0113tus vai neefekt\u012bvus programmat\u016bras izstr\u0101des procesus. Probl\u0113ma ir t\u0101da, ka, ja esat jauns DevOps jom\u0101 un nezin\u0101t, no kurienes s\u0101kt, jums var tr\u016bkt izpratnes par \u0161iem pa\u0146\u0113mieniem. \u0160aj\u0101 rakst\u0101 tiks apspriesta DevOps caurules defin\u012bcija un sniegta rokasgr\u0101mata t\u0101s izveido\u0161anai piecos so\u013cos. Lai gan \u0161is m\u0101c\u012bbu l\u012bdzeklis nav izsme\u013co\u0161s, tam vajadz\u0113tu dot jums pamatu, lai uzs\u0101ktu savu ce\u013cu un papla\u0161in\u0101tu savas zin\u0101\u0161anas n\u0101kotn\u0113. S\u0101ksim ar v\u0113sturi.<\/p>\n<h3>Mana DevOps ce\u013cojums<\/h3>\n<p>\nAgr\u0101k es str\u0101d\u0101ju Citi Group m\u0101kon\u012b, izstr\u0101d\u0101jot Infrastructure-as-a-Service (IaaS) t\u012bmek\u013ca lietotni Citi m\u0101konis infrastrukt\u016bras p\u0101rvald\u012b\u0161anai, ta\u010du man vienm\u0113r bija interese par to, k\u0101 padar\u012bt att\u012bst\u012bbas procesu efekt\u012bv\u0101ku un ieviest pozit\u012bvas kult\u016bras izmai\u0146as izstr\u0101d\u0101t\u0101ju komand\u0101. Atbildi es atradu gr\u0101mat\u0101, kas tika ieteikta Gregam Lavenderam, Citi m\u0101kon\u012b arhitekt\u016bras un infrastrukt\u016bras tehniskajam direktoram. Gr\u0101mata sauc\u0101s \u201eFeniksa projekts\u201c (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/dp\/B078Y98RG8\/\">The Phoenix Project<\/a><\/noindex>), un taj\u0101 skaidro DevOps principus, un t\u0101 tiek las\u012bta k\u0101 rom\u0101ns.<\/p>\n<p>Gr\u0101matas aizmugur\u0113 redzamaj\u0101 tabul\u0101 ir par\u0101d\u012bts, cik bie\u017ei da\u017e\u0101das komp\u0101nijas izv\u0113r\u0161 savus sist\u0113mas izlaidumu vid\u0113:<\/p>\n<p>Amazon: 23 000 dien\u0101<br \/>\nGoogle: 5 500 dien\u0101<br \/>\nNetflix: 500 dien\u0101<br \/>\nFacebook: reizi dien\u0101<br \/>\nTwitter: 3 reizes ned\u0113\u013c\u0101<br \/>\nTipiska komp\u0101nija: reizi 9 m\u0113ne\u0161os<\/p>\n<p>K\u0101 visp\u0101r ir iesp\u0113jamas t\u0101das frekvences k\u0101 Amazon, Google un Netflix? Viss ir t\u0101d\u0113\u013c, ka \u0161\u012bs komp\u0101nijas ir izdom\u0101ju\u0161as, k\u0101 izveidot gandr\u012bz ide\u0101lu DevOps cauruli.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nM\u0113s bij\u0101m t\u0101lu no t\u0101, l\u012bdz ievie\u0161am DevOps Citi. Taj\u0101 laik\u0101 man\u0101 komand\u0101 bija da\u017e\u0101das vides, bet izsnieg\u0161ana izstr\u0101des server\u012b bija piln\u012bgi manu\u0101la. Visi izstr\u0101d\u0101t\u0101ji piek\u013cuva tikai vienam izstr\u0101des serverim, kas balst\u012bts uz IBM WebSphere Application Server Community Edition. Probl\u0113ma bija t\u0101da, ka serveris izsl\u0113dz\u0101s, kad vair\u0101ki lietot\u0101ji vienlaikus m\u0113\u0123in\u0101ja veikt izsnieg\u0161anu, t\u0101p\u0113c izstr\u0101d\u0101t\u0101jiem bija j\u0101zi\u0146o viens otram par saviem nodomiem, kas bija diezgan s\u0101p\u012bgi. Turkl\u0101t past\u0101v\u0113ja probl\u0113mas ar zemu l\u012bme\u0146a koda test\u0113\u0161anas segumu, apjom\u012bgajiem manu\u0101l\u0101s izsnieg\u0161anas procesiem un iesp\u0113ju izsekot koda izsnieg\u0161anai, kas saist\u012bta ar konkr\u0113tu uzdevumu vai lietot\u0101ja st\u0101stu.<\/p>\n<p>Es sapratu, ka j\u0101veic kaut kas, un atradu kol\u0113\u0123i- l\u012bdz\u012bgi dom\u0101jo\u0161u partneri. M\u0113s nol\u0113m\u0101m sadarboties, lai izveidotu pirmo DevOps konveijeru \u2013 vi\u0146\u0161 uzst\u0101d\u012bja virtu\u0101lo ma\u0161\u012bnu un Tomcat lietojumserveri, kam\u0113r es str\u0101d\u0101ju pie Jenkins, integr\u0113ju Atlassian Jira un BitBucket, k\u0101 ar\u012b str\u0101d\u0101ju pie koda test\u0113\u0161anas seguma. \u0160is s\u0101nu projekts bija \u013coti veiksm\u012bgs: m\u0113s gandr\u012bz piln\u012bb\u0101 automatiz\u0113j\u0101m daudzas darb\u012bbas, pan\u0101c\u0101m gandr\u012bz 100% m\u016bsu izstr\u0101des servera darb\u012bbu, nodro\u0161in\u0101j\u0101m izsekojam\u012bbu un uzlaboj\u0101m koda test\u0113\u0161anas segumu, k\u0101 ar\u012b pievienoj\u0101m iesp\u0113ju saist\u012bt zarus Git ar uzdevumiem Jira vai izsnieg\u0161anu. Liel\u0101k\u0101 da\u013ca r\u012bku, ko m\u0113s izmantoj\u0101m, veidojot m\u016bsu DevOps konveijeru, bija atv\u0113rta koda.<\/p>\n<p>Tagad es saprotu, cik vienk\u0101r\u0161s bija m\u016bsu DevOps konveijers: m\u0113s neizmantoj\u0101m papla\u0161in\u0101jumus, piem\u0113ram, Jenkins failus vai Ansible. Tom\u0113r \u0161is vienk\u0101r\u0161ais konveijers darboj\u0101s labi, iesp\u0113jams, pateicoties Pareto principam (paz\u012bstams ar\u012b k\u0101 80\/20 likums).<\/p>\n<h3>\u012ass ievads DevOps un CI\/CD konveijer\u0101<\/h3>\n<p>\nJa, ja jaut\u0101jat vair\u0101kiem cilv\u0113kiem: \u201eKas ir DevOps?\u201d, tad, visticam\u0101k, j\u016bs sa\u0146emsiet vair\u0101kas da\u017e\u0101das atbildes. DevOps, t\u0101pat k\u0101 Agile, ir att\u012bst\u012bjies, lai aptvertu daudz da\u017e\u0101du discipl\u012bnu, bet liel\u0101k\u0101 da\u013ca cilv\u0113ku piekrit\u012bs da\u017e\u0101m liet\u0101m: DevOps ir programmat\u016bras izstr\u0101des prakse vai programmat\u016bras izstr\u0101des cikls (SDLC), kura centr\u0101lais princips ir kult\u016bras mai\u0146a, kur\u0101 izstr\u0101d\u0101t\u0101ji un neizstr\u0101d\u0101t\u0101ji past\u0101v vid\u0113, kas:<\/p>\n<p>Automatiz\u0113 oper\u0101cijas, kuras iepriek\u0161 veica manu\u0101li; <br \/>\nKatrs dara to, kas vi\u0146am vislab\u0101k padodas;<br \/>\nIevie\u0161anas skaits noteikt\u0101 laika period\u0101 palielin\u0101s; caurlaidsp\u0113ja palielin\u0101s; <br \/>\nPalielin\u0101s izstr\u0101des elast\u012bba.<\/p>\n<p>Lai ar\u012b pareizo programmat\u016bras r\u012bku esam\u012bba ir ne tikai tas, kas nepiecie\u0161ams, lai izveidotu DevOps vidi, da\u017ei r\u012bki ir nepiecie\u0161ami. Galvenais r\u012bks ir nep\u0101rtraukta integr\u0101cija un nep\u0101rtraukta izvieto\u0161ana (CI\/CD). \u0160aj\u0101 konveijer\u012b vid\u0113m ir da\u017e\u0101das f\u0101zes (piem\u0113ram, DEV, INT, TST, QA, UAT, STG, PROD), daudzas oper\u0101cijas ir automatiz\u0113tas, un izstr\u0101d\u0101t\u0101ji var rakst\u012bt kvalitat\u012bvu kodu, pan\u0101kt izstr\u0101des elast\u012bbu un bie\u017e\u0101ku izvieto\u0161anu.<\/p>\n<p>\u0160aj\u0101 rakst\u0101 tiek aprakst\u012bts piecu posmu pieejas izveido\u0161anai DevOps konveijeram, k\u0101 par\u0101d\u012bts n\u0101kamaj\u0101 diagramm\u0101, izmantojot atv\u0113rt\u0101 koda r\u012bkus.<\/p>\n<h3>Posms 1: CI\/CD metodes<\/h3>\n<p>\nVispirms jums nepiecie\u0161ams r\u012bks CI\/CD. Jenkins, atv\u0113rt\u0101 koda r\u012bks, kas balst\u012bts uz Java un tiek izplat\u012bts saska\u0146\u0101 ar MIT licenci, ir tas instruments, kas populariz\u0113ja DevOps pieeju un k\u013cuvis par de facto standartu.<\/p>\n<p>T\u0101tad, kas ir Jenkins? Uzskatiet to par k\u0101du ma\u0123isku univers\u0101lu t\u0101lvad\u012bbas pulti, kas var run\u0101t ar da\u017e\u0101d\u0101m pakalpojumu un r\u012bku sist\u0113m\u0101m un organiz\u0113t t\u0101s. CI\/CD r\u012bks, piem\u0113ram, Jenkins, pats par sevi ir bezj\u0113dz\u012bgs, ta\u010du tas k\u013c\u016bst jaud\u012bg\u0101ks, kad tas pievienojas da\u017e\u0101diem r\u012bkiem un pakalpojumiem.<\/p>\n<p>Jenkins ir tikai viens no daudziem atv\u0113rt\u0101 koda CI\/CD r\u012bkiem, ko varat izmantot, lai izveidotu DevOps cauru\u013cu.<\/p>\n<p>Jenkins: Creative Commons un MIT<br \/>\nTravis CI: MIT<br \/>\nCruiseControl: BSD<br \/>\nBuildbot: GPL<br \/>\nApache Gump: Apache 2.0<br \/>\nCabie: GNU<\/p>\n<p>T\u0101 izskat\u0101s DevOps procesi ar CI\/CD r\u012bku:<\/p>\n<p><img decoding=\"async\" alt=\"S\u0101c\u0113ju rokasgr\u0101mata: veidojot DevOps cauru\u013cvadu\" src=\"\/wp-content\/uploads\/2020\/07\/e937f3da170b24c53cb5d67a67a365bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Jums ir CI\/CD r\u012bks, kas darbojas j\u016bsu lok\u0101laj\u0101 t\u012bkl\u0101, bet patlaban j\u016bs varat dar\u012bt maz. P\u0101riesim pie n\u0101kam\u0101 so\u013ca ce\u013cojum\u0101 DevOps pasaul\u0113.<\/p>\n<h3>2. solis: Koda versiju kontroles p\u0101rvald\u012bba<\/h3>\n<p>\nLab\u0101kais (un, iesp\u0113jams, visvienk\u0101r\u0161\u0101kais) veids, k\u0101 p\u0101rbaud\u012bt, vai j\u016bsu CI\/CD r\u012bks sp\u0113j rad\u012bt ma\u0123iju \u2013 integr\u0113ties ar versiju kontroles r\u012bku (SCM). K\u0101p\u0113c jums nepiecie\u0161ams kodu kontrole? Pie\u0146emsim, ka izstr\u0101d\u0101jat lietotni. Kad j\u016bs izstr\u0101d\u0101jat lietotni, j\u016bs kod\u0113jat, un nav noz\u012bmes, vai j\u016bs izmantojat Java, Python, C++, Go, Ruby, JavaScript vai k\u0101du no daudziem citiem programm\u0113\u0161anas valod\u0101m. Kods, ko j\u016bs rakst\u0101t, tiek saukts par avota kodu. Ies\u0101kum\u0101, it \u012bpa\u0161i, kad str\u0101d\u0101jat viens, iesp\u0113jams, to varat ievietot visus lok\u0101l\u0101 direktorij\u0101. Bet, kad projekts k\u013c\u016bst liel\u0101ks un j\u016bs uzaicin\u0101t citus uz sadarb\u012bbu, jums nepiecie\u0161ams veids, k\u0101 nov\u0113rst konfliktus efekt\u012bvas modifik\u0101ciju apmai\u0146as laik\u0101. Jums ar\u012b nepiecie\u0161ams veids, k\u0101 atjaunot iepriek\u0161\u0113j\u0101s versijas, jo dubl\u0113\u0161ana un kop\u0113\u0161ana\/iel\u012bm\u0113\u0161ana jau ir novecojusi. Jums (un j\u016bsu komandai) nepiecie\u0161ams kaut kas lab\u0101ks.<\/p>\n<p>Tie\u0161i \u0161eit koda versiju kontroles r\u012bks k\u013c\u016bst praktiski neaizst\u0101jam\u012bba. \u0160is r\u012bks saglab\u0101 j\u016bsu kodu repozitorijos, uzskaita versijas un koordin\u0113 projekta dal\u012bbnieku darbu.<\/p>\n<p>Lai gan past\u0101v daudzi koda versiju kontroles r\u012bki, Git ir standarts, un tas ir taisn\u012bgi. Es \u013coti ieteiktu izmantot Git, lai gan, ja v\u0113laties, ir ar\u012b citi atv\u0113rt\u0101 koda varianti.<\/p>\n<p>Git: GPLv2 un LGPL v2.1<br \/>\nSubversion: Apache 2.0<br \/>\nConcurrent Versions System (CVS): GNU<br \/>\nVesta: LGPL<br \/>\nMercurial: GNU GPL v2+<\/p>\n<p>T\u0101 izskat\u0101s DevOps cauru\u013cvads, pievienojot versiju kontroles r\u012bkus.<\/p>\n<p><img decoding=\"async\" alt=\"S\u0101c\u0113ju rokasgr\u0101mata: veidojot DevOps cauru\u013cvadu\" src=\"\/wp-content\/uploads\/2020\/07\/47793d73d3b496aa38e027ff116f729d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>CI\/CD r\u012bks var automatiz\u0113t p\u0101rbaudes, avota koda ieg\u016b\u0161anas un sadarb\u012bbas procesus starp dal\u012bbniekiem. Labi? Bet k\u0101 padar\u012bt to par str\u0101d\u0101jo\u0161u lietotni, lai miljardiem cilv\u0113ku to var\u0113tu izmantot un nov\u0113rt\u0113t?<\/p>\n<h3>3. solis: Automatiz\u0101cijas r\u012bka izveide<\/h3>\n<p>\nLieliski! J\u016bs varat p\u0101rbaud\u012bt kodu un veikt izmai\u0146as versiju kontrol\u0113, k\u0101 ar\u012b iel\u016bgt savus draugus sadarboties izstr\u0101d\u0113. Ta\u010du j\u016bs v\u0113l neesat izveidojis lietotni. Lai izveidotu t\u012bmek\u013ca lietotni, to j\u0101kompil\u0113 un j\u0101pako izplat\u0101m\u0101 pakot\u0146u form\u0101t\u0101 vai j\u0101palai\u017e k\u0101 izpild\u0101mu failu. (L\u016bdzu, \u0146emiet v\u0113r\u0101, ka interpret\u0113jamai programm\u0113\u0161anas valodai, piem\u0113ram, JavaScript vai PHP, nav nepiecie\u0161ama kompil\u0101cija).<\/p>\n<p>Izmantojiet b\u016bvniec\u012bbas autom\u0101tiz\u0101cijas r\u012bku. Neatkar\u012bgi no t\u0101, kuru b\u016bvniec\u012bbas autom\u0101tiz\u0101cijas r\u012bku j\u016bs izv\u0113l\u0113sities, visi tie tiecas uz vienu un to pa\u0161u m\u0113r\u0137i: sav\u0101kt avota kodu k\u0101d\u0101 v\u0113lamaj\u0101 form\u0101t\u0101 un automatiz\u0113t uzdevumus, piem\u0113ram, t\u012br\u012b\u0161anu, kompil\u0113\u0161anu, test\u0113\u0161anu un izvieto\u0161anu konkr\u0113t\u0101 vid\u0113. B\u016bvniec\u012bbas r\u012bki at\u0161\u0137irsies atkar\u012bb\u0101 no j\u016bsu programm\u0113\u0161anas valodas, bet \u0161eit ir da\u017ei visp\u0101r\u012bgi atv\u0113rt\u0101 koda varianti.<\/p>\n<p>Nosaukums<br \/>\nLicence<br \/>\nProgramm\u0113\u0161anas valoda<\/p>\n<p>Maven<br \/>\nApache 2.0<br \/>\n Java<\/p>\n<p>BIND<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Gradle<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Bazel<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Make<br \/>\nGNU<br \/>\nN\/A<\/p>\n<p>Grunt<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Gulp<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Buildr<br \/>\nApache<br \/>\nRuby<\/p>\n<p>Rake<br \/>\nMIT<br \/>\nRuby<\/p>\n<p>A-A-P<br \/>\nGNU<br \/>\nPython<\/p>\n<p>SCons<br \/>\nMIT<br \/>\nPython<\/p>\n<p>BitBake<br \/>\nGPLv2<br \/>\nPython<\/p>\n<p>Cake<br \/>\nMIT<br \/>\nC#<\/p>\n<p>ASDF<br \/>\nExpat (MIT)<br \/>\nLISP<\/p>\n<p>Cabal<br \/>\nBSD<br \/>\nHaskell<\/p>\n<p>For\u0161i! J\u016bs varat ievietot autom\u0101tiz\u0101cijas r\u012bka konfigur\u0101cijas failus avota kontroles sist\u0113m\u0101 un \u013caut j\u016bsu CI\/CD r\u012bkam savienot visu kop\u0101.<\/p>\n<p><img decoding=\"async\" alt=\"S\u0101c\u0113ju rokasgr\u0101mata: veidojot DevOps cauru\u013cvadu\" src=\"\/wp-content\/uploads\/2020\/07\/573d613914d278e738a0fc7f05644b62.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Viss ir labi, vai ne? Bet kur izvietot j\u016bsu lietotni?<\/p>\n<h3>4. solis: T\u012bmek\u013ca lietot\u0146u serveris<\/h3>\n<p>\nPag\u0101ju\u0161aj\u0101 laik\u0101 jums ir iepakots fails, kas var b\u016bt gan izpild\u0101ms, gan instal\u0113jams. Lai jebkura lietotne b\u016btu patie\u0161\u0101m noder\u012bga, tai j\u0101sniedz k\u0101da pakalpojuma vai interfeisa funkcionalit\u0101te, bet jums ir nepiecie\u0161ams konteinera, kur ievietot j\u016bsu lietotni.<\/p>\n<p>T\u012bmek\u013ca lietot\u0146u serveris ir tie\u0161i t\u0101ds konteiners. Serveris nodro\u0161ina vidi, kur\u0101 var defin\u0113t izvietojam\u0101 pakot\u0146a lo\u0123iku. Ar\u012b serveris nodro\u0161ina interfeisu un pied\u0101v\u0101 t\u012bmek\u013ca pakalpojumus, atverot piesl\u0113gumus \u0101r\u0113jai pasaulei. Jums nepiecie\u0161ams HTTP serveris, k\u0101 ar\u012b k\u0101da vide (piem\u0113ram, virtu\u0101l\u0101 ma\u0161\u012bna) t\u0101 instal\u0113\u0161anai. Bet pagaid\u0101m pie\u0146emiet, ka j\u016bs par to uzzin\u0101siet t\u0101l\u0101k (lai gan es zem\u0101k run\u0101\u0161u par konteineriem).<\/p>\n<p>Past\u0101v vair\u0101ki atv\u0113rt\u0101 koda t\u012bmek\u013ca lietot\u0146u serveri.<\/p>\n<p>Nosaukums<br \/>\nLicence<br \/>\nProgramm\u0113\u0161anas valoda<\/p>\n<p>Tomcat<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Jetty<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>WildFly<br \/>\nGNU Lesser Public<br \/>\nJava<\/p>\n<p>GlassFish<br \/>\nCDDL &amp; GNU Less Public<br \/>\nJava<\/p>\n<p>Django<br \/>\n3-Clause BSD<br \/>\nPython<\/p>\n<p>Tornado<br \/>\nApache 2.0<br \/>\nPython<\/p>\n<p>Gunicorn<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Python<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Rails<br \/>\nMIT<br \/>\nRuby<\/p>\n<p>Node.js<br \/>\nMIT<br \/>\nJavascript<\/p>\n<p>J\u016bsu DevOps cauru\u013cvads dr\u012bz b\u016bs gatavs lieto\u0161anai. Lielisks darbs!<\/p>\n<p><img decoding=\"async\" alt=\"S\u0101c\u0113ju rokasgr\u0101mata: veidojot DevOps cauru\u013cvadu\" src=\"\/wp-content\/uploads\/2020\/07\/9c314e8a42f154ded3b16ec7bdf01f99.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Lai gan \u0161eit var\u0113tu apst\u0101ties un veikt integr\u0101ciju patst\u0101v\u012bgi, koda kvalit\u0101te ir svar\u012bgs faktors lietojumprogrammu izstr\u0101d\u0101t\u0101jiem, un par to ir j\u0101r\u016bp\u0113jas.<\/p>\n<h3>5. solis: Koda test\u0113\u0161anas segums<\/h3>\n<p>\nTestu \u012bsteno\u0161ana var b\u016bt v\u0113l viens apgr\u016btin\u0101jums, ta\u010du izstr\u0101d\u0101t\u0101jiem ir j\u0101atkl\u0101j jebk\u0101das k\u013c\u016bdas lietojumprogramm\u0101 jau agri un j\u0101uzlabo koda kvalit\u0101te, lai garant\u0113tu, ka gala lietot\u0101ji b\u016bs apmierin\u0101ti. Par laimi, past\u0101v daudz atv\u0113rt\u0101 koda r\u012bku, lai test\u0113tu savu kodu un izveidotu ieteikumus t\u0101 kvalit\u0101tes uzlabo\u0161anai. V\u0113l lab\u0101k, ka vairums CI\/CD r\u012bku var pievienoties \u0161iem r\u012bkiem un automatiz\u0113t procesu.<\/p>\n<p>Koda test\u0113\u0161ana sast\u0101v no div\u0101m da\u013c\u0101m: koda test\u0113\u0161anas ietvariem, kas pal\u012bdz rakst\u012bt un palaist testus, un ieteikumu veido\u0161anas r\u012bkiem, kas pal\u012bdz uzlabot koda kvalit\u0101ti.<\/p>\n<p><b>Koda test\u0113\u0161anas sist\u0113mas<\/b><\/p>\n<p>Nosaukums<br \/>\nLicence<br \/>\nProgramm\u0113\u0161anas valoda<\/p>\n<p>JUnit<br \/>\nEclipse Public License<br \/>\nJava<\/p>\n<p>EasyMock<br \/>\nApache<br \/>\nJava<\/p>\n<p>Mockito<br \/>\nMIT<br \/>\nJava<\/p>\n<p>PowerMock<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Pytest<br \/>\n MIT<br \/>\nPython<\/p>\n<p>Hypothesis<br \/>\nMozilla<br \/>\nPython<\/p>\n<p>Tox<br \/>\nMIT<br \/>\nPython<\/p>\n<p><b>Ieteikumu sist\u0113mas koda uzlabo\u0161anai<\/b><\/p>\n<p>Nosaukums<br \/>\nLicence<br \/>\nProgramm\u0113\u0161anas valoda<\/p>\n<p>Cobertura<br \/>\nGNU<br \/>\nJava<\/p>\n<p>CodeCover<br \/>\nEclipse Public (EPL)<br \/>\nJava<\/p>\n<p>Coverage.py<br \/>\n Apache 2.0<br \/>\nPython<\/p>\n<p>Emma<br \/>\nCommon Public License<br \/>\nJava<\/p>\n<p>JaCoCo<br \/>\n Eclipse Public License<br \/>\nJava<\/p>\n<p>Hypothesis<br \/>\n Mozilla<br \/>\nPython<\/p>\n<p>Tox<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Jasmine<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Karma<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Mocha<br \/>\n MIT<br \/>\nJavaScript<\/p>\n<p>Jest<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Piev\u0113rsiet uzman\u012bbu, ka liel\u0101k\u0101 da\u013ca iepriek\u0161 min\u0113to r\u012bku un ietvaru ir uzrakst\u012bti Java, Python un JavaScript valod\u0101, jo C++ un C# ir propriet\u0101ras programm\u0113\u0161anas valodas (lai gan GCC ir atv\u0113rt\u0101 koda).<\/p>\n<p>Tagad, kad esat \u012bstenojis koda p\u0101rkl\u0101juma r\u012bkus, j\u016bsu DevOps pl\u016bsmai b\u016btu j\u0101izskat\u0101s k\u0101 diagrammai, kas par\u0101d\u012bta \u0161\u012b ce\u013cve\u017ea s\u0101kum\u0101.<\/p>\n<h3>Papildu so\u013ci<\/h3>\n<p>\n<b>Tvertnes<\/b><\/p>\n<p>K\u0101 jau teicu, j\u016bs varat izvietot savu serveri virtu\u0101l\u0101 ma\u0161\u012bn\u0101 vai server\u012b, bet konteineri ir popul\u0101ra lieta.<\/p>\n<p>Kas ir konteineri? \u012ass paskaidrojums ir t\u0101ds, ka virtu\u0101lajai ma\u0161\u012bnai ir nepiecie\u0161ams iev\u0113rojams oper\u0113t\u0101jsist\u0113mas atmi\u0146as apjoms, kas p\u0101rsniedz lietojumprogrammas izm\u0113ru, savuk\u0101rt konteineram nepiecie\u0161amas tikai da\u017eas bibliot\u0113kas un konfigur\u0101cijas, lai palaistu lietojumprogrammu. Ac\u012bmredzot virtu\u0101lajai ma\u0161\u012bnai joproj\u0101m ir svar\u012bgas pielieto\u0161anas jomas, ta\u010du konteiners ir viegla lieto\u0161anas risin\u0101jums, tostarp lietojumprogrammu serveriem.<\/p>\n<p>Lai gan past\u0101v ar\u012b citi konteineru varianti, vispopul\u0101r\u0101kie ir Docker un Kubernetes.<\/p>\n<p>Docker: Apache 2.0<br \/>\nKubernetes: Apache 2.0<\/p>\n<p><b>Starpprogrammat\u016bras automatiz\u0101cijas r\u012bki<\/b><\/p>\n<p>M\u016bsu DevOps cauru\u013cvads galvenok\u0101rt ir v\u0113rsts uz kop\u012bgu lietojumprogrammu izstr\u0101di un izvieto\u0161anu, ta\u010du ar DevOps r\u012bkiem ir iesp\u0113jams paveikt daudz citas lietas. Viens no veidiem ir infrastrukt\u016bras k\u0101 koda (IaC) r\u012bku izmanto\u0161ana, kas ir paz\u012bstami ar\u012b k\u0101 starpprogrammat\u016bras automatiz\u0101cijas r\u012bki. \u0160ie r\u012bki pal\u012bdz automatiz\u0113t instal\u0101ciju, p\u0101rvald\u012bbu un citas uzdevumu veik\u0161anas funkcijas starpprogrammat\u016brai. Piem\u0113ram, automatiz\u0101cijas r\u012bks var ieg\u016bt lietojumprogrammas, piem\u0113ram, t\u012bmek\u013ca lietojumprogrammu serverus, datu b\u0101zes un uzraudz\u012bbas r\u012bkus, ar pareizaj\u0101m konfigur\u0101cij\u0101m un izvietot t\u0101s lietojumprogrammu server\u012b.<\/p>\n<p>\u0160eit ir da\u017ei atv\u0113rt\u0101 koda starpprogrammat\u016bras automatiz\u0101cijas r\u012bki:<\/p>\n<p>Ansible: GNU Public<br \/>\nSaltStack: Apache 2.0<br \/>\nChef: Apache 2.0<br \/>\nPuppet: Apache vai GPL<\/p>\n<p><img decoding=\"async\" alt=\"S\u0101c\u0113ju rokasgr\u0101mata: veidojot DevOps cauru\u013cvadu\" src=\"\/wp-content\/uploads\/2020\/07\/148ef7317ca5780b412241ddaec9dc76.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Uzziniet detaliz\u0113ti, k\u0101 ieg\u016bt piepras\u012btu profesiju no nulles vai uzlabot savas prasmes un algas, apg\u016bstot maksas tie\u0161saistes kursus SkillFactory:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/devops?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=DEVOPS&amp;utm_term=regular&amp;utm_content=07072002\">DevOps kurss<\/a><\/noindex> (12 m\u0113ne\u0161i)<\/li>\n<\/ul>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">v\u0113l kursi<\/b><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/ml-programma-machine-learning-online?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=ML&amp;utm_term=regular&amp;utm_content=07072002\">Machine Learning kurss<\/a><\/noindex> (12 ned\u0113\u013cas)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/data-scientist?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=DST&amp;utm_term=regular&amp;utm_content=07072002\">Data Science profesijas apm\u0101c\u012bba no nulles<\/a><\/noindex> (12 m\u0113ne\u0161i)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/analytics?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=SDA&amp;utm_term=regular&amp;utm_content=07072002\">Anal\u012bti\u0137a profesija ar jebkuru s\u0101kuma l\u012bmeni<\/a><\/noindex> (9 m\u0113ne\u0161i)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/python-for-web-developers?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=PWS&amp;utm_term=regular&amp;utm_content=07072002\">Kurss \u201ePython t\u012bmek\u013ca izstr\u0101dei\u201c<\/a><\/noindex> (9 m\u0113ne\u0161i)<\/li>\n<\/ul>\n<p><\/p>\n<h3>Noder\u012bgas<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503196\/\">450 bezmaksas kursu no Ivy League<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508450\/\">Tendences Data Science 2020<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508556\/\">Data Science ir mirusi. Lai dz\u012bvo Business Science<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/506790\/\">Data Science steroidos: iepaz\u012b\u0161an\u0101s ar Decision Intelligence<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503504\/\">Visveiksm\u012bg\u0101kais un visp\u0101r skandaloz\u0101kais Data Science projekts: Cambridge Analytica<\/a><\/noindex><\/li>\n<\/ul>\n<p>Avots: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/509964\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432. DevOps \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445, \u0440\u0430\u0437\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043d\u0435\u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps \u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c, \u0442\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0412 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87468,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87467","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u0441\u043e\u0437\u0434\u0430\u0435\u043c DevOps-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-08T11:42:11+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-08T11:42:11+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Ce\u013cvedis ies\u0101c\u0113jiem: veidojam DevOps cauru\u013cvadu | ProHoster","description":"Ja esat jauns DevOps jom\u0101, apskatiet \u0161o rokasgr\u0101matu, kas pal\u012bdz\u0113s izveidot j\u016bsu pirmo piecu posmu cauruli.","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u0441\u043e\u0437\u0434\u0430\u0435\u043c DevOps-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d | ProHoster","og:description":"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432.","og:url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-08T11:42:11+00:00","article:modified_time":"2020-07-08T11:42:11+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87467","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:50:31","updated":"2022-09-29 03:37:01","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/87467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=87467"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/87467\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media\/87468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=87467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=87467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=87467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}