{"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\/sv\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","title":{"rendered":"Guide f\u00f6r nyb\u00f6rjare: Skapa en DevOps-pipeline","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Om du \u00e4r ny inom DevOps, ta en titt p\u00e5 denna guide f\u00f6r att skapa din f\u00f6rsta pipeline i fem steg.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Guide f\u00f6r nyb\u00f6rjare: Skapa en DevOps-pipeline\" src=\"\/wp-content\/uploads\/2020\/07\/605ed7d81323d0b5e094f7f912f8c669.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>DevOps har blivit den standardl\u00f6sning som \u00e5tg\u00e4rdar l\u00e5ngsamma, isolerade eller defekta mjukvaruutvecklingsprocesser. Problemet \u00e4r att om du \u00e4r ny inom DevOps och inte vet var du ska b\u00f6rja kan det saknas en f\u00f6rst\u00e5else f\u00f6r dessa metoder. I denna artikel kommer vi att definiera en DevOps-pipeline samt ge en guide f\u00f6r hur man skapar en i fem steg. \u00c4ven om denna handledning inte \u00e4r utt\u00f6mmande, b\u00f6r den ge dig en grund f\u00f6r att b\u00f6rja din resa och f\u00f6r att ut\u00f6ka dina kunskaper i framtiden. Men f\u00f6rst, l\u00e5t oss b\u00f6rja med historien.<\/p>\n<h3>Min resa inom DevOps<\/h3>\n<p>\nTidigare arbetade jag i cloud-teamet p\u00e5 Citi Group, d\u00e4r jag utvecklade en Infrastructure-as-a-Service (IaaS) webbapplikation f\u00f6r att hantera Citis molninfrastruktur, men jag har alltid varit intresserad av hur man kan effektivisera utvecklingsprocessen och f\u00f6ra in positiva kulturella f\u00f6r\u00e4ndringar i utvecklarteamet. Svaret fann jag i en bok rekommenderad av Greg Lavender, teknisk direkt\u00f6r f\u00f6r Citis molnarkitektur och infrastruktur. Boken hette \"The Phoenix Project\" (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/dp\/B078Y98RG8\/\">The Phoenix Project<\/a><\/noindex>), och den f\u00f6rklarar principerna f\u00f6r DevOps, samtidigt som den l\u00e4ses som en roman.<\/p>\n<p>I tabellen p\u00e5 baksidan av boken visas hur ofta olika f\u00f6retag distribuerar sina system i en release-milj\u00f6:<\/p>\n<p>Amazon: 23 000 per dag<br \/>\nGoogle: 5 500 per dag<br \/>\nNetflix: 500 per dag<br \/>\nFacebook: En g\u00e5ng per dag<br \/>\nTwitter: Tre g\u00e5nger i veckan<br \/>\nTypiskt f\u00f6retag: En g\u00e5ng var nio m\u00e5nad<\/p>\n<p>Hur \u00e4r det ens m\u00f6jligt f\u00f6r Amazon, Google och Netflix att ha s\u00e5dana frekvenser? Det beror p\u00e5 att dessa f\u00f6retag har kommit p\u00e5 hur man kan skapa en n\u00e4stan perfekt DevOps-pipeline.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nVi var l\u00e5ngt ifr\u00e5n detta tills vi implementerade DevOps p\u00e5 Citi. D\u00e5 hade mitt team olika milj\u00f6er, men distributionen p\u00e5 utvecklingsservern var helt manuell. Alla utvecklare hade endast tillg\u00e5ng till en utvecklingsserver baserad p\u00e5 IBM WebSphere Application Server Community Edition. Problemet var att servern st\u00e4ngdes av varje g\u00e5ng flera anv\u00e4ndare f\u00f6rs\u00f6kte distribuera samtidigt, s\u00e5 utvecklarna var tvungna att meddela varandra om sina avsikter, vilket var ganska sm\u00e4rtsamt. Dessutom fanns det problem med l\u00e5g testt\u00e4ckning av koden, besv\u00e4rliga processer f\u00f6r manuell distribution och bristen p\u00e5 m\u00f6jlighet att sp\u00e5ra koddistribution kopplad till en specifik uppgift eller anv\u00e4ndarhistoria.<\/p>\n<p>Jag ins\u00e5g att n\u00e5got beh\u00f6vde g\u00f6ras och hittade en kollega som t\u00e4nkte som jag. Vi beslutade att samarbeta f\u00f6r att skapa den ursprungliga DevOps-pipelinen - han installerade en virtuell maskin och en Tomcat-applikationsserver medan jag arbetade med Jenkins, integrerade Atlassian Jira och BitBucket, samt arbetade med testt\u00e4ckning av koden. Det h\u00e4r sidoprojektet var mycket framg\u00e5ngsrikt: vi automatiserade n\u00e4stan helt m\u00e5nga processer, n\u00e5dde n\u00e4ra 100 % tillf\u00f6rlitlighet p\u00e5 v\u00e5r utvecklingsserver, s\u00e4kerst\u00e4llde sp\u00e5rbarhet och f\u00f6rb\u00e4ttrade testt\u00e4ckningen av koden, samt lade till m\u00f6jligheten att koppla grenar i Git med uppgifter i Jira eller distribution. De flesta verktyg som vi anv\u00e4nde f\u00f6r att bygga v\u00e5r DevOps-pipeline hade \u00f6ppen k\u00e4llkod.<\/p>\n<p>Nu f\u00f6rst\u00e5r jag hur enkel v\u00e5r DevOps-pipeline var: vi anv\u00e4nde inte till\u00e4gg som Jenkins-filer eller Ansible. Denna enkla pipeline fungerade dock bra, kanske tack vare Paretoprincipen (\u00e4ven k\u00e4nd som 80\/20-regeln).<\/p>\n<h3>En kort introduktion till DevOps och CI\/CD-pipelines<\/h3>\n<p>\nOm du fr\u00e5gar flera personer: \"Vad \u00e4r DevOps?\", f\u00e5r du f\u00f6rmodligen flera olika svar. DevOps, precis som Agile, har utvecklats f\u00f6r att omfatta m\u00e5nga olika discipliner, men de flesta h\u00e5ller med om n\u00e5gra saker: DevOps \u00e4r en programvaruutvecklingspraxis eller livscykel f\u00f6r programvaruutveckling (SDLC), d\u00e4r en central princip \u00e4r att f\u00f6r\u00e4ndra kulturen d\u00e4r utvecklare och icke-utvecklare existerar i en milj\u00f6 d\u00e4r:<\/p>\n<p>Operationer som tidigare utf\u00f6rdes manuellt \u00e4r automatiserade; <br \/>\nAlla g\u00f6r det de \u00e4r b\u00e4st p\u00e5;<br \/>\nAntalet implementeringar under en viss tidsperiod \u00f6kar; Genomstr\u00f6mningen \u00f6kar; <br \/>\nUtvecklingsflexibiliteten \u00f6kar.<\/p>\n<p>\u00c4ven om r\u00e4tt programvaruverktyg inte \u00e4r det enda som kr\u00e4vs f\u00f6r att skapa en DevOps-milj\u00f6, \u00e4r vissa verktyg n\u00f6dv\u00e4ndiga. Ett nyckelverktyg \u00e4r kontinuerlig integration och kontinuerlig distribution (CI\/CD). I denna pipeline har milj\u00f6erna olika faser (t.ex. DEV, INT, TST, QA, UAT, STG, PROD), m\u00e5nga operationer \u00e4r automatiserade, och utvecklare kan skriva h\u00f6gkvalitativ kod, uppn\u00e5 utvecklingsflexibilitet och h\u00f6g distributionsfrekvens.<\/p>\n<p>I den h\u00e4r artikeln beskrivs en femstegsmetod f\u00f6r att skapa en DevOps-pipeline liknande den som visas i f\u00f6ljande diagram, med anv\u00e4ndning av verktyg med \u00f6ppen k\u00e4llkod.<\/p>\n<h3>Steg 1: CI\/CD-metoder<\/h3>\n<p>\nDet f\u00f6rsta du beh\u00f6ver \u00e4r ett verktyg f\u00f6r CI\/CD. Jenkins, ett verktyg med \u00f6ppen k\u00e4llkod baserat p\u00e5 Java och distribuerat under MIT-licensen, \u00e4r det verktyg som har populariserat DevOps-riktningen och blivit de facto-standard.<\/p>\n<p>Vad \u00e4r d\u00e5 Jenkins? T\u00e4nk p\u00e5 det som en slags magisk universalfj\u00e4rrkontroll som kan kommunicera med olika tj\u00e4nster och verktyg och organisera dem. Sj\u00e4lva CI\/CD-verktyget, som Jenkins, \u00e4r v\u00e4rdel\u00f6st, men det blir mer kraftfullt n\u00e4r det kopplas till olika verktyg och tj\u00e4nster.<\/p>\n<p>Jenkins \u00e4r bara ett av m\u00e5nga verktyg med \u00f6ppen k\u00e4llkod f\u00f6r CI\/CD som du kan anv\u00e4nda f\u00f6r att bygga DevOps-pipelines.<\/p>\n<p>Jenkins: Creative Commons och MIT<br \/>\nTravis CI: MIT<br \/>\nCruiseControl: BSD<br \/>\nBuildbot: GPL<br \/>\nApache Gump: Apache 2.0<br \/>\nCabie: GNU<\/p>\n<p>S\u00e5 h\u00e4r ser DevOps-processerna ut med CI\/CD-verktyget:<\/p>\n<p><img decoding=\"async\" alt=\"Guide f\u00f6r nyb\u00f6rjare: Skapa en DevOps-pipeline\" src=\"\/wp-content\/uploads\/2020\/07\/e937f3da170b24c53cb5d67a67a365bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Du har ett CI\/CD-verktyg som k\u00f6rs p\u00e5 din lokala v\u00e4rd, men just nu kan du g\u00f6ra lite eller inget. L\u00e5t oss g\u00e5 vidare till n\u00e4sta steg i resan in i DevOps-v\u00e4rlden.<\/p>\n<h3>Steg 2: Hantering av versionskontrollsystem<\/h3>\n<p>\nDet b\u00e4sta (och kanske enklaste) s\u00e4ttet att kontrollera att ditt CI\/CD-verktyg kan g\u00f6ra magi \u00e4r att integrera det med ett versionskontrollsystem (VCS). Varf\u00f6r beh\u00f6ver du kontroll \u00f6ver k\u00e4llkoden? Anta att du utvecklar en applikation. Varje g\u00e5ng du bygger en applikation skriver du kod, oavsett om du anv\u00e4nder Java, Python, C++, Go, Ruby, JavaScript eller n\u00e5gon av de miljontals programmeringsspr\u00e5ken. Koden du skriver kallas k\u00e4llkod. I b\u00f6rjan, s\u00e4rskilt n\u00e4r du arbetar ensam, \u00e4r det f\u00f6rmodligen okej att lagra allt i en lokal katalog. Men n\u00e4r projektet v\u00e4xer och du bjuder in andra att samarbeta, beh\u00f6ver du ett s\u00e4tt att f\u00f6rhindra konflikter vid effektiv delning av modifieringar. Du beh\u00f6ver ocks\u00e5 ett s\u00e4tt att \u00e5terst\u00e4lla tidigare versioner, eftersom att g\u00f6ra backuper och kopiera\/klistra in dem redan \u00e4r f\u00f6r\u00e5ldrat. Du (och dina teamkamrater) beh\u00f6ver n\u00e5got b\u00e4ttre.<\/p>\n<p>H\u00e4r blir ett versionskontrollsystem n\u00e4stan en n\u00f6dv\u00e4ndighet. Detta verktyg lagrar din kod i repositorier, h\u00e5ller reda p\u00e5 versioner och koordinerar arbetet mellan projektets deltagare.<\/p>\n<p>\u00c4ven om det finns m\u00e5nga versionskontrollsystem \u00e4r Git standarden, och det \u00e4r sant. Jag rekommenderar starkt att anv\u00e4nda Git, \u00e4ven om det finns andra alternativ som \u00e4r \u00f6ppen k\u00e4llkod.<\/p>\n<p>Git: GPLv2 och 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>S\u00e5 h\u00e4r ser DevOps-pipelinen ut med till\u00e4gg av versionskontrollsystem.<\/p>\n<p><img decoding=\"async\" alt=\"Guide f\u00f6r nyb\u00f6rjare: Skapa en DevOps-pipeline\" src=\"\/wp-content\/uploads\/2020\/07\/47793d73d3b496aa38e027ff116f729d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>CI\/CD-verktyget kan automatisera processerna f\u00f6r testning, h\u00e4mtning av k\u00e4llkod och samarbetet mellan medlemmar. Inte illa? Men hur omvandlar man detta till en fungerande applikation som miljarder m\u00e4nniskor kan anv\u00e4nda och v\u00e4rdera?<\/p>\n<h3>Steg 3: Skapa automatiseringsverktyget f\u00f6r byggprocessen<\/h3>\n<p>\nBra! Du kan kontrollera koden och g\u00f6ra \u00e4ndringar i versionshanteringssystemet, samt bjuda in dina v\u00e4nner att samarbeta i utvecklingen. Men du har \u00e4nnu inte skapat en applikation. F\u00f6r att skapa ett webbprogram m\u00e5ste det kompileras och paketeras i ett distribuerbart format eller k\u00f6ras som en k\u00f6rbar fil. (Observera att tolkade programmeringsspr\u00e5k som JavaScript eller PHP inte beh\u00f6ver kompileras).<\/p>\n<p>Anv\u00e4nd automatiseringsverktyget f\u00f6r byggande. Oavsett vilket automatiseringsverktyg f\u00f6r byggande du v\u00e4ljer att anv\u00e4nda, syftar de alla mot samma m\u00e5l: att sammanst\u00e4lla koden till ett \u00f6nskat format och automatisera uppgifter som st\u00e4dning, kompilering, testning och distribution i en viss milj\u00f6. Byggverktyg kan variera beroende p\u00e5 ditt programmeringsspr\u00e5k, men h\u00e4r \u00e4r n\u00e5gra vanliga open source-alternativ.<\/p>\n<p>Namn<br \/>\nLicens<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 \/>\n(Gnu\u2019s Not Unix), som syftar till att utveckla systemkomponenter f\u00f6r att skapa ett fritt alternativ till Unix, vilket g\u00f6r det m\u00f6jligt att helt undvika propriet\u00e4r programvara. Under GNU:s skydd har det skapats en gemenskap av fria projekt, som r\u00f6r sig mot ett gemensamt m\u00e5l och utvecklas i enlighet med en enad ideologi och filosofi. Initialt var de centrala delarna av projektet<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 \/>\n(Gnu\u2019s Not Unix), som syftar till att utveckla systemkomponenter f\u00f6r att skapa ett fritt alternativ till Unix, vilket g\u00f6r det m\u00f6jligt att helt undvika propriet\u00e4r programvara. Under GNU:s skydd har det skapats en gemenskap av fria projekt, som r\u00f6r sig mot ett gemensamt m\u00e5l och utvecklas i enlighet med en enad ideologi och filosofi. Initialt var de centrala delarna av projektet<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>Bra! Du kan placera konfigurationsfilerna f\u00f6r automatiseringsverktyget i versionshanteringssystemet och l\u00e5ta ditt CI\/CD-verktyg s\u00e4tta ihop allt.<\/p>\n<p><img decoding=\"async\" alt=\"Guide f\u00f6r nyb\u00f6rjare: Skapa en DevOps-pipeline\" src=\"\/wp-content\/uploads\/2020\/07\/573d613914d278e738a0fc7f05644b62.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Allt ser bra ut, eller hur? Men var ska du distribuera din applikation?<\/p>\n<h3>Steg 4: Server f\u00f6r webbapplikationer<\/h3>\n<p>\nS\u00e5 l\u00e5ngt har du en paketerad fil som kan vara antingen k\u00f6rbar eller installerbar. F\u00f6r att en applikation ska vara verkligt nyttig m\u00e5ste den erbjuda n\u00e5gon form av tj\u00e4nst eller gr\u00e4nssnitt, och du beh\u00f6ver en beh\u00e5llare f\u00f6r att hysa din applikation.<\/p>\n<p>En server f\u00f6r webbapplikationer \u00e4r just en s\u00e5dan beh\u00e5llare. Servern tillhandah\u00e5ller en milj\u00f6 d\u00e4r logiken f\u00f6r den distribuerade paketet kan definieras. Den erbjuder ocks\u00e5 ett gr\u00e4nssnitt och webb tj\u00e4nster, vilket \u00f6ppnar upp f\u00f6r externa kontakter. Du beh\u00f6ver en HTTP-server och ocks\u00e5 en viss milj\u00f6 (till exempel en virtuell maskin) f\u00f6r att installera den. Och f\u00f6r nu, l\u00e5t oss anta att du f\u00e5r veta mer om det senare (\u00e4ven om jag kommer att ber\u00e4tta om containrar nedan).<\/p>\n<p>Det finns flera open source-servrar f\u00f6r webbapplikationer.<\/p>\n<p>Namn<br \/>\nLicens<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 \u00e4r n\u00e4stan klar att anv\u00e4nda. Bra jobbat!<\/p>\n<p><img decoding=\"async\" alt=\"Guide f\u00f6r nyb\u00f6rjare: Skapa en DevOps-pipeline\" src=\"\/wp-content\/uploads\/2020\/07\/9c314e8a42f154ded3b16ec7bdf01f99.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\u00c4ven om man kan stanna h\u00e4r och integrera sj\u00e4lv, \u00e4r kodens kvalitet en viktig aspekt f\u00f6r applikationsutvecklare, och detta beh\u00f6ver uppm\u00e4rksammas.<\/p>\n<h3>Steg 5: T\u00e4ckning av kodtestning<\/h3>\n<p>\nImplementering av tester kan vara ett annat tungt krav, men utvecklare b\u00f6r f\u00e5nga alla fel i applikationen tidigt och f\u00f6rb\u00e4ttra kodens kvalitet f\u00f6r att s\u00e4kerst\u00e4lla att slutanv\u00e4ndarna kommer att vara n\u00f6jda. Lyckligtvis finns det m\u00e5nga verktyg med \u00f6ppen k\u00e4llkod f\u00f6r att testa din kod och ge rekommendationer f\u00f6r att f\u00f6rb\u00e4ttra dess kvalitet. \u00c4nnu b\u00e4ttre \u00e4r att de flesta CI\/CD-verktyg kan kopplas till dessa verktyg och automatisera processen.<\/p>\n<p>Kodtestning best\u00e5r av tv\u00e5 delar: testningsramverk som hj\u00e4lper till att skriva och k\u00f6ra tester, samt verktyg f\u00f6r att generera f\u00f6rslag som hj\u00e4lper till att f\u00f6rb\u00e4ttra kodens kvalitet.<\/p>\n<p><b>Kodtestningssystem<\/b><\/p>\n<p>Namn<br \/>\nLicens<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>Rekommendationssystem f\u00f6r kodf\u00f6rb\u00e4ttring<\/b><\/p>\n<p>Namn<br \/>\nLicens<br \/>\nProgrammeringsspr\u00e5k<\/p>\n<p>Cobertura<br \/>\n(Gnu\u2019s Not Unix), som syftar till att utveckla systemkomponenter f\u00f6r att skapa ett fritt alternativ till Unix, vilket g\u00f6r det m\u00f6jligt att helt undvika propriet\u00e4r programvara. Under GNU:s skydd har det skapats en gemenskap av fria projekt, som r\u00f6r sig mot ett gemensamt m\u00e5l och utvecklas i enlighet med en enad ideologi och filosofi. Initialt var de centrala delarna av projektet<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>Observera att de flesta verktyg och ramverk som n\u00e4mns ovan \u00e4r skrivna f\u00f6r Java, Python och JavaScript, medan C++ och C# \u00e4r propriet\u00e4ra programmeringsspr\u00e5k (\u00e4ven om GCC har \u00f6ppen k\u00e4llkod).<\/p>\n<p>Nu n\u00e4r du har implementerat verktygen f\u00f6r kodt\u00e4ckning b\u00f6r din DevOps-pipeline se ut som diagrammet som visas i b\u00f6rjan av denna guide.<\/p>\n<h3>Extra steg<\/h3>\n<p>\n<b>Containrar<\/b><\/p>\n<p>Som jag redan n\u00e4mnt kan du hosta din server p\u00e5 en virtuell maskin eller server, men containrar \u00e4r en popul\u00e4r l\u00f6sning.<\/p>\n<p>Vad \u00e4r containrar? En kort f\u00f6rklaring \u00e4r att en virtuell maskin beh\u00f6ver en enorm m\u00e4ngd minne fr\u00e5n operativsystemet, vilket \u00f6verstiger storleken p\u00e5 applikationen, medan en container bara beh\u00f6ver n\u00e5gra bibliotek och konfigurationer f\u00f6r att k\u00f6ra applikationen. Det \u00e4r uppenbart att virtuella maskiner fortfarande har viktiga anv\u00e4ndningsomr\u00e5den, men en container \u00e4r en l\u00e4tt l\u00f6sning f\u00f6r att hosta applikationen, inklusive applikationsservrar.<\/p>\n<p>\u00c4ven om det finns andra alternativ f\u00f6r containrar, \u00e4r de mest popul\u00e4ra Docker och Kubernetes.<\/p>\n<p>Docker: Apache 2.0<br \/>\nKubernetes: Apache 2.0<\/p>\n<p><b>Mellanautomatiseringsverktyg<\/b><\/p>\n<p>V\u00e5r DevOps-pipeline \u00e4r fr\u00e4mst inriktad p\u00e5 samarbete f\u00f6r skapande och distribution av applikationer, men det finns m\u00e5nga andra saker som kan g\u00f6ras med hj\u00e4lp av DevOps-verktyg. En av dem \u00e4r anv\u00e4ndningen av verktyg f\u00f6r Infrastruktur som Kod (IaC), som ocks\u00e5 \u00e4r k\u00e4nda som mellanautomatiseringsmedel. Dessa verktyg hj\u00e4lper till att automatisera installation, hantering och andra uppgifter f\u00f6r mellanprogramvara. Till exempel kan ett automatiseringsverktyg extrahera applikationer som webbapplikationsservrar, databaser och \u00f6vervakningsverktyg, med r\u00e4tt konfigurationer och distribuera dem p\u00e5 applikationsservern.<\/p>\n<p>H\u00e4r \u00e4r n\u00e5gra mellanautomatiseringsverktyg med \u00f6ppen k\u00e4llkod:<\/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=\"Guide f\u00f6r nyb\u00f6rjare: Skapa en DevOps-pipeline\" src=\"\/wp-content\/uploads\/2020\/07\/148ef7317ca5780b412241ddaec9dc76.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>L\u00e4r dig mer om hur du kan skaffa en eftertraktad yrkesroll fr\u00e5n grunden eller Level Up dina f\u00e4rdigheter och din l\u00f6n genom att ta betalda onlinekurser fr\u00e5n 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\">Kurs i DevOps<\/a><\/noindex> (12 m\u00e5nader)<\/li>\n<\/ul>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">fler kurser<\/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\">Kurs i Maskininl\u00e4rning<\/a><\/noindex> (12 veckor)<\/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\">Utbildning inom Data Science fr\u00e5n grunden<\/a><\/noindex> (12 m\u00e5nader)<\/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\">Yrket analytiker med vilken startniv\u00e5 som helst<\/a><\/noindex> (9 m\u00e5nader)<\/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 f\u00f6r webbutveckling\"<\/a><\/noindex> (9 m\u00e5nader)<\/li>\n<\/ul>\n<p><\/p>\n<h3>Nyttigt<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503196\/\">450 kostnadsfria kurser fr\u00e5n Ivy League<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508450\/\">Trender inom Data Science 2020<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508556\/\">Data Science \u00e4r d\u00f6d. L\u00e4nga leve Business Science<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/506790\/\">Data Science p\u00e5 steroider: Introduktion till Decision Intelligence<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503504\/\">Det mest framg\u00e5ngsrika och mest kontroversiella Data Science-projektet: Cambridge Analytica<\/a><\/noindex><\/li>\n<\/ul>\n<p>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Nyb\u00f6rjarguide: Skapa en DevOps-pipeline | ProHoster","description":"Om du \u00e4r ny inom DevOps, ta en titt p\u00e5 denna guide f\u00f6r att skapa din f\u00f6rsta pipeline i fem steg.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/87467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=87467"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/87467\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/87468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=87467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=87467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=87467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}