{"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\/nl\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","title":{"rendered":"Een beginnershandleiding: een DevOps-pijplijn cre\u00ebren","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Als je nieuw bent in DevOps, bekijk dan deze handleiding voor het opzetten van je eerste vijf stappen pipeline.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Een beginnershandleiding: een DevOps-pijplijn cre\u00ebren\" src=\"\/wp-content\/uploads\/2020\/07\/605ed7d81323d0b5e094f7f912f8c669.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>DevOps is de standaardoplossing geworden voor het verhelpen van trage, gefragmenteerde of niet-functionerende softwareontwikkelingsprocessen. Het probleem is dat als je nieuw bent in DevOps en niet weet waar te beginnen, je mogelijk een gebrek aan begrip van deze methoden hebt. Dit artikel gaat over de definitie van een DevOps-pipeline en biedt een stapsgewijze handleiding voor het opzetten ervan. Hoewel deze gids niet allesomvattend is, zou het je een basis moeten geven om je reis te beginnen en je kennis in de toekomst uit te breiden. Maar laten we beginnen met de geschiedenis.<\/p>\n<h3>Mijn reis door DevOps<\/h3>\n<p>\nPreviously, I worked in the cloud team at Citi Group, developing a web application Infrastructure-as-a-Service (IaaS) for managing Citi's cloud infrastructure, but I was always interested in how to make the development process more efficient and bring positive cultural changes to the development team. The answer I found in a book recommended by Greg Lavender, Citi's chief technical officer for cloud architecture and infrastructure. The book was called \u201cThe Phoenix Project\u201d (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/dp\/B078Y98RG8\/\">The Phoenix Project<\/a><\/noindex>), which explains DevOps principles while reading like a novel.<\/p>\n<p>In the table on the back of the book, it shows how often various companies deploy their systems in a release environment:<\/p>\n<p>Amazon: 23,000 per day<br \/>\nGoogle: 5,500 per day<br \/>\nNetflix: 500 per day<br \/>\nFacebook: Once a day<br \/>\nTwitter: 3 times a week<br \/>\nTypical company: Once every 9 months<\/p>\n<p>How are the frequencies of Amazon, Google, and Netflix even possible? It\u2019s because these companies have figured out how to create an almost perfect DevOps pipeline.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nWe were far from it until we implemented DevOps at Citi. At that time, my team had different environments, but deployment on the development server was entirely manual. All developers had access to only one development server based on IBM WebSphere Application Server Community Edition. The problem was that the server would shut down every time multiple users attempted to deploy simultaneously, so developers had to inform each other of their intentions, which was quite painful. Additionally, there were issues with low-level test coverage of the code, cumbersome manual deployment processes, and a lack of the ability to track code deployments related to a specific task or user story.<\/p>\n<p>I realized that something needed to be done and found a like-minded colleague. We decided to collaborate on creating the initial DevOps pipeline \u2013 he set up a virtual machine and Tomcat application server while I worked on Jenkins, integrated Atlassian Jira and BitBucket, and focused on code test coverage. This side project was very successful: we almost completely automated many processes, achieved nearly 100% uptime of our development server, enabled tracking, improved code test coverage, and added the capability to link branches in Git with tasks in Jira or deployments. Most of the tools we used to build our DevOps pipeline were open source.<\/p>\n<p>Now I understand how simple our DevOps pipeline was: we didn't use extensions like Jenkins files or Ansible. However, this simple pipeline worked well, possibly due to the Pareto principle (also known as the 80\/20 rule).<\/p>\n<h3>A brief introduction to DevOps and the CI\/CD pipeline<\/h3>\n<p>\nAls je een aantal mensen zou vragen: 'Wat is DevOps?', krijg je waarschijnlijk verschillende antwoorden. DevOps, net als Agile, is ontstaan om verschillende disciplines te omvatten, maar de meeste mensen zijn het erover eens dat DevOps een software ontwikkelingspraktijk of software ontwikkelingscyclus (SDLC) is, waarvan het centrale principe de verandering van cultuur is, waarin ontwikkelaars en niet-ontwikkelaars bestaan in een omgeving waarin:<\/p>\n<p>Operaties die vroeger handmatig werden uitgevoerd, zijn geautomatiseerd; <br \/>\nIedereen doet waar hij het beste in is;<br \/>\nHet aantal implementaties in een bepaalde periode neemt toe; de doorvoer neemt toe; <br \/>\nDe flexibiliteit van de ontwikkeling neemt toe.<\/p>\n<p>Hoewel het hebben van de juiste softwaretools niet het enige is dat nodig is om een DevOps-omgeving te cre\u00ebren, zijn sommige tools essentieel. Een belangrijke tool is continue integratie en continue uitrol (CI\/CD). In deze pijplijn zijn er verschillende fasen (bijv. DEV, INT, TST, QA, UAT, STG, PROD), veel operaties zijn geautomatiseerd, en ontwikkelaars kunnen hoogwaardige code schrijven, de ontwikkeling flexibiliteit behalen en een hoge frequentie van uitrol realiseren.<\/p>\n<p>In dit artikel wordt een vijf stappen benadering beschreven voor het cre\u00ebren van een DevOps-pijplijn, vergelijkbaar met de afbeelding in de volgende diagram, met gebruik van open-source tools.<\/p>\n<h3>Stap 1: CI\/CD-methoden<\/h3>\n<p>\nHet eerste wat je nodig hebt, is een tool voor CI\/CD. Jenkins, een open-source tool, gebaseerd op Java en verspreid onder de MIT-licentie, is het middel dat de richting van DevOps heeft gepopulariseerd en de facto standaard is geworden.<\/p>\n<p>Wat is Jenkins? Beschouw het als een soort magische universele afstandsbediening die kan communiceren met verschillende services en tools en deze kan organiseren. CI\/CD-tools zoals Jenkins zijn op zichzelf nutteloos, maar worden krachtiger naarmate ze worden aangesloten op verschillende tools en services.<\/p>\n<p>Jenkins is slechts een van de vele open-source tools voor CI\/CD die je kunt gebruiken om een DevOps-pijplijn te bouwen.<\/p>\n<p>Jenkins: Creative Commons en MIT<br \/>\nTravis CI: MIT<br \/>\nCruiseControl: BSD<br \/>\nBuildbot: GPL<br \/>\nApache Gump: Apache 2.0<br \/>\nCabie: GNU<\/p>\n<p>Zo zien DevOps-processen eruit met een CI\/CD-tool:<\/p>\n<p><img decoding=\"async\" alt=\"Een beginnershandleiding: een DevOps-pijplijn cre\u00ebren\" src=\"\/wp-content\/uploads\/2020\/07\/e937f3da170b24c53cb5d67a67a365bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Je hebt een CI\/CD-tool die op je localhost draait, maar op dit moment kun je er niet veel mee doen. Laten we naar de volgende fase van de reis in de wereld van DevOps gaan.<\/p>\n<h3>Stap 2: Beheer van versiebeheersystemen<\/h3>\n<p>\nDe beste (en misschien wel eenvoudigste) manier om te controleren of jouw CI\/CD-tool magie kan verrichten, is door deze te integreren met een bronbeheersysteem (SCM). Waarom heb je versiebeheer nodig? Stel dat je een applicatie ontwikkelt. Elke keer dat je een applicatie maakt, programmeer je, ongeacht of je Java, Python, C++, Go, Ruby, JavaScript of een van de vele andere programmeertalen gebruikt. De code die je schrijft, wordt broncode genoemd. In het begin, vooral wanneer je alleen werkt, kun je waarschijnlijk alles in een lokale map plaatsen. Maar als het project groter wordt en je anderen uitnodigt om samen te werken, heb je een manier nodig om conflicten te voorkomen bij een effectieve uitwisseling van aanpassingen. Je hebt ook een manier nodig om eerdere versies te herstellen, want het maken van back-ups en het knippen\/plakken in die versies is inmiddels verouderd. Jij (en jouw teamgenoten) hebben iets beters nodig.<\/p>\n<p>Hier wordt een bronbeheersysteem bijna een noodzaak. Dit hulpmiddel slaat je code op in repositories, houdt versies bij en co\u00f6rdineert het werk van projectdeelnemers.<\/p>\n<p>Hoewel er veel bronbeheertools zijn, is Git de standaard, en dat is terecht. Ik raad ten zeerste aan om Git te gebruiken, hoewel er ook andere open-source opties zijn als dat nodig is.<\/p>\n<p>Git: GPLv2 en 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>Zo ziet een DevOps-pijplijn eruit met de toevoeging van bronbeheertools.<\/p>\n<p><img decoding=\"async\" alt=\"Een beginnershandleiding: een DevOps-pijplijn cre\u00ebren\" src=\"\/wp-content\/uploads\/2020\/07\/47793d73d3b496aa38e027ff116f729d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Een CI\/CD-tool kan de processen van het controleren, ophalen van broncode en samenwerking tussen teamleden automatiseren. Niet slecht? Maar hoe maak je hier een werkende applicatie van zodat miljarden mensen deze kunnen gebruiken en waarderen?<\/p>\n<h3>Stap 3: Cre\u00ebren van een buildautomatiseringstool<\/h3>\n<p>\nGeweldig! Je kunt de code controleren en wijzigingen aanbrengen in het versiebeheersysteem, evenals je vrienden uitnodigen om samen te werken aan de ontwikkeling. Maar je hebt nog geen applicatie gemaakt. Om een webapplicatie te maken, moet deze worden samengesteld en verpakt in een uitrolbaar pakketformaat of als uitvoerbaar bestand worden uitgevoerd. (Houd er rekening mee dat een ge\u00efnterpreteerde programmeertaal, zoals JavaScript of PHP, geen compilatie vereist).<\/p>\n<p>Maak gebruik van een buildautomatiseringstool. Ongeacht welke buildautomatiseringstool je besluit te gebruiken, ze hebben allemaal hetzelfde doel: de broncode samen te stellen in een gewenste indeling en de taken van opschonen, compileren, testen en uitrollen in een bepaalde omgeving te automatiseren. De buildtools zullen vari\u00ebren afhankelijk van je programmeertaal, maar hier zijn enkele algemene open source opties.<\/p>\n<p>Naam<br \/>\nLicentie<br \/>\nProgrammeertaal<\/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\/V<\/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>Fantastisch! Je kunt de configuratiebestanden van de buildautomatiseringstool in het versiebeheersysteem plaatsen en je CI\/CD-tool laten alles samenvoegen.<\/p>\n<p><img decoding=\"async\" alt=\"Een beginnershandleiding: een DevOps-pijplijn cre\u00ebren\" src=\"\/wp-content\/uploads\/2020\/07\/573d613914d278e738a0fc7f05644b62.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Alles is goed, toch? Maar waar ga je je applicatie uitrollen?<\/p>\n<h3>Stap 4: Server voor webapplicaties<\/h3>\n<p>\nTot nu toe heb je een verpakt bestand dat zowel uitvoerbaar als installeerbaar kan zijn. Om een applicatie echt nuttig te maken, moet deze een bepaalde dienst of interface bieden, maar je hebt een container nodig om je applicatie te hosten.<\/p>\n<p>Een server voor webapplicaties is precies zo'n container. De server biedt een omgeving waarin de logica van het uitrolbare pakket kan worden gedefinieerd. Daarnaast biedt de server een interface en biedt het webservices door poorten voor de buitenwereld open te stellen. Je hebt een HTTP-server nodig, evenals een soort omgeving (bijvoorbeeld een virtuele machine) voor de installatie. Laten we ondertussen aannemen dat je hier verderover leert (hoewel ik hieronder over containers zal vertellen).<\/p>\n<p>Er zijn verschillende open source servers voor webapplicaties beschikbaar.<\/p>\n<p>Naam<br \/>\nLicentie<br \/>\nProgrammeertaal<\/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>Je DevOps-pijplijn is bijna klaar voor gebruik. Goed gedaan!<\/p>\n<p><img decoding=\"async\" alt=\"Een beginnershandleiding: een DevOps-pijplijn cre\u00ebren\" src=\"\/wp-content\/uploads\/2020\/07\/9c314e8a42f154ded3b16ec7bdf01f99.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Hoewel je hier kunt stoppen en zelf met integratie aan de slag kunt gaan, is de kwaliteit van de code een belangrijke factor voor applicatieontwikkelaars, en daar moet je je zorgen over maken.<\/p>\n<h3>Stap 5: Testdekking van de code<\/h3>\n<p>\nHet implementeren van tests kan een andere tijdrovende eis zijn, maar ontwikkelaars moeten eventuele fouten in de applicatie vroegtijdig opsporen en de kwaliteit van de code verbeteren om ervoor te zorgen dat eindgebruikers tevreden zijn. Gelukkig zijn er tal van open-source tools beschikbaar voor het testen van je code en het geven van aanbevelingen voor verbeteringen. Nog beter is dat de meeste CI\/CD-tools met deze tools kunnen worden verbonden en het proces kunnen automatiseren.<\/p>\n<p>Code testen bestaat uit twee delen: testframeworks die helpen bij het schrijven en uitvoeren van tests, en tools die aanbevelingen doen om de kwaliteit van de code te verbeteren.<\/p>\n<p><b>Code test systemen<\/b><\/p>\n<p>Naam<br \/>\nLicentie<br \/>\nProgrammeertaal<\/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>Aanbevelingssystemen voor codeverbetering<\/b><\/p>\n<p>Naam<br \/>\nLicentie<br \/>\nProgrammeertaal<\/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>Let op, de meeste tools en frameworks die hierboven zijn genoemd, zijn geschreven voor Java, Python en JavaScript, aangezien C++ en C# propri\u00ebtaire programmeertalen zijn (hoewel GCC open source heeft).<\/p>\n<p>Nu je de code testdekkingtools hebt ge\u00efmplementeerd, zou je DevOps-pijplijn eruit moeten zien zoals de diagram die in het begin van deze handleiding is weergegeven.<\/p>\n<h3>Extra stappen<\/h3>\n<p>\n<b>Containers<\/b><\/p>\n<p>Zoals ik al zei, je kunt je server hosten op een virtuele machine of server, maar containers zijn een populaire oplossing.<\/p>\n<p>Wat zijn containers? In het kort heeft een virtuele machine een enorme hoeveelheid geheugen van het besturingssysteem nodig, die groter is dan de grootte van de applicatie, terwijl een container slechts enkele bibliotheken en configuraties nodig heeft om de applicatie uit te voeren. Het is duidelijk dat virtuele machines nog steeds belangrijke toepassingen hebben, maar een container is een lichte oplossing voor het hosten van applicaties, inclusief applicatieservers.<\/p>\n<p>Hoewel er andere containeropties zijn, zijn Docker en Kubernetes de meest populaire.<\/p>\n<p>Docker: Apache 2.0<br \/>\nKubernetes: Apache 2.0<\/p>\n<p><b>Tussentools voor automatisering<\/b><\/p>\n<p>Onze DevOps-pijplijn is voornamelijk gericht op het gezamenlijk ontwikkelen en in productie nemen van applicaties, maar er zijn talloze andere dingen die je kunt doen met DevOps-tools. Een daarvan is het gebruik van Infrastructure as Code (IaC)-tools, ook wel bekend als tussentools voor automatisering. Deze tools helpen bij het automatiseren van de installatie, het beheer en andere taken voor tussenliggende software. Zo kan een automatiseringstool bijvoorbeeld applicaties zoals een webapplicatieserver, database en monitoringtool met de juiste configuraties extraheren en ze op de applicatieserver in productie nemen.<\/p>\n<p>Hier zijn enkele open-source tussentools voor automatisering:<\/p>\n<p>Ansible: GNU Public<br \/>\nSaltStack: Apache 2.0<br \/>\nChef: Apache 2.0<br \/>\nPuppet: Apache of GPL<\/p>\n<p><img decoding=\"async\" alt=\"Een beginnershandleiding: een DevOps-pijplijn cre\u00ebren\" src=\"\/wp-content\/uploads\/2020\/07\/148ef7317ca5780b412241ddaec9dc76.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Ontdek meer over hoe je een gewilde carri\u00e8re vanaf nul kunt opbouwen of een Level Up kunt maken in vaardigheden en salaris door betaalde online cursussen van SkillFactory te volgen:<\/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\">Cursus DevOps<\/a><\/noindex> (12 maanden)<\/li>\n<\/ul>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">meer cursussen<\/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\">Cursus Machine Learning<\/a><\/noindex> (12 weken)<\/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\">Opleiding voor het beroep Data Science vanaf nul<\/a><\/noindex> (12 maanden)<\/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\">Beroep analist met elk startniveau<\/a><\/noindex> (9 maanden)<\/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\">Cursus \"Python voor webontwikkeling\"<\/a><\/noindex> (9 maanden)<\/li>\n<\/ul>\n<p><\/p>\n<h3>Nuttig<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503196\/\">450 gratis cursussen van de Ivy League<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508450\/\">Trends in Data Science 2020<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508556\/\">Data Science is dood. Lang leve Business Science<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/506790\/\">Data Science op stero\u00efden: kennismaking met Decision Intelligence<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503504\/\">Het succesvolste en meest controversi\u00eble Data Science-project: Cambridge Analytica<\/a><\/noindex><\/li>\n<\/ul>\n<p>Bron: <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.3 - 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\/nl\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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\udd47 Beginnersgids: een DevOps-pijplijn opzetten | ProHoster","description":"Als je nieuw bent in DevOps, bekijk dan deze handleiding voor het opzetten van je eerste vijf stappen pipeline.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/87467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=87467"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/87467\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/87468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=87467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=87467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=87467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}