{"id":732,"date":"2018-09-01T10:34:42","date_gmt":"2018-09-01T09:34:42","guid":{"rendered":"http:\/\/louis.hatier.me\/blog\/?p=732"},"modified":"2018-09-01T11:42:52","modified_gmt":"2018-09-01T10:42:52","slug":"jenkins-pipeline-et-blue-ocean","status":"publish","type":"post","link":"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/","title":{"rendered":"Jenkins : Pipeline et Blue Ocean"},"content":{"rendered":"<p><a href=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean.png\" data-rel=\"lightbox-gallery-iEvBggsX\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-733 alignleft\" src=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean.png\" alt=\"Logo Jenkins Blue Ocean\" width=\"323\" height=\"151\" srcset=\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean.png 880w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean-300x140.png 300w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean-768x359.png 768w\" sizes=\"auto, (max-width: 323px) 100vw, 323px\" \/><\/a><a href=\"https:\/\/fr.wikipedia.org\/wiki\/Jenkins_(logiciel)\" target=\"_blank\" rel=\"noopener\">Jenkins<\/a> est depuis plusieurs ann\u00e9es l\u2019outil d\u2019int\u00e9gration continue le plus r\u00e9pandu quelque soit le type de projet informatique.<\/p>\n<p>Plus r\u00e9cemment, le plugin Blue Ocean est pass\u00e9 de version beta \u00e0 la version 1, offrant une interface beaucoup plus user-friendly, et la mise en avant des jobs de type Pipeline (versus les jobs de type Freestyle).<\/p>\n<p><!--more--><\/p>\n<h2>Job Freestyle<\/h2>\n<p>Pour ceux qui souhaitent utiliser Jenkins en mode Freestyle au sein d\u2019un projet PHP, Sebastian Bergmann (cr\u00e9ateur de PHPUnit) met \u00e0 disposition un template r\u00e9utilisable qui permet d&rsquo;avoir les \u00e9tapes du build pr\u00e9-param\u00e9tr\u00e9es (v\u00e9rification de code, tests unitaires) : voir le <a href=\"http:\/\/jenkins-php.org\/\" target=\"_blank\" rel=\"noopener\">site d\u00e9di\u00e9<\/a>.<\/p>\n<h2>Pipeline<\/h2>\n<p>Ce type de job permet de d\u00e9finir un encha\u00eenement de t\u00e2ches complexes.<br \/>\n<a href=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/jenkins-pipeline.png\" data-rel=\"lightbox-gallery-iEvBggsX\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-735\" src=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/jenkins-pipeline.png\" alt=\"Jenkins Pipeline\" width=\"841\" height=\"308\" srcset=\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/jenkins-pipeline.png 841w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/jenkins-pipeline-300x110.png 300w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/jenkins-pipeline-768x281.png 768w\" sizes=\"auto, (max-width: 841px) 100vw, 841px\" \/><\/a><\/p>\n<p>Il est possible de cr\u00e9er un Pipeline depuis un fichier <em>Jenkinsfile<\/em>\u00a0d\u00e9pos\u00e9 \u00e0 la racine du projet versionn\u00e9, ou depuis l&rsquo;interface de Jenkins : \u00ab\u00a0New Item &gt; Pipeline\u00a0\u00bb.<br \/>\nLe fichier peut \u00eatre nomm\u00e9 diff\u00e9remment mais il faudra pr\u00e9ciser le nouveau nom \u00e0 Jenkins, exemple : <em>Jenkinsfile.groovy<\/em> (pour avoir la coloration syntaxique).<\/p>\n<p><strong>Vid\u00e9o explicative<\/strong><br \/>\n<iframe loading=\"lazy\" src=\"https:\/\/www.youtube-nocookie.com\/embed\/k_fVlU1FwP4?rel=0\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<h2>Ex\u00e9cuter le Pipeline automatiquement<\/h2>\n<p>Il est int\u00e9ressant d\u2019utiliser un webhook afin que votre <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Logiciel_de_gestion_de_versions\" target=\"_blank\" rel=\"noopener\">VCS<\/a> trigger l\u2019\u00e9xecution du Pipeline suite \u00e0 une modification de code.<br \/>\nC\u2019est plus performant que de demander \u00e0 Jenkins de scruter un d\u00e9p\u00f4t Git toutes les minutes.<\/p>\n<h2>Syntaxe<\/h2>\n<p>La <a href=\"https:\/\/jenkins.io\/doc\/book\/pipeline\/\" target=\"_blank\" rel=\"noopener\">syntaxe<\/a> est assez clair et compr\u00e9hensible, certaines directives sont pr\u00e9sentes <code>sh<\/code>, <code>git<\/code>, <code>echo<\/code>, il est possible de d\u00e9finir des variables <code>def myVar<\/code>, ou encore d\u2019utiliser un <code>try\/catch\/finally<\/code>.<br \/>\nCertaines fonctions sp\u00e9cifiques existent \u00e9galement comme : <code>slackSend<\/code> (envoi un message dans un channel Slack) ou encore <code>updateGitlabCommitStatus<\/code> (modifie le statut du Pipeline associ\u00e9 au commit dans GitLab).<\/p>\n<p><a href=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/gitlab-jenkins-pipeline.png\" data-rel=\"lightbox-gallery-iEvBggsX\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-737\" src=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/gitlab-jenkins-pipeline.png\" alt=\"GitLab Jenkins Pipeline\" width=\"451\" height=\"227\" srcset=\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/gitlab-jenkins-pipeline.png 677w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/gitlab-jenkins-pipeline-300x151.png 300w\" sizes=\"auto, (max-width: 451px) 100vw, 451px\" \/><\/a><br \/>\nLa variable <code>currentBuild.result<\/code> peut \u00eatre assign\u00e9 tout au long du Pipeline (<em>SUCCESS<\/em>, <em>FAILURE<\/em> etc.) afin de changer le statut du build.<br \/>\nIl est int\u00e9ressant de pouvoir placer les instructions dans des <em>stage<\/em> diff\u00e9rents pour s\u00e9parer les grandes \u00e9tapes, et d\u2019en ex\u00e9cuter en <em>parallel<\/em> pour gagner du temps.<\/p>\n<h2>Exemple de Jenkinsfile<\/h2>\n<pre><code class=\"groovy\">#!groovy\r\nnode {\r\n    currentBuild.result = \"SUCCESS\"\r\n\r\n    try {\r\n        stage('Init') {\r\n            git branch: 'develop', credentialsId: 'xxxxxxxxxxx', url: 'git@vcs.my.company:repo.git'\r\n            sh \"bash .\/bin\/init.sh ${env.WORKSPACE}\"\r\n        }\r\n        stage('Tests Back') {\r\n            parallel (\r\n                PHPCs: { sh \"phpcs --standard=PSR2 --extensions=php\" },\r\n                PHPUnit: { ${env.WORKSPACE}\/vendor\/bin\/phpunit },\r\n                PHPLint: { ${env.WORKSPACE}\/vendor\/bin\/phplint },\r\n                PHPMD: { ${env.WORKSPACE}\/vendor\/bin\/phpmd },\r\n                Behat: { ${env.WORKSPACE}\/vendor\/bin\/behat }\r\n            )\r\n        }\r\n        stage('Tests Front') {\r\n            parallel (\r\n                Sass: { sh \"yarn sasslint\" },\r\n                JS: { sh \"yarn eslint\" }\r\n            )\r\n        }\r\n        stage('End') {\r\n            parallel (\r\n                Slack: { slackSend color: 'good', message: \"${env.JOB_NAME} [${env.BUILD_NUMBER}]: Successful (${env.BUILD_URL})\" },\r\n                GitLab: { updateGitlabCommitStatus(name: 'build', state: 'success') }\r\n            )\r\n        }\r\n    } catch (err) {\r\n        currentBuild.result = \"FAILURE\"\r\n        slackSend color: 'danger', message: \"${env.JOB_NAME} [${env.BUILD_NUMBER}]: Failed (${env.BUILD_URL})\"\r\n        updateGitlabCommitStatus(name: 'build', state: 'failed')\r\n        throw err\r\n    } finally {\r\n        sh 'do some other stuff'\r\n    }\r\n}\r\n<\/code><\/pre>\n<h2>Exemple de r\u00e9sultat<br \/>\n<a href=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/jenkins-pipeline-success.png\" data-rel=\"lightbox-gallery-iEvBggsX\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-736\" src=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/jenkins-pipeline-success.png\" alt=\"Jenkins Pipeline success\" width=\"989\" height=\"380\" srcset=\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/jenkins-pipeline-success.png 989w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/jenkins-pipeline-success-300x115.png 300w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/jenkins-pipeline-success-768x295.png 768w\" sizes=\"auto, (max-width: 989px) 100vw, 989px\" \/><\/a><\/h2>\n<h2>\u00c9v\u00e9nement autour de Jenkins en France<\/h2>\n<p>Nice, octobre 2018 : <a href=\"https:\/\/www.cloudbees.com\/devops-world\/nice\" target=\"_blank\" rel=\"noopener\">https:\/\/www.cloudbees.com\/devops-world\/nice<\/a><\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img decoding=\"async\" src=\"https:\/\/static.hupso.com\/share\/buttons\/dot.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"pinterest\",\"email\",\"linkedin\");var hupso_counters_lang = \"en_US\";var hupso_image_folder_url = \"\";var hupso_url_c=\"\";var hupso_title_c=\"Jenkins%20%3A%20Pipeline%20et%20Blue%20Ocean\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"excerpt":{"rendered":"<p>Jenkins est depuis plusieurs ann\u00e9es l\u2019outil d\u2019int\u00e9gration continue le plus r\u00e9pandu quelque soit le type de projet informatique. Plus r\u00e9cemment, le plugin Blue Ocean est pass\u00e9 de version beta \u00e0 la version 1, offrant une interface beaucoup plus user-friendly, et la mise en avant des jobs de type Pipeline (versus les jobs de type Freestyle).<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[68],"tags":[72,30,70,63,57,67,51],"class_list":["post-732","post","type-post","status-publish","format-standard","hentry","category-ci-cd","tag-behat","tag-git","tag-jenkins","tag-open-source","tag-php","tag-phpunit","tag-sass"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Jenkins : Pipeline et Blue Ocean - Melting Poutre<\/title>\n<meta name=\"description\" content=\"Utilisation de Pipeline avec Jenkins et le plugin Blue Ocean\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Jenkins : Pipeline et Blue Ocean - Melting Poutre\" \/>\n<meta property=\"og:description\" content=\"Utilisation de Pipeline avec Jenkins et le plugin Blue Ocean\" \/>\n<meta property=\"og:url\" content=\"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/\" \/>\n<meta property=\"og:site_name\" content=\"Melting Poutre\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-01T09:34:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-09-01T10:42:52+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean.png\" \/>\n<meta name=\"author\" content=\"Louis Hatier\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Louis Hatier\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/\"},\"author\":{\"name\":\"Louis Hatier\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11\"},\"headline\":\"Jenkins : Pipeline et Blue Ocean\",\"datePublished\":\"2018-09-01T09:34:42+00:00\",\"dateModified\":\"2018-09-01T10:42:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/\"},\"wordCount\":357,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11\"},\"image\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean.png\",\"keywords\":[\"Behat\",\"Git\",\"Jenkins\",\"Open source\",\"PHP\",\"PHPUnit\",\"Sass\"],\"articleSection\":[\"CI\/CD\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/\",\"url\":\"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/\",\"name\":\"Jenkins : Pipeline et Blue Ocean - Melting Poutre\",\"isPartOf\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean.png\",\"datePublished\":\"2018-09-01T09:34:42+00:00\",\"dateModified\":\"2018-09-01T10:42:52+00:00\",\"description\":\"Utilisation de Pipeline avec Jenkins et le plugin Blue Ocean\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/#primaryimage\",\"url\":\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean.png\",\"contentUrl\":\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean.png\"},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/#website\",\"url\":\"https:\/\/louis.hatier.me\/blog\/\",\"name\":\"Melting Poutre\",\"description\":\"Du web et d&#039;autres choses\",\"publisher\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/louis.hatier.me\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11\",\"name\":\"Louis Hatier\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cd8d107ede5a4ec340326655e74a00ca62b02e41a02442f961c36f085aa89942?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cd8d107ede5a4ec340326655e74a00ca62b02e41a02442f961c36f085aa89942?s=96&d=mm&r=g\",\"caption\":\"Louis Hatier\"},\"logo\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/louis.hatier.me\",\"https:\/\/www.linkedin.com\/in\/louishatier\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Jenkins : Pipeline et Blue Ocean - Melting Poutre","description":"Utilisation de Pipeline avec Jenkins et le plugin Blue Ocean","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/","og_locale":"fr_FR","og_type":"article","og_title":"Jenkins : Pipeline et Blue Ocean - Melting Poutre","og_description":"Utilisation de Pipeline avec Jenkins et le plugin Blue Ocean","og_url":"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/","og_site_name":"Melting Poutre","article_published_time":"2018-09-01T09:34:42+00:00","article_modified_time":"2018-09-01T10:42:52+00:00","og_image":[{"url":"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean.png","type":"","width":"","height":""}],"author":"Louis Hatier","twitter_misc":{"\u00c9crit par":"Louis Hatier","Dur\u00e9e de lecture estim\u00e9e":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/#article","isPartOf":{"@id":"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/"},"author":{"name":"Louis Hatier","@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11"},"headline":"Jenkins : Pipeline et Blue Ocean","datePublished":"2018-09-01T09:34:42+00:00","dateModified":"2018-09-01T10:42:52+00:00","mainEntityOfPage":{"@id":"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/"},"wordCount":357,"commentCount":0,"publisher":{"@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11"},"image":{"@id":"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/#primaryimage"},"thumbnailUrl":"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean.png","keywords":["Behat","Git","Jenkins","Open source","PHP","PHPUnit","Sass"],"articleSection":["CI\/CD"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/","url":"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/","name":"Jenkins : Pipeline et Blue Ocean - Melting Poutre","isPartOf":{"@id":"https:\/\/louis.hatier.me\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/#primaryimage"},"image":{"@id":"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/#primaryimage"},"thumbnailUrl":"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean.png","datePublished":"2018-09-01T09:34:42+00:00","dateModified":"2018-09-01T10:42:52+00:00","description":"Utilisation de Pipeline avec Jenkins et le plugin Blue Ocean","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/louis.hatier.me\/blog\/jenkins-pipeline-et-blue-ocean\/#primaryimage","url":"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean.png","contentUrl":"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/logo-jenkins-blue-ocean.png"},{"@type":"WebSite","@id":"https:\/\/louis.hatier.me\/blog\/#website","url":"https:\/\/louis.hatier.me\/blog\/","name":"Melting Poutre","description":"Du web et d&#039;autres choses","publisher":{"@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/louis.hatier.me\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":["Person","Organization"],"@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11","name":"Louis Hatier","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cd8d107ede5a4ec340326655e74a00ca62b02e41a02442f961c36f085aa89942?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cd8d107ede5a4ec340326655e74a00ca62b02e41a02442f961c36f085aa89942?s=96&d=mm&r=g","caption":"Louis Hatier"},"logo":{"@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/louis.hatier.me","https:\/\/www.linkedin.com\/in\/louishatier\/"]}]}},"_links":{"self":[{"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/posts\/732","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/comments?post=732"}],"version-history":[{"count":4,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/posts\/732\/revisions"}],"predecessor-version":[{"id":741,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/posts\/732\/revisions\/741"}],"wp:attachment":[{"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/media?parent=732"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/categories?post=732"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/tags?post=732"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}