{"id":382,"date":"2016-02-21T14:27:26","date_gmt":"2016-02-21T13:27:26","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=382"},"modified":"2023-06-09T14:14:50","modified_gmt":"2023-06-09T12:14:50","slug":"wrap-up-seeing-the-bigger-picture-part-5","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/02\/21\/wrap-up-seeing-the-bigger-picture-part-5\/","title":{"rendered":"Jenkbird &#8211; Wrap up &#038; seeing the bigger picture &#8211; Part 5"},"content":{"rendered":"<blockquote><p>Kchhhhhh, Kchhhhhh, Kchhhhhhh&#8230;<\/p>\n<p>&#8211; Ernie on companies without CI<\/p><\/blockquote>\n<p><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/bert.png\" rel=\"attachment wp-att-385\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"385\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/02\/21\/wrap-up-seeing-the-bigger-picture-part-5\/bert\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/bert.png\" data-orig-size=\"1159,1870\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"bert\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/bert-635x1024.png\" class=\" wp-image-385 alignleft\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/bert-186x300.png\" alt=\"bert\" width=\"166\" height=\"263\"><\/a>Hello internet and welcome to the last part of our&nbsp;tutorial series about&nbsp;Continuous Integration, Code Deployment and Automated Testing with Jenkins. If you arrived at this post and have read all the others we are very proud of you, hope you enjoyed the journey and learned something along the way.&nbsp; In this post we are going to discuss and wrap up everything we talked about&nbsp;so far and present an alternative&nbsp;to Jenkins.<\/p>\n<p><!--more--><\/p>\n<h2>What we&#8217;ve seen so far<\/h2>\n<p>Up to&nbsp;this point we tried to demystify several buzzwords of the software developer community like Continuous Integration (CI), Continuous Deployment (CD) and Test Automation. CI describes the act&nbsp;of assembling different pieces of code as early and as often as possible. CD means shipping said code to a production environment. We wanted to put certain standards of the industry in context of university projects and furthermore evaluate, whether it makes sense to use tools like Jenkins for non-professional small projects.<\/p>\n<p>In our blog series we got ourselves a machine via AWS and installed Jenkins. We want to stress that in this step the security of your Amazon instance and Jenkins are very important. Make sure you have a valid user administration and don&#8217;t panic if you lock yourself out of your own system. After talking about the concepts of deployment and branching we configured a few jobs in Jenkins in order to put our code on the machine. Having numerous jobs fail before it actually does what it is supposed to is quite normal and should not bother you. In the previous post we illustrated the importance of testing in order to assure quality and showed you how to set up an exemplary test job.<\/p>\n<h2>Jenkins:&nbsp;Heaven and Hell<\/h2>\n<p>By using Jenkins for your Deployment Pipeline you ensure that you are always master of the situation (as long as you have a deeper understanding of&nbsp;what you are exactly doing). One cannot deny, that you have to put a lot of effort in setting up your pipeline at first, but the good thing is that you can use your setup for a variety of projects and learn a lot in the process. Is Jenkins a bit over the top for a small academic project? Probably, especially if you do not need to have your code run in a real environment. But even if you just need to deploy your code once every two weeks, thinking about an automated deployment process is worth the effort in our opinion.<\/p>\n<p>Additionally your professional skills will profit from knowing a thing or two about CI \/ CD concepts or Jenkins in particular, since it is more or less as famous and popular in the developer community as the Backstreet Boys in the late 90s were amongst teenagers. The functionality of Jenkins can be expanded by a&nbsp;variety of plug-ins and thus can cover almost any needs &#8211; but you have to host it by yourself. If you need to have full control over your environments and deployment process, Jenkins is the tool for you. On the downside the user interface of&nbsp;Jenkins is neither beautiful nor functional.<\/p>\n<p>All in all it&#8217;s worth it, if you regularly need to deliver a product, because the process of the deployment is greatly simplified and so is quality assurance. Once you have put in the initial effort and got to know Jenkins a little bit, it is a great tool to have.<\/p>\n<h2>An alternative to Jenkins: Travis CI<\/h2>\n<p>After evaluating the pros and cons of Jenkins we want to show you a slick alternative: <a href=\"https:\/\/travis-ci.org\/\">Travis CI<\/a>, which is by default a Software as a Service (SaaS) solution for building applications. Like&nbsp;all SaaS solutions, it tries to hide the complexity from the user and does its best to deliver as much as possible out of the box. As you can imagine, this is especially useful for smaller student projects, because the initial necessary knowledge and effort are&nbsp; reduced to a minimum. The downside is giving the responsibility to a tool you might not fully understand.&nbsp; You do not have as much control and flexibility as you would have when using Jenkins.&nbsp;If you want&nbsp;to create a simple pipeline within 30&nbsp;minutes, Travis is the right solution for you. You can find a list of the supported languages <a href=\"https:\/\/docs.travis-ci.com\/user\/getting-started\/\">here<\/a>.<\/p>\n<p>If you just need a quick tool to build your application Travis CI offers everything you need plus the possibility to deploy your code by connecting it with a deploy service of your choice. See a list of supported cloud hosting services <a href=\"https:\/\/docs.travis-ci.com\/user\/deployment\/\">here<\/a>.&nbsp;If this is not enough you can use a simple ftp-connection as well for deployment. However, the use of Travis CI assumes a premise: Using git as your version control tool. <em>Attention: It is not configurable with other version control tools!<\/em><\/p>\n<p>Since a lot of you guys will be using git in combination with Github anyway, this disadvantage should be of low significance. Travis CI offers a cool-looking&nbsp;User Interface in combination with a lot of functionality. It addresses almost every common task a developer needs to solve for automated builds and deployment.<\/p>\n<h3>Seting up a Build with Travis CI<\/h3>\n<p>We are going to connect our <a href=\"https:\/\/laravel.com\">Laravel<\/a> project with <strong>Travis CI<\/strong>. In order to do this we need to put a configuration file (<strong>.travis.yml<\/strong>) in the root folder of our application containing the&nbsp;following information:<\/p>\n<pre class=\"prettyprint lang-xml\" data-start-line=\"1\" data-visibility=\"visible\" data-highlight=\"\" data-caption=\"\">language: php\nphp:\n  - '5.6'\n  - '7.0'\n  - hhvm\n  \n  \n# Commands to be run before your environment runs.\nbefore_script:\n  - composer self-update\n  - composer install --prefer-source --no-interaction --dev\n\n# Commands you want to run that will verify your build.\nscript: phpunit<\/pre>\n<p>What we are doing&nbsp;here is to tell our application that it should be build in different environments. We want to test it for&nbsp;PHP version &#8220;5.6&#8221;, &#8220;7.0&#8221; and on &#8220;HHVM&#8221;, an open source virtual machine. Before we run our tests, we need to grab our dependencies with composer. By committing this configuration file and pushing it to Github, Travis CI automatically gets triggered to run the build job and execute the PHPUnit tests after the environment is up and running. You get an email every build by Travis containing the contributor, the state of the build and the ID of the commit. You can see the output of the console within the Travis application (see picture below).<\/p>\n<p><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/Screen-Shot-2016-02-21-at-14.43.06.png\" rel=\"attachment wp-att-432\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"432\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/02\/21\/wrap-up-seeing-the-bigger-picture-part-5\/screen-shot-2016-02-21-at-14-43-06\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/Screen-Shot-2016-02-21-at-14.43.06.png\" data-orig-size=\"2560,1410\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Interface of Travis CI containing bash output\" data-image-description=\"&lt;p&gt;Interface of Travis CI containing bash output&lt;\/p&gt;\n\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/Screen-Shot-2016-02-21-at-14.43.06-1024x564.png\" class=\"alignnone wp-image-432\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/Screen-Shot-2016-02-21-at-14.43.06-300x165.png\" alt=\"Interface of Travis CI containing bash output\" width=\"784\" height=\"431\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/Screen-Shot-2016-02-21-at-14.43.06-300x165.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/Screen-Shot-2016-02-21-at-14.43.06-768x423.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/Screen-Shot-2016-02-21-at-14.43.06-1024x564.png 1024w\" sizes=\"auto, (max-width: 784px) 100vw, 784px\" \/><\/a><\/p>\n<h3>When to use what?<\/h3>\n<p>If you want to simply build your application and deploy it in combination with a common cloud service, Travis CI is for you. During our research for the blog series we were amazed on how easy and quick it is to use. We literally were not used to get something done on the first try after numerous hours with Jenkins.&nbsp; But if you are a prospective system administrator, you will not get around of having at least basic knowledge regarding Jenkins, since you sometimes rely on having full control over your deployment process.<\/p>\n<h2>Au revoir, loyal fellows.<\/h2>\n<p>This is the end of our 5-part blog series on CI. We&nbsp;hope that we delivered a&nbsp;valuable guide on how&nbsp;to enter the world of CI and how to benefit from all its advantages. If you have any further questions, please contact us in the comment section and we will try to help you &#8211; even if it&#8217;s unrelated stuff! This is it &#8211; Jenkbird over and out.<\/p>\n<p><em>Blogpost by Thomas Derleth (td036), J\u00f6rg Einfeldt (je051), Marc Stauffer (ms445)<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kchhhhhh, Kchhhhhh, Kchhhhhhh&#8230; &#8211; Ernie on companies without CI Hello internet and welcome to the last part of our&nbsp;tutorial series about&nbsp;Continuous Integration, Code Deployment and Automated Testing with Jenkins. If you arrived at this post and have read all the others we are very proud of you, hope you enjoyed the journey and learned something [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1,659,650,651,2],"tags":[],"ppma_author":[691],"class_list":["post-382","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-devops","category-scalable-systems","category-system-designs","category-system-engineering"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":79,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2015\/12\/29\/sesame-deployment-street-continuous-integration-with-jenkins-tutorial-part-1\/","url_meta":{"origin":382,"position":0},"title":"Jenkbird \u2013 Continuous Integration with Jenkins Tutorial \u2013 Part 1","author":"Marc Stauffer","date":"29. December 2015","format":false,"excerpt":"Bad days happen to everyone, but when one happens to you, just keep doing your best and never let a bad day make you feel bad about yourself.\u201d \u2014 Big Bird about\u00a0a day with deployment problems \"Continuous Integration\" (CI) and \"Continuous Delivery\" (CD) are topics every modern software developer should\u2026","rel":"","context":"In &quot;DevOps&quot;","block_context":{"text":"DevOps","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/devops\/"},"img":{"alt_text":"Jenkbird","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2015\/12\/Yhfrwka16hgJOdDTrwFaVPWfBhzA72MWv9qwzj-tvdA-217x300.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":366,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/02\/20\/jenkbird-quality-gates-testing-part-4\/","url_meta":{"origin":382,"position":1},"title":"Jenkbird \u2013\u00a0Quality &#038; Testing \u2013\u00a0Part 4","author":"Thomas Derleth","date":"20. February 2016","format":false,"excerpt":"Love and testing can be cruel. -\u00a0Bert on\u00a0the difficulties in life Quality and Testing \u2013 one of the most discussed\u00a0and valuable topics software engineering has to offer. This blog post will cover all the relevant stuff related to\u00a0quality and testing in regard to Continuous Integration and Jenkins. We will show\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/reliability_pic1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/reliability_pic1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/reliability_pic1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/reliability_pic1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/reliability_pic1.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/02\/reliability_pic1.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1758,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2017\/01\/12\/snakes-exploring-pipelines-a-system-engineering-and-management-project-5\/","url_meta":{"origin":382,"position":2},"title":"Snakes exploring Pipelines &#8211; A \u201cSystem Engineering and Management\u201d Project","author":"Yann Loic Philippczyk","date":"12. January 2017","format":false,"excerpt":"Part 4: Jenkins and Wrap Up This series of blog entries describes a student project focused on developing an application by using methods like pair programming, test driven development and deployment pipelines. Our first blog entry for this year will at the same time be the final one for this\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/01\/jenkins_code-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/01\/jenkins_code-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/01\/jenkins_code-1.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":26965,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2025\/02\/28\/wie-baut-man-eine-ci-cd-pipeline-mit-jenkins-auf\/","url_meta":{"origin":382,"position":3},"title":"Wie baut man eine CI\/CD Pipeline mit Jenkins auf?","author":"Cedric Gottschalk","date":"28. February 2025","format":false,"excerpt":"Im Rahmen der Vorlesung \"System Engineering und Management (143101a)\" haben wir es uns zum Ziel gesetzt, mehr \u00fcber CI\/CD Pipelines zu lernen und eine eigene Pipeline f\u00fcr ein kleines Projekt aufzusetzen. Wir haben uns dabei entschieden, Jenkins f\u00fcr die CI\/CD Pipeline einzusetzen und eine kleine ToDo App mit dem Framework\u2026","rel":"","context":"In &quot;System Engineering&quot;","block_context":{"text":"System Engineering","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/system-engineering\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/ToDo-List-CICD-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/ToDo-List-CICD-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/ToDo-List-CICD-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/ToDo-List-CICD-1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/ToDo-List-CICD-1.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/ToDo-List-CICD-1.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":3314,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2018\/03\/28\/continuous-integration-deployment-for-a-cross-platform-application-part-1\/","url_meta":{"origin":382,"position":4},"title":"Continuous Integration &#038; Deployment for a Cross-Platform Application &#8211; Part 1","author":"Tobias Eberle, Marco Maisel, Tobias Staib, Mario Walz","date":"28. March 2018","format":false,"excerpt":"When we started the project \"Flora CI\" for the lecture \"System Engineering\", we planned to deal with Continuous Integration. As an important aspect of software engineering all of us have previously been involved in projects where code of developers had to be merged and builds had to be automated somehow.\u2026","rel":"","context":"In &quot;DevOps&quot;","block_context":{"text":"DevOps","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/devops\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/03\/flora-app.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/03\/flora-app.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/03\/flora-app.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/03\/flora-app.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/03\/flora-app.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/03\/flora-app.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1984,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2017\/03\/09\/building-an-hdm-alexa-skill-part-4\/","url_meta":{"origin":382,"position":5},"title":"Building an HdM Alexa Skill &#8211; Part 4","author":"Malte Vollmerhausen","date":"9. March 2017","format":false,"excerpt":"We present our own HdM Alexa Skill and share the experience we gained throughout this project. This time: Automating tests and deployment with Continuous Integration via Jenkins.","rel":"","context":"In &quot;Student Projects&quot;","block_context":{"text":"Student Projects","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/student-projects\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/02\/jenkins.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/02\/jenkins.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/02\/jenkins.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/02\/jenkins.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/02\/jenkins.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/02\/jenkins.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":691,"user_id":11,"is_guest":0,"slug":"je051","display_name":"J\u00f6rg Einfeldt","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/a9c90222aff9d0c74c3c5634b74ead017644b533154f1f72047c3cdb73c3dbe2?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/382","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=382"}],"version-history":[{"count":20,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/382\/revisions"}],"predecessor-version":[{"id":24661,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/382\/revisions\/24661"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=382"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}