{"id":688,"date":"2018-08-20T20:13:19","date_gmt":"2018-08-20T19:13:19","guid":{"rendered":"http:\/\/louis.hatier.me\/blog\/?p=688"},"modified":"2018-08-31T12:12:13","modified_gmt":"2018-08-31T11:12:13","slug":"satis-gestionnaire-de-packages-prives","status":"publish","type":"post","link":"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/","title":{"rendered":"Satis : gestionnaire de packages priv\u00e9s"},"content":{"rendered":"<p><a href=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen.png\" data-rel=\"lightbox-gallery-HLDz2MmQ\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-689 alignleft\" src=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen.png\" alt=\"Composer screen\" width=\"207\" height=\"207\" srcset=\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen.png 400w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen-150x150.png 150w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen-300x300.png 300w\" sizes=\"auto, (max-width: 207px) 100vw, 207px\" \/><\/a><a href=\"https:\/\/getcomposer.org\/doc\/articles\/handling-private-packages-with-satis.md\" target=\"_blank\" rel=\"noopener\">Composer<\/a> pr\u00e9sente deux outils pour g\u00e9rer les packages priv\u00e9s : Private Packagist (payant) et Satis.<\/p>\n<p><a href=\"https:\/\/github.com\/composer\/satis\" target=\"_blank\" rel=\"noopener\">Satis<\/a> est un gestionnaire open source de packages comme composer.<\/p>\n<p>Il permet de stocker des packages priv\u00e9s (pour une entreprise par exemple), et de les rendre accessible via composer.<\/p>\n<p>Une fois le paquet install\u00e9 (suivre la documentation), il faut configurer les repository Git que l\u2019on souhaite rendre disponibles.<br \/>\nIls doivent \u00eatre <em>composer-compatible<\/em> (disposer d\u2019un fichier <code>composer.json<\/code> \u00e0 la racine du projet) et avoir acc\u00e8s au repository Git (mettre le repository public ou g\u00e9rer un compte authentifi\u00e9).<\/p>\n<p><!--more--><\/p>\n<pre><code class=\"no-highlight\">{\r\n    \"name\": \"utils\/fileloader\",\r\n    \"type\": \"library\",\r\n    \"description\": \"Permet de charger n'importe quel type de fichier\"\r\n}\r\n<\/code><\/pre>\n<p>Il faut ensuite pr\u00e9ciser \u00e0 Satis quels repository scruter, cela se fait via le fichier <code>satis.json<\/code><\/p>\n<pre><code class=\"no-highlight\">{\r\n    \"name\": \"My Company Packages\",\r\n    \"homepage\": \"http:\/\/packages.my.company\",\r\n    \"repositories\": [\r\n        { \"type\": \"vcs\", \"url\": \"git@vcs.my.company:utils\/fileloader.git\" },\r\n        { \"type\": \"vcs\", \"url\": \"git@vcs.my.company:utils\/exporter.git\" },\r\n        { \"type\": \"vcs\", \"url\": \"git@vcs.my.company:data\/mock.git\" }\r\n    ],\r\n    \"require-all\": true\r\n}\r\n<\/code><\/pre>\n<h2>Interface web<\/h2>\n<p>Il existe une commande qui permet de g\u00e9n\u00e9rer une interface web de vos packages disponibles :<\/p>\n<pre><code class=\"no-highlight\">php \/var\/www\/packages\/satis\/bin\/satis build \/var\/www\/packages\/satis\/satis.json \/var\/www\/packages\/satis\/web\/ -n\r\n<\/code><\/pre>\n<p>Pour plus de souplesse on peut mettre cette commande dans une <a href=\"http:\/\/louis.hatier.me\/blog\/syntaxe-tache-cron-lisible\/\">CRON<\/a><\/p>\n<pre><code class=\"no-highlight\">0 9-18 * * * php \/var\/www\/packages\/satis\/bin\/satis build \/var\/www\/packages\/satis\/satis.json \/var\/www\/packages\/satis\/web\/ -n &gt;&gt; \/var\/log\/cron\/statis-build.log 2&gt;&amp;1\r\n<\/code><\/pre>\n<p>Les packages sont consultables depuis l\u2019interface web :<br \/>\n<a href=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/satis-packages-dashboard.png\" data-rel=\"lightbox-gallery-HLDz2MmQ\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-690\" src=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/satis-packages-dashboard.png\" alt=\"Dashboard Satis\" width=\"645\" height=\"306\" srcset=\"https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/satis-packages-dashboard.png 1167w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/satis-packages-dashboard-300x142.png 300w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/satis-packages-dashboard-768x365.png 768w, https:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/satis-packages-dashboard-1024x486.png 1024w\" sizes=\"auto, (max-width: 645px) 100vw, 645px\" \/><\/a><\/p>\n<h2>D\u00e9marrer un projet<\/h2>\n<p>En renseignant un nouveau repository dans le fichier <code>composer.json<\/code>, composer va en priorit\u00e9 chercher les packages sur l\u2019URL indiqu\u00e9e, puis sur GitHub.<br \/>\nOn peut donc mixer des packages priv\u00e9es et des packages plus classiques :<\/p>\n<pre><code class=\"no-highlight\">{\r\n    \"repositories\": [\r\n        {\r\n            \"type\": \"composer\",\r\n            \"url\": \"http:\/\/packages.my.company\"\r\n        }\r\n    ],\r\n    \"require\": {\r\n        \"utils\/fileloader\": \"dev-master\",\r\n        \"utils\/exporter\": \"dev-master\",\r\n        \"data\/mock\": \"dev-master\",\r\n        \"nelmio\/api-doc-bundle\": \"^2.13\",\r\n        \"guzzlehttp\/guzzle\": \"^6.3\"\r\n    },\r\n    \"config\": {\r\n        \"minimum-stability\": \"dev\"\r\n    }\r\n}\r\n<\/code><\/pre>\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=\"Satis%20%3A%20gestionnaire%20de%20packages%20priv%C3%A9s\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"excerpt":{"rendered":"<p>Composer pr\u00e9sente deux outils pour g\u00e9rer les packages priv\u00e9s : Private Packagist (payant) et Satis. Satis est un gestionnaire open source de packages comme composer. Il permet de stocker des packages priv\u00e9s (pour une entreprise par exemple), et de les rendre accessible via composer. Une fois le paquet install\u00e9 (suivre la documentation), il faut configurer [&hellip;]<\/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":[30,63,75],"class_list":["post-688","post","type-post","status-publish","format-standard","hentry","category-ci-cd","tag-git","tag-open-source","tag-satis"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Satis : gestionnaire de packages priv\u00e9s - Melting Poutre<\/title>\n<meta name=\"description\" content=\"Satis permet de disposer d&#039;un repository de packages priv\u00e9s\" \/>\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\/satis-gestionnaire-de-packages-prives\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Satis : gestionnaire de packages priv\u00e9s - Melting Poutre\" \/>\n<meta property=\"og:description\" content=\"Satis permet de disposer d&#039;un repository de packages priv\u00e9s\" \/>\n<meta property=\"og:url\" content=\"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/\" \/>\n<meta property=\"og:site_name\" content=\"Melting Poutre\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-20T19:13:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-08-31T11:12:13+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen.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\/satis-gestionnaire-de-packages-prives\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/\"},\"author\":{\"name\":\"Louis Hatier\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11\"},\"headline\":\"Satis : gestionnaire de packages priv\u00e9s\",\"datePublished\":\"2018-08-20T19:13:19+00:00\",\"dateModified\":\"2018-08-31T11:12:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/\"},\"wordCount\":196,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11\"},\"image\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen.png\",\"keywords\":[\"Git\",\"Open source\",\"Satis\"],\"articleSection\":[\"CI\/CD\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/\",\"url\":\"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/\",\"name\":\"Satis : gestionnaire de packages priv\u00e9s - Melting Poutre\",\"isPartOf\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen.png\",\"datePublished\":\"2018-08-20T19:13:19+00:00\",\"dateModified\":\"2018-08-31T11:12:13+00:00\",\"description\":\"Satis permet de disposer d'un repository de packages priv\u00e9s\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/#primaryimage\",\"url\":\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen.png\",\"contentUrl\":\"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen.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":"Satis : gestionnaire de packages priv\u00e9s - Melting Poutre","description":"Satis permet de disposer d'un repository de packages priv\u00e9s","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\/satis-gestionnaire-de-packages-prives\/","og_locale":"fr_FR","og_type":"article","og_title":"Satis : gestionnaire de packages priv\u00e9s - Melting Poutre","og_description":"Satis permet de disposer d'un repository de packages priv\u00e9s","og_url":"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/","og_site_name":"Melting Poutre","article_published_time":"2018-08-20T19:13:19+00:00","article_modified_time":"2018-08-31T11:12:13+00:00","og_image":[{"url":"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen.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\/satis-gestionnaire-de-packages-prives\/#article","isPartOf":{"@id":"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/"},"author":{"name":"Louis Hatier","@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11"},"headline":"Satis : gestionnaire de packages priv\u00e9s","datePublished":"2018-08-20T19:13:19+00:00","dateModified":"2018-08-31T11:12:13+00:00","mainEntityOfPage":{"@id":"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/"},"wordCount":196,"commentCount":0,"publisher":{"@id":"https:\/\/louis.hatier.me\/blog\/#\/schema\/person\/2f200d0368def135b452e65491c4dd11"},"image":{"@id":"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/#primaryimage"},"thumbnailUrl":"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen.png","keywords":["Git","Open source","Satis"],"articleSection":["CI\/CD"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/","url":"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/","name":"Satis : gestionnaire de packages priv\u00e9s - Melting Poutre","isPartOf":{"@id":"https:\/\/louis.hatier.me\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/#primaryimage"},"image":{"@id":"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/#primaryimage"},"thumbnailUrl":"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen.png","datePublished":"2018-08-20T19:13:19+00:00","dateModified":"2018-08-31T11:12:13+00:00","description":"Satis permet de disposer d'un repository de packages priv\u00e9s","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/louis.hatier.me\/blog\/satis-gestionnaire-de-packages-prives\/#primaryimage","url":"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen.png","contentUrl":"http:\/\/louis.hatier.me\/blog\/wp-content\/uploads\/2018\/08\/composer-screen.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\/688","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=688"}],"version-history":[{"count":4,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/posts\/688\/revisions"}],"predecessor-version":[{"id":708,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/posts\/688\/revisions\/708"}],"wp:attachment":[{"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/media?parent=688"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/categories?post=688"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/louis.hatier.me\/blog\/wp-json\/wp\/v2\/tags?post=688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}