{"id":1734,"date":"2020-09-16T12:21:48","date_gmt":"2020-09-16T10:21:48","guid":{"rendered":"https:\/\/zen-cori.138-201-132-86.plesk.page\/?p=1734"},"modified":"2023-02-06T12:42:00","modified_gmt":"2023-02-06T10:42:00","slug":"how-to-set-up-jenkins-from-scratch-on-your-own-pc-in-5-minutes","status":"publish","type":"post","link":"https:\/\/www.btc-embedded.com\/de\/how-to-set-up-jenkins-from-scratch-on-your-own-pc-in-5-minutes\/","title":{"rendered":"How to Set Up Jenkins From Scratch on Your Own PC in 5 Minutes"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1734\" class=\"elementor elementor-1734\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3b5f0493 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3b5f0493\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-559a247a\" data-id=\"559a247a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-903d4a7 elementor-widget elementor-widget-heading\" data-id=\"903d4a7\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Optimization<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d83c847 elementor-widget elementor-widget-text-editor\" data-id=\"d83c847\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><em>&#8222;We know that Jenkins is great and all but we&#8217;re not some cloud-based start up. It would take ages to have server infrastructure available only to realize that it doesn&#8217;t support our workflows and tools after all.&#8220;<\/em><\/p><p>Even though Jenkins is rapidly growing in automotive embedded software development I hear a lot of stories like the one above. This tells me that:<\/p><ol><li>The threshold to get started with Jenkins is conceived to be quite high<\/li><li>People prefer not to involve the IT department if there&#8217;s another way<\/li><li>A certain level of confidence can only be aquired by hands-on experience<\/li><\/ol><p><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:3}}\">In contrast to many other examples I avoided the use of the command line because many Windows users are not as comfortable with command line interfaces as Linux users. This article requires no prior knowledge of Jenkins but assumes that you have an internet connection and know the basics of using source code management systems (scm) like Git, Subversion, Mercurial, TFS or similar. If SCM terms like commit \/ checkout \/ clone \/ push \/ pull don&#8217;t mean anything to you I recommend to do some research on the topic. The <a href=\"https:\/\/git-scm.com\/book\/en\/v2\/Getting-Started-About-Version-Control\" target=\"_blank\" rel=\"noopener\">getting started page<\/a> from Git explains the concept pretty nicely.<\/span><\/p><p><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:3}}\">In order to get have Jenkins running on our own laptop we will perform the following three simple <\/span>steps:<\/p><ol><li>Install the required software<br \/><ul><li>Git as the scm tool<\/li><li>Tortoise to have a user interface to interact with Git<\/li><li>Jenkins<\/li><\/ul><\/li><li>Create a local git repository<\/li><li>Create and run a pipeline<\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7c099a8 elementor-widget elementor-widget-heading\" data-id=\"7c099a8\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Installations<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9018ea2 elementor-widget elementor-widget-heading\" data-id=\"9018ea2\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Git<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a1ff07f elementor-widget elementor-widget-text-editor\" data-id=\"a1ff07f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">We will use a git repository to store our files<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Git can be downloaded from <a href=\"https:\/\/git-scm.com\/download\" target=\"_blank\" rel=\"noopener\">https:\/\/git-scm.com\/download<\/a> <\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">There&#8217;s nothing special to consider during the installtion process<\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-27e953f elementor-widget elementor-widget-heading\" data-id=\"27e953f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Tortoise<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6cdaf06 elementor-widget elementor-widget-text-editor\" data-id=\"6cdaf06\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">In order to create a local git repository and to commit changes we will use Tortoise<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Tortoise serves as an alternative to using the git command line interface<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">It can be downloaded from <a href=\"https:\/\/tortoisegit.org\/download\/\" target=\"_blank\" rel=\"noopener\">https:\/\/tortoisegit.org\/download<\/a><\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Be sure to also finish the &#8222;First Start Wizard&#8220; which appears directly after the installation<\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8f3060b elementor-widget elementor-widget-heading\" data-id=\"8f3060b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Jenkins<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6ec190f elementor-widget elementor-widget-text-editor\" data-id=\"6ec190f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li>You can get the Jenkins installer for Windows from\u00a0<a href=\"http:\/\/mirrors.jenkins-ci.org\/windows-stable\/latest\" target=\"_blank\" rel=\"noopener\">http:\/\/mirrors.jenkins-ci.org\/windows-stable\/latest<\/a><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100,&quot;indent&quot;:1}}\">Run the installer (*.msi) and follow the instructions<\/span><ul><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100,&quot;indent&quot;:2}}\">Provide the credentials of your Windows user to allow Jenkins to run tasks as your user. <\/span><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100,&quot;indent&quot;:2}}\">The alternative option &#8222;Local System&#8220; has a lot of drawbacks and will is bound to cause access right issues at some point.<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100,&quot;indent&quot;:2}}\">Most people alreay have a Java runtime installed. If that&#8217;s not the case for you you can get Java from <a href=\"https:\/\/www.java.com\/en\/download\/win10.jsp\" target=\"_blank\" rel=\"noopener\">https:\/\/www.java.com\/en\/download\/win10.jsp<\/a> <\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100,&quot;indent&quot;:2}}\">The installation process will open a browser window at <\/span><span data-tt=\"{&quot;underline&quot;:1,&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100,&quot;indent&quot;:2}}\"><a href=\"http:\/\/localhost:8080\/\" target=\"_blank\" rel=\"noopener\">http:\/\/localhost:8080<\/a><\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100,&quot;indent&quot;:2}}\">This address can be used to access your own Jenkins server which is now running locally on your machine. On that page, navigate through the initial steps to complete the setup.<\/span><\/li><\/ul><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100,&quot;indent&quot;:2}}\">In addition, let&#8217;s install the Blue Ocean plugin which offers a much more modern user interface:<\/span><ul><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100,&quot;indent&quot;:2}}\">Go to the menu on the upper left side of the page<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100,&quot;indent&quot;:2}}\">Manage Jenkins &gt; Manage Plugins<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100,&quot;indent&quot;:2}}\">Click on the &#8222;Avaiable&#8220; tab to view plugins available for installation<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100,&quot;indent&quot;:2}}\">Type &#8222;blue ocean&#8220; into the search bar and scroll to the end of the list<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100,&quot;indent&quot;:2}}\">Tick the checkbox of the &#8222;Blue Ocean&#8220; plugin and click the &#8222;Install without restart&#8220; button on the bottom of the page<\/span><\/li><\/ul><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-da6f93a elementor-widget elementor-widget-heading\" data-id=\"da6f93a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Setting up a git repository<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fa217fc elementor-widget elementor-widget-text-editor\" data-id=\"fa217fc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">We will make use of <a href=\"https:\/\/git-scm.com\/\" target=\"_blank\" rel=\"noopener\">git<\/a> to have a local source code repository but you can replace that by any other source code management system (Subversion, TFS, etc.). A source code repository is the central container for any continuous delivery (CD) pipeline. One of the core principles of designing a solid CD pipeline is to make the steps work in isolation. It shouldn&#8217;t matter where your code is built and tested. However, what you can still rely on is the internal structure of the files in your source code repository.<\/span><\/p><p><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">We&#8217;ll create a local repo on you machine that you can freely use for experiments without impacting existing production systems:<\/span><\/p><ul><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Create a folder that will serve as your git repository, e.g. <code>C:\\Users\\yourname\\my-repository<\/code><\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Go into that folder and do a right click<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Select the context menu entry <code>Create Git repository here <\/code><\/span><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">and confirm the next dialog (no need to make it bare)<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">&#8230;and that&#8217;s it, your git repository is ready to receive commits!<code><\/code><\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7303e71 elementor-widget elementor-widget-heading\" data-id=\"7303e71\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Creating &amp; Running the Pipeline<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-79c29f9 elementor-widget elementor-widget-text-editor\" data-id=\"79c29f9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span data-tt=\"{\">We want to add a Pipeline that checks out your repo and performs a simple check (see next step)<\/span><\/p><ul><li><span data-tt=\"{\">Create a simple pipeline as depicted in the code sample below and save it to your folder as a file called &#8222;Jenkinsfile&#8220; (no file extension)<\/span><\/li><li><span data-tt=\"{\">The pipeline has the following 3 stages:<\/span><ul><li><span data-tt=\"{\">Checkout our files from the scm repo (git)<\/span><\/li><li><span data-tt=\"{\">Check for the existance of a file called &#8222;my-code.c&#8220; and <\/span><span data-tt=\"{\">mark the build as UNSTABLE if the file does not exist<\/span><\/li><li><span data-tt=\"{\">Print a message (this is only executed if the build has not been marked as UNSTABLE before)<\/span><\/li><\/ul><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c70924e elementor-widget elementor-widget-image\" data-id=\"c70924e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"702\" src=\"https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/09\/Bildschirmfoto-2022-06-16-um-12.26.21.png\" class=\"attachment-large size-large wp-image-1738\" alt=\"Example of a Jenkins Pipeline Script\" srcset=\"https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/09\/Bildschirmfoto-2022-06-16-um-12.26.21.png 1760w, https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/09\/Bildschirmfoto-2022-06-16-um-12.26.21-768x674.png 768w, https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/09\/Bildschirmfoto-2022-06-16-um-12.26.21-1536x1347.png 1536w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef2476b elementor-widget elementor-widget-text-editor\" data-id=\"ef2476b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Save the file and perform a right-click in your repository folder<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Go into that folder and do a right click on <code>Git Commit &gt; \"master\"<\/code><\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Add a comment and commit the Jenkinsfile<\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-295275b elementor-widget elementor-widget-heading\" data-id=\"295275b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Hook it up to Jenkins<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-190a8e8 elementor-widget elementor-widget-text-editor\" data-id=\"190a8e8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Since the Jenkinsfile already contains every detail about which steps to execute it&#8217;s easy to add this to Jenkins as a Pipeline job. <\/span><\/p><ul><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Click on &#8222;New Item&#8220;<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Give it a name and select the &#8222;Pipeline&#8220; type<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">All we need to tell Jenkins is where to find the Jenkinsfile<\/span><ul><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Select Git as the SCM<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Enter the repository path (e.g. <code>C:\\Users\\yourname\\my-repository<\/code> )<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Click <code>Save<\/code><\/span><\/li><\/ul><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9a9f5a0 elementor-widget elementor-widget-heading\" data-id=\"9a9f5a0\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Running the Pipeline<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-be1858c elementor-widget elementor-widget-text-editor\" data-id=\"be1858c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Before we run the pipeline let&#8217;s switch over to the Blue Ocean UI (see screenshot). Although the Blue Ocean UI looks much nicer it&#8217;s easy to get lost if you&#8217;re used to the classic UI. You can always return to that by clicking onto the -&gt; button on the upper right corner (&#8222;Go to classic&#8220;).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5013b2c elementor-widget elementor-widget-image\" data-id=\"5013b2c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"184\" height=\"368\" src=\"https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/09\/nav_blueocean-1920x1920-b45.png\" class=\"attachment-large size-large wp-image-1741\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8e7f002 elementor-widget elementor-widget-text-editor\" data-id=\"8e7f002\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">select the Pipeline item that you just created and click &#8222;Start&#8220; to kick off the first run<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">The result will look like this:<\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0ce78e5 elementor-widget elementor-widget-image\" data-id=\"0ce78e5\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"124\" src=\"https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/09\/Bildschirmfoto-2022-06-20-um-11.24.54.png\" class=\"attachment-large size-large wp-image-3054\" alt=\"\" srcset=\"https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/09\/Bildschirmfoto-2022-06-20-um-11.24.54.png 1058w, https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/09\/Bildschirmfoto-2022-06-20-um-11.24.54-768x119.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2757f3c elementor-widget elementor-widget-text-editor\" data-id=\"2757f3c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">The build is marked as <strong>UNSTABLE<\/strong> because the file &#8222;my-code.c&#8220; doesn&#8217;t exist<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">The &#8222;Deploy&#8220; stage is skipped due to that<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">Add Code: create new file (e.g. &#8222;my-code.c&#8220;) and run Pipeline again -&gt; <strong>SUCCESS<\/strong><\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c10974c elementor-widget elementor-widget-image\" data-id=\"c10974c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"89\" src=\"https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/09\/Bildschirmfoto-2022-06-20-um-11.25.06.png\" class=\"attachment-large size-large wp-image-3057\" alt=\"\" srcset=\"https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/09\/Bildschirmfoto-2022-06-20-um-11.25.06.png 1060w, https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/09\/Bildschirmfoto-2022-06-20-um-11.25.06-768x85.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-debc5f5 elementor-widget elementor-widget-text-editor\" data-id=\"debc5f5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">The build is no longer marked as UNSTABLE because the file &#8222;my-code.c&#8220; now exists<\/span><\/li><li><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">The &#8222;Deploy&#8220; stage is no longer skipped<\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-46bd8d4 elementor-widget elementor-widget-heading\" data-id=\"46bd8d4\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Further thoughts<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d70532a elementor-widget elementor-widget-text-editor\" data-id=\"d70532a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">You might be asking yourself why we only needed to install one piece of software for Jenkins. Isn&#8217;t Jenkins supposed to run in a client-server setting? It&#8217;s true that there&#8217;s usually one main server* which orchestrates everything and provides the web ui and a couple of agent machines that take over the actual workload. However, the Jenkins master (which is what we installed) can also take over work. Although this is not recommended for production systems it&#8217;s a great way to have a small local setup to use for experiments.<\/span><\/p><p><em><span data-tt=\"{&quot;paragraphStyle&quot;:{&quot;alignment&quot;:4,&quot;style&quot;:100}}\">*there could be more than one &#8211; but let&#8217;s ignore that for now<\/span><\/em><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3ca3ae4 elementor-widget elementor-widget-heading\" data-id=\"3ca3ae4\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Next Steps<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3fae91d elementor-widget elementor-widget-text-editor\" data-id=\"3fae91d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>You have now successfully installed Jenkins on your local PC or laptop and know how to create local repositories that you can commit files to. Use this to your advantage and try to create some prototypes that support workflows which are relevant for your team&#8217;s software build. I hope this article motivates you to get started with Jenkins to get some hands on experience.<\/p><p>Check out\u00a0<a href=\"https:\/\/www.jenkins.io\/doc\/book\/pipeline\/getting-started\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.jenkins.io\/doc\/book\/pipeline\/getting-started<\/a>\u00a0to learn more about the syntax and available steps for your Pipeline (Jenkinsfile) or reach out to the community in case you need help with something more specific.<\/p><p>And please also watch our video tutorial showing the main steps of this process:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ce51a45 elementor-widget elementor-widget-video\" data-id=\"ce51a45\" data-element_type=\"widget\" data-settings=\"{&quot;youtube_url&quot;:&quot;https:\\\/\\\/www.youtube.com\\\/watch?v=JOrTwd6oR9g&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-wrapper elementor-open-inline\">\n\t\t\t<div class=\"elementor-video\"><\/div>\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Optimization &#8222;We know that Jenkins is great and all but we&#8217;re not some cloud-based start up. It would take ages to have server infrastructure available only to realize that it doesn&#8217;t support our workflows and tools after all.&#8220; Even though Jenkins is rapidly growing in automotive embedded software development I hear a lot of stories [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":9035,"comment_status":"open","ping_status":"closed","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[55,54],"product":[],"use_cases":[],"class_list":["post-1734","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-ci-cd","tag-jenkins"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/posts\/1734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/comments?post=1734"}],"version-history":[{"count":0,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/posts\/1734\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/media\/9035"}],"wp:attachment":[{"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/media?parent=1734"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/categories?post=1734"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/tags?post=1734"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/product?post=1734"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/use_cases?post=1734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}