{"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\/no\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","title":{"rendered":"Veiledning for nybegynnere: lage en DevOps-pipeline","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Er du ny innen DevOps, kan du se p\u00e5 denne veiledningen for \u00e5 opprette din f\u00f8rste fem-trinns pipeline.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Veiledning for nybegynnere: lage en DevOps-pipeline\" src=\"\/wp-content\/uploads\/2020\/07\/605ed7d81323d0b5e094f7f912f8c669.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>DevOps har blitt den standard l\u00f8sningen for \u00e5 fikse langsomme, fragmenterte eller ikke-fungerende programvareutviklingsprosesser. Problemet er at hvis du er ny innen DevOps og ikke vet hvor du skal starte, kan det hende du mangler forst\u00e5else av disse metodene. I denne artikkelen vil vi definere hva en DevOps-pipeline er, og vi vil gi en veiledning for \u00e5 lage en i fem trinn. Selv om denne guiden ikke er utt\u00f8mmende, skal den gi deg et grunnlag for \u00e5 begynne reisen din og utvide din kunnskap i fremtiden. Men f\u00f8rst, la oss begynne med historien.<\/p>\n<h3>Min reise med DevOps<\/h3>\n<p>\nTidligere jobbet jeg i skyteamet til Citi Group, og utviklet en Infrastructure-as-a-Service (IaaS) webapplikasjon for \u00e5 administrere Citis skyinfrastruktur, men jeg har alltid v\u00e6rt interessert i hvordan man kan gj\u00f8re utviklingsprosessen mer effektiv og skape positive kulturelle endringer i utviklerteamet. Svaret fant jeg i en bok anbefalt av Greg Lavender, teknisk direkt\u00f8r for skyarkitektur og infrastruktur hos Citi. Boken het \"The Phoenix Project\" (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/dp\/B078Y98RG8\/\">The Phoenix Project<\/a><\/noindex>), og den forklarer prinsippene bak DevOps, i en lettlest romanform.<\/p>\n<p>I tabellen p\u00e5 baksiden av boken vises hvor ofte ulike selskaper distribuerer systemene sine i produksjonsmilj\u00f8er for release:<\/p>\n<p>Amazon: 23 000 per dag<br \/>\nGoogle: 5 500 per dag<br \/>\nNetflix: 500 per dag<br \/>\nFacebook: En gang per dag<br \/>\nTwitter: Tre ganger per uke<br \/>\nTypisk selskap: En gang hver 9. m\u00e5ned<\/p>\n<p>Hvordan er det i det hele tatt mulig \u00e5 oppn\u00e5 frekvenser som Amazon, Google og Netflix? Det er fordi disse selskapene har funnet ut hvordan man lager nesten perfekte DevOps-pipelines.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nVi var langt fra dette, inntil vi implementerte DevOps i Citi. Da var det forskjellige milj\u00f8er i teamet mitt, men distribusjonen p\u00e5 utviklingsserveren var helt manuell. Alle utviklere hadde bare tilgang til \u00e9n utviklingsserver basert p\u00e5 IBM WebSphere Application Server Community Edition. Problemet var at serveren ble sl\u00e5tt av hver gang flere brukere pr\u00f8vde \u00e5 utf\u00f8re distribusjonen samtidig, s\u00e5 utviklerne m\u00e5tte informere hverandre om intensjonene sine, noe som var ganske smertefullt. I tillegg var det problemer med lavt testdekning av koden, kl\u00f8nete manuelle distribusjonsprosesser, og en mangel p\u00e5 muligheter for \u00e5 spore distribusjon av kode knyttet til en spesifikk oppgave eller brukerhistorie.<\/p>\n<p>Jeg inns\u00e5 at vi m\u00e5tte gj\u00f8re noe, og fant en kollega som delte mine tanker. Vi bestemte oss for \u00e5 samarbeide om \u00e5 lage den f\u00f8rste DevOps-pipelinen \u2013 han installerte en virtuell maskin og Tomcat-applikasjonsserver, mens jeg jobbet med Jenkins, integrerte Atlassian Jira og BitBucket, samt arbeidet med testdekning av koden. Dette sideprosjektet ble veldig vellykket: vi nesten fullstendig automatiserte mange prosesser, oppn\u00e5dde nesten 100% tilgjengelighet p\u00e5 utviklingsserveren v\u00e5r, s\u00f8rget for sporing, forbedret testdekning av koden, og la til muligheten til \u00e5 knytte grener i Git med oppgaver i Jira eller distribusjoner. De fleste verkt\u00f8y vi brukte for \u00e5 bygge DevOps-pipelinen v\u00e5r hadde \u00e5pen kildekode.<\/p>\n<p>N\u00e5 forst\u00e5r jeg hvor enkelt DevOps-pipelinen v\u00e5r var: vi brukte ikke utvidelser som Jenkins-filer eller Ansible. Men denne enkle pipelinen fungerte bra, kanskje takket v\u00e6re Pareto-prinsippet (ogs\u00e5 kjent som 80\/20-regelen).<\/p>\n<h3>En kort introduksjon til DevOps og CI\/CD-pipelines<\/h3>\n<p>\nHvis du sp\u00f8r flere personer: \u00abHva er DevOps?\u00bb, vil du sannsynligvis f\u00e5 flere forskjellige svar. DevOps, som Agile, har utviklet seg for \u00e5 omfatte mange forskjellige disipliner, men de fleste mennesker vil v\u00e6re enige om noen ting: DevOps er en programvareutviklingspraksis eller programvareutviklingslivssyklus (SDLC), hvor den sentrale prinsippet er kulturell endring, der utviklere og ikke-utviklere eksisterer i et milj\u00f8 som:<\/p>\n<p>Automatiserer operasjoner som tidligere ble utf\u00f8rt manuelt; <br \/>\nAlle gj\u00f8r det de kan best;<br \/>\nAntallet implementeringer over en viss tidsperiode \u00f8ker; Gjennomstr\u00f8mningen \u00f8ker; <br \/>\nFleksibiliteten i utviklingen \u00f8ker.<\/p>\n<p>Selv om det \u00e5 ha de riktige programvareverkt\u00f8yene ikke er den eneste n\u00f8dvendigheten for \u00e5 skape et DevOps-milj\u00f8, er noen verkt\u00f8y essensielle. Et n\u00f8kkelverkt\u00f8y er kontinuerlig integrasjon og kontinuerlig distribusjon (CI\/CD). I denne r\u00f8rledningen har milj\u00f8ene forskjellige stadier (for eksempel DEV, INT, TST, QA, UAT, STG, PROD), mange operasjoner er automatisert, og utviklere kan skrive h\u00f8yverdig kode, oppn\u00e5 utviklingsfleksibilitet og h\u00f8y distribusjonsfrekvens.<\/p>\n<p>Denne artikkelen beskriver en fem-trinns tiln\u00e6rming til \u00e5 bygge en DevOps-r\u00f8rledning som ligner den vist i det f\u00f8lgende diagrammet, ved hjelp av \u00e5pne kildeverkt\u00f8y.<\/p>\n<h3>Trinn 1: CI\/CD-metoder<\/h3>\n<p>\nDet f\u00f8rste du trenger er et verkt\u00f8y for CI\/CD. Jenkins, et verkt\u00f8y med \u00e5pen kilde basert p\u00e5 Java og distribuert under MIT-lisensen, er det middelet som populariserte DevOps-retningen og ble de facto-standarden.<\/p>\n<p>S\u00e5 hva er Jenkins? Tenk p\u00e5 det som en slags magisk universell fjernkontroll som kan kommunisere med forskjellige tjenester og verkt\u00f8y og organisere dem. CI\/CD-verkt\u00f8yet, som Jenkins, er ubrukelig i seg selv, men det blir mer kraftfullt jo flere verkt\u00f8y og tjenester det kobles til.<\/p>\n<p>Jenkins er bare ett av mange \u00e5pne kildeverkt\u00f8y for CI\/CD som du kan bruke til \u00e5 bygge en DevOps-pipeline.<\/p>\n<p>Jenkins: Creative Commons og MIT<br \/>\nTravis CI: MIT<br \/>\nCruiseControl: BSD<br \/>\nBuildbot: GPL<br \/>\nApache Gump: Apache 2.0<br \/>\nCabie: GNU<\/p>\n<p>Slik ser DevOps-prosesser ut med et CI\/CD-verkt\u00f8y:<\/p>\n<p><img decoding=\"async\" alt=\"Veiledning for nybegynnere: lage en DevOps-pipeline\" src=\"\/wp-content\/uploads\/2020\/07\/e937f3da170b24c53cb5d67a67a365bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Du har et CI\/CD-verkt\u00f8y som kj\u00f8rer p\u00e5 din localhost, men for \u00f8yeblikket kan du ikke gj\u00f8re mye. La oss g\u00e5 videre til neste trinn i reisen inn i DevOps-verdenen.<\/p>\n<h3>Trinn 2: H\u00e5ndtering av kildekontrollsystemer<\/h3>\n<p>\nDen beste (og kanskje enkleste) m\u00e5ten \u00e5 sjekke om CI\/CD-verkt\u00f8yet ditt kan gj\u00f8re magi, er \u00e5 integrere det med et kildekontrollverkt\u00f8y (SCM). Hvorfor trenger du kildekontroll? La oss si at du utvikler en applikasjon. Hver gang du lager en applikasjon, programmerer du, og det spiller ingen rolle om du bruker Java, Python, C++, Go, Ruby, JavaScript eller et av de mange programmeringsspr\u00e5kene. Koden du skriver kalles kildekode. I begynnelsen, spesielt n\u00e5r du jobber alene, kan det v\u00e6re greit \u00e5 lagre alt i en lokal mappe. Men n\u00e5r prosjektet vokser, og du inviterer andre til \u00e5 samarbeide, trenger du en m\u00e5te \u00e5 forhindre konflikter ved effektiv deling av modifikasjoner. Du trenger ogs\u00e5 en m\u00e5te \u00e5 gjenopprette tidligere versjoner, fordi det \u00e5 opprette sikkerhetskopier og kopiere\/klipse i dem allerede er utdatert. Du (og teamet ditt) trenger noe bedre.<\/p>\n<p>Det er her kildekontrollverkt\u00f8yet blir praktisk talt n\u00f8dvendig. Dette verkt\u00f8yet lagrer koden din i depoter, holder styr p\u00e5 versjoner og koordinerer arbeidet til prosjektmedlemmene.<\/p>\n<p>Selv om det finnes mange kildekontrollverkt\u00f8y, er Git standarden, og det er sant. Jeg anbefaler sterkt \u00e5 bruke Git, selv om det finnes andre \u00e5pen kildekode-alternativer.<\/p>\n<p>Git: GPLv2 og 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>Slik ser DevOps-pipeline ut med tillegget av kildekontrollverkt\u00f8y.<\/p>\n<p><img decoding=\"async\" alt=\"Veiledning for nybegynnere: lage en DevOps-pipeline\" src=\"\/wp-content\/uploads\/2020\/07\/47793d73d3b496aa38e027ff116f729d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Et CI\/CD-verkt\u00f8y kan automatisere prosessene for \u00e5 teste, hente kildekode og samarbeide mellom medlemmene. Ikkeno d\u00e5rlig? Men hvordan lager man en fungerende applikasjon av dette, slik at milliarder av mennesker kan bruke og vurdere den?<\/p>\n<h3>Trinn 3: Oppretting av et byggeverkt\u00f8y for automatisering<\/h3>\n<p>\nFlott! Du kan sjekke koden og gj\u00f8re endringer i kildekontrollsystemet, samt invitere vennene dine til samarbeid i utviklingen. Men du har enn\u00e5 ikke opprettet en applikasjon. For \u00e5 lage et nettapplikasjon m\u00e5 den kompileres og pakkes i et distribuert pakkeformat eller kj\u00f8res som en kj\u00f8rbar fil. (Merk at et tolket programmeringsspr\u00e5k, som JavaScript eller PHP, ikke trenger \u00e5 kompilere).<\/p>\n<p>Bruk byggautomatiseringsverkt\u00f8yet. Uansett hvilket byggautomatiseringsverkt\u00f8y du velger \u00e5 bruke, har de alle ett felles m\u00e5l: \u00e5 samle kildekoden i \u00f8nsket format og automatisere oppgavene med opprydning, kompilering, testing og distribusjon i et spesifisert milj\u00f8. Byggeverkt\u00f8y vil variere avhengig av programmeringsspr\u00e5ket ditt, men her er noen vanlige alternativer med \u00e5pen kildekode.<\/p>\n<p>Navn<br \/>\nLisens<br \/>\nProgrammeringsspr\u00e5k<\/p>\n<p>Maven<br \/>\nApache 2.0<br \/>\n Java<\/p>\n<p>Ant.<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>Kake<br \/>\nMIT<br \/>\nC#<\/p>\n<p>ASDF<br \/>\nExpat (MIT)<br \/>\nLISP<\/p>\n<p>Cabal<br \/>\nBSD<br \/>\nHaskell<\/p>\n<p>Bra! Du kan legge konfigurasjonsfilene til byggautomatiseringsverkt\u00f8yet inn i kildekontrollsystemet og la CI\/CD-verkt\u00f8yet ditt samle alt p\u00e5 en gang.<\/p>\n<p><img decoding=\"async\" alt=\"Veiledning for nybegynnere: lage en DevOps-pipeline\" src=\"\/wp-content\/uploads\/2020\/07\/573d613914d278e738a0fc7f05644b62.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Alt er bra, ikke sant? Men hvor skal du distribuere applikasjonen din?<\/p>\n<h3>Trinn 4: Server for webapplikasjoner<\/h3>\n<p>\nS\u00e5 langt har du en pakket fil som kan v\u00e6re b\u00e5de kj\u00f8rbar og installasjonsbar. For at en applikasjon skal v\u00e6re virkelig nyttig, m\u00e5 den tilby en eller annen tjeneste eller grensesnitt, men du trenger en container for \u00e5 plassere applikasjonen din.<\/p>\n<p>Serveren for webapplikasjoner fungerer som nettopp en slik container. Serveren gir et milj\u00f8 der logikken til den distribuerte pakken kan defineres. I tillegg gir serveren et grensesnitt og tilbyr nettjenester, og \u00e5pner sokler for den ytre verden. Du trenger en HTTP-server, samt en eller annen milj\u00f8 (for eksempel en virtuell maskin) for \u00e5 installere den. La oss anta at du l\u00e6rer om dette senere (selv om jeg vil fortelle om containere nedenfor).<\/p>\n<p>Det finnes flere servere for webapplikasjoner med \u00e5pen kildekode.<\/p>\n<p>Navn<br \/>\nLisens<br \/>\nProgrammeringsspr\u00e5k<\/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>Din DevOps-pipeline er nesten klar til bruk. God jobb!<\/p>\n<p><img decoding=\"async\" alt=\"Veiledning for nybegynnere: lage en DevOps-pipeline\" src=\"\/wp-content\/uploads\/2020\/07\/9c314e8a42f154ded3b16ec7bdf01f99.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Selv om man kan stoppe her og integrere selv, er kodekvalitet en viktig faktor for applikasjonsutviklere, og dette b\u00f8r man ta vare p\u00e5.<\/p>\n<h3>Trinn 5: Dekning av kode-testing<\/h3>\n<p>\nImplementeringen av tester kan v\u00e6re en annen tidkrevende oppgave, men utviklere m\u00e5 oppdage eventuelle feil i applikasjonen tidlig og forbedre kodekvaliteten for \u00e5 sikre at sluttbrukerne er forn\u00f8yde. Heldigvis finnes det mange verkt\u00f8y med \u00e5pen kildekode for \u00e5 teste koden din og gi anbefalinger for forbedring av kvaliteten. Enda bedre er det at de fleste CI\/CD-verkt\u00f8y kan kobles til disse verkt\u00f8yene og automatisere prosessen.<\/p>\n<p>Kode-testing best\u00e5r av to deler: test-rammeverk som hjelper med \u00e5 skrive og kj\u00f8re tester, samt verkt\u00f8y for \u00e5 gi forslag som hjelper med \u00e5 forbedre kodekvaliteten.<\/p>\n<p><b>Kode-testingsystemer<\/b><\/p>\n<p>Navn<br \/>\nLisens<br \/>\nProgrammeringsspr\u00e5k<\/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>Anbefalingssystemer for kodeforbedring<\/b><\/p>\n<p>Navn<br \/>\nLisens<br \/>\nProgrammeringsspr\u00e5k<\/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>Merk at de fleste verkt\u00f8yene og rammeverkene nevnt ovenfor er skrevet for Java, Python og JavaScript, ettersom C++ og C# er propriet\u00e6re programmeringsspr\u00e5k (selv om GCC har \u00e5pen kildekode).<\/p>\n<p>N\u00e5 som du har implementert verkt\u00f8y for kode-dekking med tester, b\u00f8r DevOps-pipelinen din se ut som diagrammet vist i begynnelsen av denne veiledningen.<\/p>\n<h3>Ytterligere trinn<\/h3>\n<p>\n<b>Containere<\/b><\/p>\n<p>Som jeg allerede har nevnt, kan du hoste serveren din p\u00e5 en virtuell maskin eller server, men containere er en popul\u00e6r l\u00f8sning.<\/p>\n<p>Hva er containere? En kort forklaring er at en virtuell maskin trenger en betydelig mengde minne fra operativsystemet, som overstiger st\u00f8rrelsen p\u00e5 applikasjonen, mens en container kun trenger noen f\u00e5 biblioteker og konfigurasjoner for \u00e5 kj\u00f8re applikasjonen. Det er \u00e5penbart at virtuelle maskiner fortsatt har viktige bruksomr\u00e5der, men en container er en lettvektsl\u00f8sning for hosting av applikasjonen, inkludert applikasjonsservere.<\/p>\n<p>Selv om det finnes andre container-alternativer, er de mest popul\u00e6re Docker og Kubernetes.<\/p>\n<p>Docker: Apache 2.0<br \/>\nKubernetes: Apache 2.0<\/p>\n<p><b>Mellomliggende automatiseringsverkt\u00f8y<\/b><\/p>\n<p>V\u00e5r DevOps-pipeline er prim\u00e6rt fokusert p\u00e5 samarbeid om utvikling og distribusjon av applikasjoner, men det er mange andre ting man kan gj\u00f8re med DevOps-verkt\u00f8y. En av dem er bruken av Infrastructure as Code (IaC) verkt\u00f8y, som ogs\u00e5 er kjent som mellomliggende automatiseringsverkt\u00f8y. Disse verkt\u00f8yene hjelper til med \u00e5 automatisere installasjon, administrasjon og andre oppgaver for mellomprogramvare. For eksempel kan et automatiseringsverkt\u00f8y hente applikasjoner som webapplikasjonsservere, databaser og overv\u00e5kingsverkt\u00f8y, med riktige konfigurasjoner og distribuere dem p\u00e5 applikasjonsserveren.<\/p>\n<p>Her er noen mellomliggende automatiseringsverkt\u00f8y med \u00e5pen kildekode:<\/p>\n<p>Ansible: GNU Public<br \/>\nSaltStack: Apache 2.0<br \/>\nChef: Apache 2.0<br \/>\nPuppet: Apache eller GPL<\/p>\n<p><img decoding=\"async\" alt=\"Veiledning for nybegynnere: lage en DevOps-pipeline\" src=\"\/wp-content\/uploads\/2020\/07\/148ef7317ca5780b412241ddaec9dc76.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>F\u00e1\u00f0u frekari uppl\u00fdsingar um hvernig \u00e1 a\u00f0 \u00f6\u00f0last eftirs\u00f3tta starf me\u00f0 \u00fev\u00ed a\u00f0 fara \u00ed grei\u00f0slukennslu \u00e1 netinu hj\u00e1 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 n\u00e1mskei\u00f0<\/a><\/noindex> (12 m\u00e1nu\u00f0ir)<\/li>\n<\/ul>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">\u00f6nnur n\u00e1mskei\u00f0<\/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\">Mask\u00ednun n\u00e1mskei\u00f0<\/a><\/noindex> (12 vikur)<\/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\">N\u00e1mskei\u00f0 \u00ed Data Science fr\u00e1 grunni<\/a><\/noindex> (12 m\u00e1nu\u00f0ir)<\/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\">Starfi\u00f0 sem greiningars\u00e9rfr\u00e6\u00f0ingur me\u00f0 hva\u00f0a upphafsstigi<\/a><\/noindex> (9 m\u00e1nu\u00f0ir)<\/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\">Kurs 'Python fyrir vefsvi\u00f0 \u00fer\u00f3un'<\/a><\/noindex> (9 m\u00e1nu\u00f0ir)<\/li>\n<\/ul>\n<p><\/p>\n<h3>Gagnlegt<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503196\/\">450 \u00f3keypis n\u00e1mskei\u00f0 fr\u00e1 Ivy League<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508450\/\">T\u00edskur \u00ed Data Science 2020<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508556\/\">Data Science er dau\u00f0. Lifandi Business Science<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/506790\/\">Data Science \u00e1 sterum: kynning \u00e1 Decision Intelligence<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503504\/\">S\u00fa \u00e1rangursr\u00edkasta og umdeildasta Data Science verkefni\u00f0: Cambridge Analytica<\/a><\/noindex><\/li>\n<\/ul>\n<p>Kilde: <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\/no\/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=\"nn_NO\" \/>\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\/no\/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\udd47Nybegynnerguide: Lage en DevOps-pipeline | ProHoster","description":"Er du ny innen DevOps, kan du se p\u00e5 denne veiledningen for \u00e5 opprette din f\u00f8rste fem-trinns pipeline.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/87467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=87467"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/87467\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/87468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=87467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=87467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=87467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}