{"id":1520,"date":"2017-04-27T21:31:03","date_gmt":"2017-04-27T19:31:03","guid":{"rendered":"https:\/\/www.h-hennes.fr\/blog\/?p=1520"},"modified":"2018-11-22T18:13:18","modified_gmt":"2018-11-22T16:13:18","slug":"prestashop-passer-au-deploiement-continu","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2017\/04\/27\/prestashop-passer-au-deploiement-continu\/","title":{"rendered":"Prestashop : Passer au d\u00e9ploiement continu"},"content":{"rendered":"<p>Vous mettez encore \u00e0 jour vos sites via Ftp ? Vous perdez du temps \u00e0 d\u00e9ployer votre code lors de chaque livraison de nouvelle fonctionnalit\u00e9 ?<br \/>\nIl est temps d&rsquo;optimiser cela et de passer au d\u00e9ploiement continu !<\/p>\n<p>Pour l&rsquo;exemple nous allons voir comment mettre en place du d\u00e9ploiement continu sur un site prestashop de base ( <strong>version 1.6.1.x<\/strong> ).<br \/>\nL&rsquo;exemple est assez basique, mais peut servir de base pour des strat\u00e9gies de d\u00e9ploiement plus complexes.<\/p>\n<p>Les pr\u00e9requis \u00e9tant les suivants :<\/p>\n<ul>\n<li>site h\u00e9berg\u00e9 sur un h\u00e9bergement avec acc\u00e8s SSH<\/li>\n<\/ul>\n<p>Pour mettre en place ce processus nous allons utiliser les outils suivants :<\/p>\n<ul>\n<li>git<\/li>\n<li>gilab<\/li>\n<\/ul>\n<p>Les \u00e9tapes \u00e0 r\u00e9aliser seront les suivantes :<\/p>\n<div class=\"entete-serie\">\n<ol>\n<li><a href=\"#1\">Cr\u00e9ation du projet sur gitlab<\/a><\/li>\n<li><a href=\"#2\">Installation de Prestashop en local<\/a><\/li>\n<li><a href=\"#3\">Installation initiale de prestashop distant<\/a><\/li>\n<li><a href=\"#4\">Configuration gitlab et serveur<\/a><\/li>\n<li><a href=\"#5\">Cr\u00e9ation du fichier .gitlab-ci.yml<\/a><\/li>\n<\/ol>\n<\/div>\n<p><strong><a name=\"1\" id=\"1\">&nbsp;<\/a>1\/ Cr\u00e9ation du projet sur gitlab<\/strong><\/p>\n<p>Pour commencer il faut s&rsquo;inscrire sur <a href=\"https:\/\/about.gitlab.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">gitlab.com<\/a>.<br \/>\nVous pouvez ensuite cr\u00e9er votre projet en mode public ou priv\u00e9 selon vos besoins.<br \/>\nJe ne d\u00e9taille pas le processus de cr\u00e9ation qui est relativement ais\u00e9, nous reviendrons plus tard sur les configurations sp\u00e9cifiques.<br \/>\nIl est \u00e9galement possible d&rsquo;h\u00e9berger sa propre plateforme gitlab, mais ce n&rsquo;est pas l&rsquo;objet de cet article.<\/p>\n<p><strong><a name=\"2\" id=\"2\">&nbsp;<\/a>2\/ Installation de Prestashop en local<\/strong><\/p>\n<ul>\n<li>T\u00e9l\u00e9charger la derni\u00e8re version <strong>1.6.1.x<\/strong> de Prestashop depuis la page suivante : <a href=\"https:\/\/www.prestashop.com\/fr\/versions-developpeurs\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.prestashop.com\/fr\/versions-developpeurs<\/a><\/li>\n<li>Puis proc\u00e9der \u00e0 l&rsquo;installation locale du projet<\/li>\n<\/ul>\n<p>Notre site de d\u00e9veloppement local \u00e9tant configur\u00e9, il est est temps de versionner le projet avec git.<br \/>\nPour cela vous pouvez ex\u00e9cuter la commande suivante dans le dossier d&rsquo;installation.<\/p>\n<pre lang=\"bash\">git init .<\/pre>\n<p>Pour \u00e9viter de versionner les fichiers non n\u00e9cessaires, vous pouvez ensuite mettre en place le fichier .gitignore suivant :<\/p>\n<pre lang=\"bash\"> # Editors, tools and OS's\r\n\r\n.buildpath\r\n.project\r\n.settings\r\n.idea\r\n.svn\r\n.DS_Store\r\n.sass-cache\r\nconfig.codekit\r\n*.sublime-project\r\n*.sublime-workspace\r\nnbproject\r\nbower_components\r\ncomposer.lock\r\n\r\n# Cache, temp and personal files\r\n\r\ncache\/*\r\n!cache\/index.php\r\n!cache\/*\/index.php\r\ndownload\/*\r\n!download\/index.php\r\n!download\/.htaccess\r\nimg\/*\r\n!img\/admin\/*\r\n!img\/admin\/jquery-ui\/*\r\n!img\/index.php\r\n!img\/*\/index.php\r\nlog\/*\r\n!log\/index.php\r\nupload\/*\r\n!upload\/index.php\r\n!upload\/.htaccess\r\nadmin-dev\/autoupgrade\/*\r\nadmin-dev\/backups\/*\r\nadmin-dev\/import\/*\r\n\r\nthemes\/*\/cache\/*\r\nadmin-dev\/themes\/*\/cache\/*\r\n\r\n# Config\r\n\r\nconfig\/settings.inc.php\r\nconfig\/settings.old.php\r\nconfig\/xml\/*\r\n!config\/xml\/themes\/default.xml\r\n\r\n# Themes, modules and overrides\r\nadmin-dev\/themes\/default\/sass\/ie.sass\r\nadmin-dev\/themes\/default\/sass\/print.sass\r\nadmin-dev\/themes\/default\/screen.sass\r\nadmin-dev\/themes\/default\/css\/ie.css\r\nadmin-dev\/themes\/default\/css\/print.css\r\nadmin-dev\/themes\/default\/css\/screen.css\r\n\r\n# Translations and emails templates\r\n\r\ntranslations\/*\r\n!translations\/index.php\r\n!translations\/fr\/\r\nmails\/*\r\n!mails\/fr\/\r\nthemes\/default-bootstrap\/lang\/*\r\nthemes\/default-bootstrap\/modules\/*\/translations\/*.php\r\nthemes\/default-bootstrap\/mails\/*\r\n!themes\/default-bootstrap\/mails\/en\/\r\nthemes\/default-bootstrap\/modules\/*\/mails\/*\r\n!themes\/default-bootstrap\/modules\/*\/mails\/en\r\n\r\n# MISC\r\n\r\n*sitemap.xml\r\nrobots.txt\r\n<\/pre>\n<p>Puis ajouter l&rsquo;ensemble des fichiers au d\u00e9p\u00f4t<\/p>\n<pre lang=\"bash\">git add .\r\ngit commit -m \"Creation du projet\"\r\n<\/pre>\n<p>Votre versionning local est maintenant en place, vous pouvez d\u00e9j\u00e0 d\u00e9velopper et historiser vos modifications.<\/p>\n<p>Pour finaliser la configuration de git nous allons ajouter notre d\u00e9p\u00f4t gitlab en d\u00e9p\u00f4t distant<\/p>\n<pre lang=\"bash\"> git remote add origin https:\/\/youruser@gitlab.com\/youruser\/your-project.git\r\n<\/pre>\n<p>( Note : vous pouvez ajouter l&rsquo;url en https ou en ssh selon vos pr\u00e9f\u00e9rences )<\/p>\n<p>Poussez vos modifications sur le d\u00e9p\u00f4t distant avant de passer \u00e0 l&rsquo;\u00e9tape suivante :<\/p>\n<pre lang=\"bash\"> git push origin master\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong><a name=\"3\" id=\"3\">&nbsp;<\/a>3\/ Installation initiale de prestashop distant<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Apr\u00e8s avoir cr\u00e9\u00e9s le vhost et la base de donn\u00e9es n\u00e9cessaire \u00e0 l&rsquo;installation du projet.<br \/>\n&#8211; Rendez-vous dans le dossier ou vous souhaitez installer le projet et clonez le depuis gitlab<\/p>\n<pre lang=\"bash\">git clone https:\/\/youruser@gitlab.com\/youruser\/your-project.git\r\n<\/pre>\n<p>&#8211; Importer votre base de donn\u00e9es sur le serveur en changeant bien les urls dans la table ps_shop_url<br \/>\n&#8211; R\u00e9cup\u00e9rer votre fichier local config\/settings.inc.php et modifier le avec les informations du serveur<\/p>\n<p>Votre serveur de prod est \u00e0 pr\u00e9sent install\u00e9, votre projet et git\u00e9.<br \/>\nIl est d\u00e9j\u00e0 possible de proc\u00e9der \u00e0 des mises \u00e0 jour assez facilement manuellement, via des git push et des git pull sur les diff\u00e9rents environnements.<br \/>\nC&rsquo;est d\u00e9j\u00e0 bien mais cela n\u00e9cessite encore de se connecter en ssh au serveur pour puller les changements.<br \/>\nAvec gitlab il est possible de faire tout \u00e7a de mani\u00e8re automatique \ud83d\ude42<\/p>\n<p>&nbsp;<\/p>\n<p><strong><a name=\"4\" id=\"4\">&nbsp;<\/a>4\/ Configuration gitlab et serveur<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>&#8211; Mise en place d&rsquo;une deploy key<\/p>\n<p>Pour commencer il faut pouvoir puller les mises \u00e0 jour du serveur sans avoir de mot de passe \u00e0 saisir.<br \/>\nC&rsquo;est possible avec gitlab avec le principe des deploys-keys qui se base sur une authentification ssh.<\/p>\n<p>Pour commencer il faut donc g\u00e9n\u00e9rer une cl\u00e9 ssh (sans passphrase ) sur votre serveur<br \/>\nVia la commande suivante :<\/p>\n<pre lang=\"bash\"> ssh-keygen -t rsa -b 4096 -C \"cle gitlab\"\r\n<\/pre>\n<p>Laissez ensuite les options par d\u00e9faut, et n&rsquo;entrez pas de passphrase.<br \/>\nR\u00e9cup\u00e9rer le contenu de votre cl\u00e9 publique via la commande<\/p>\n<pre lang=\"bash\">cat ~\/.ssh\/id_rsa.pub\r\n<\/pre>\n<p>Dans gitlab rendez-vous dans \u00ab\u00a0Settings \/ Repository\u00a0\u00bb<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1523\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/gitlab-deploy-key.jpg\" alt=\"Gitlab deploy key\" width=\"829\" height=\"611\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/gitlab-deploy-key.jpg 829w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/gitlab-deploy-key-300x221.jpg 300w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/gitlab-deploy-key-768x566.jpg 768w\" sizes=\"auto, (max-width: 829px) 100vw, 829px\" \/><\/p>\n<p>Donner un titre \u00e0 votre cl\u00e9, puis copier la cl\u00e9 publique.<br \/>\nVous pouvez ensuite \u00e0 votre choix autoriser ou non l&rsquo;acc\u00e8s en \u00e9criture au d\u00e9pot.<\/p>\n<p>Une fois votre cl\u00e9 ajout\u00e9e au d\u00e9pot, vous pouvez changer l&rsquo;url du remote pour prendre l&rsquo;acc\u00e8s SSH<\/p>\n<pre lang=\"bash\">git remote set-url origin git@gitlab.com:youruser\/your-project.git\r\n<\/pre>\n<p>Puis \u00e0 tester un git pull pour v\u00e9rifier que tout fonctionne sans saisie de mot de passe.<br \/>\nCeci devrait donner un r\u00e9sultat comme cela<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1524\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/gitlab-deploy-key-ssh-result.jpg\" alt=\"Gitlab ssh key\" width=\"734\" height=\"313\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/gitlab-deploy-key-ssh-result.jpg 734w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/gitlab-deploy-key-ssh-result-300x128.jpg 300w\" sizes=\"auto, (max-width: 734px) 100vw, 734px\" \/><\/p>\n<p><strong>&#8211; Cr\u00e9ation des variables du projet<\/strong><\/p>\n<p>Il est temps \u00e0 pr\u00e9sent de configurer les variables n\u00e9cessaires au d\u00e9ploiement continu de votre projet.<br \/>\nPour cela rendez-vous dans \u00ab\u00a0Settings\u00a0\u00bb puis CI\/CD Pipelines\u00a0\u00bb , puis dans la partie \u00ab\u00a0Secret Variables\u00a0\u00bb<\/p>\n<p>Nous allons d\u00e9finir les variables suivantes ( \u00e0 adapter avec vos acc\u00e8s ) :<\/p>\n<p>SSH_HOST : (h\u00f4te de connexion ssh ) ex: herve@test.com<br \/>\nPROJECT_PATH : ( chemin du projet sur le serveur ) ex: \/var\/www\/mywebsite\/<\/p>\n<p>SSH_KEY : ( cl\u00e9 ssh ) :<br \/>\nPour cette variable c&rsquo;est un peu particulier, il va falloir autoriser le runner de d\u00e9ploiement \u00e0 se connecter \u00e0 votre serveur via ssh pour lancer les commandes de mise \u00e0 jour.<br \/>\nIl est donc n\u00e9cessaire de cr\u00e9er une cl\u00e9 ssh ( sans passphrase ) permettant l&rsquo;acc\u00e8s \u00e0 votre serveur, et de coller la cl\u00e9 priv\u00e9e dans ce champ.<\/p>\n<p>Il est possible d&rsquo;utiliser des runners priv\u00e9s, mais dans notre cas nous utiliserons les runners accessibles \u00e0 l&rsquo;ensemble des projets gitlab.<\/p>\n<p>La configuration est \u00e0 pr\u00e9sent termin\u00e9e, il est temps de voir le plus int\u00e9ressant, le fichier gitlab-ci \ud83d\ude09<\/p>\n<p>&nbsp;<\/p>\n<p><strong><a name=\"5\" id=\"5\">&nbsp;<\/a>5\/ Cr\u00e9ation du fichier .gitlab-ci.yml<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Le fichier .gitlab-ci.yml est l\u2019\u00e9l\u00e9ment le plus important de votre d\u00e9ploiement continu, c&rsquo;est lui qui va contenir les instructions de d\u00e9ploiement.<br \/>\nJe ne vais pas vous d\u00e9tailler tout son fonctionnement, ce serait trop long et la documentation officielle le fait tr\u00e8s bien : <a href=\"https:\/\/docs.gitlab.com\/ce\/ci\/yaml\/README.html\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/docs.gitlab.com\/ce\/ci\/yaml\/README.html<\/a><\/p>\n<p>Ce fichier doit \u00eatre cr\u00e9\u00e9 \u00e0 la racine de votre projet, et vous pouvez y mettre le contenu suivant :<\/p>\n<pre lang=\"yml\" escaped=\"true\">stages:\r\n    - deploy\r\n    \r\nbefore_script:\r\n - 'which ssh-agent || ( apt-get update -y &amp;&amp; apt-get install openssh-client -y )'\r\n - eval $(ssh-agent -s)\r\n - mkdir -p ~\/.ssh\r\n - echo -e \"Host *\\n\\tStrictHostKeyChecking no\\n\\n\" &gt; ~\/.ssh\/config\r\n - ssh-add &lt;(echo \"$SSH_KEY\")\r\n\r\n\r\ndeploy:production:\r\n    stage: deploy\r\n    only:\r\n        - master\r\n    tags:\r\n        - gitlab-org\r\n    script:\r\n        - ssh $SSH_HOST -C \" cd $PROJECT_PATH &amp;&amp; git pull \"\r\n\r\n<\/pre>\n<p>Voici bloc par bloc les explications de ce fichier<\/p>\n<pre lang=\"yml\" escaped=\"true\">stages:\r\n    - deploy\r\n<\/pre>\n<p>D\u00e9finitions des \u00e9tapes du d\u00e9ploiement continu, dans notre cas une seule \u00e9tape : le d\u00e9ploiement.<\/p>\n<pre lang=\"yml\" escaped=\"true\">before_script:\r\n - 'which ssh-agent || ( apt-get update -y &amp;&amp; apt-get install openssh-client -y )'\r\n - eval $(ssh-agent -s)\r\n - mkdir -p ~\/.ssh\r\n - echo -e \"Host *\\n\\tStrictHostKeyChecking no\\n\\n\" &gt; ~\/.ssh\/config\r\n - ssh-add &lt;(echo \"$SSH_KEY\")\r\n<\/pre>\n<p>Code ex\u00e9cut\u00e9 avant notre script, il v\u00e9rifie si ssh est install\u00e9 sur le runner,<br \/>\npuis ins\u00e8re notre cl\u00e9 priv\u00e9e issue de nos variables de configuration<\/p>\n<pre lang=\"yml\" escaped=\"true\">deploy:production:\r\n    stage: deploy\r\n    only:\r\n        - master\r\n    tags:\r\n        - gitlab-org\r\n    script:\r\n        - ssh $SSH_HOST -C \" cd $PROJECT_PATH &amp;&amp; git pull \"\r\n<\/pre>\n<p>D\u00e9finition de notre job de d\u00e9ploiement :<br \/>\nlors de l&rsquo;\u00e9tape deploy, uniquement dans la branche master.<br \/>\nLe runnder gitlab-org est appell\u00e9 et se connecte \u00e0 notre serveur pour faire un git pull dans le dossier du projet.<\/p>\n<p>Commitez ce fichier et pousser le sur le d\u00e9p\u00f4t gitlab.<br \/>\nVotre premier d\u00e9ploiement continu devrait fonctionner \ud83d\ude42<\/p>\n<p>Vous pouvez voir les r\u00e9sultats du d\u00e9ploiement dans l&rsquo;onglet \u00ab\u00a0Pipelines\u00a0\u00bb de votre projet.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-1527\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/pipeline-ok-gitlab.jpg\" alt=\"Pipeline gitlab\" width=\"780\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/pipeline-ok-gitlab.jpg 852w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/pipeline-ok-gitlab-300x109.jpg 300w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/pipeline-ok-gitlab-768x279.jpg 768w\" sizes=\"(max-width: 852px) 100vw, 852px\" \/><\/p>\n<p>Si tout est vert, c&rsquo;est que tout \u00e0 bien fonctionn\u00e9.<br \/>\nSinon il faut cliquer sur le d\u00e9tails du pipeline pour voir les messages d&rsquo;erreurs et rejouer le d\u00e9ploiement \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vous mettez encore \u00e0 jour vos sites via Ftp ? Vous perdez du temps \u00e0 d\u00e9ployer votre code lors de chaque livraison de nouvelle fonctionnalit\u00e9 ? Il est temps d&rsquo;optimiser cela et de passer au d\u00e9ploiement continu ! Pour l&rsquo;exemple nous allons voir comment mettre en place du d\u00e9ploiement continu sur un site prestashop de [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[245,254],"tags":[485,484,486,104],"class_list":["post-1520","post","type-post","status-publish","format-standard","hentry","category-prestashop-2","category-serveurs-dedies","tag-ci","tag-gitlab","tag-integration-continuen-git","tag-prestashop","prestashop-1-4","prestashop-1-5","prestashop-1-6","prestashop-1-7","prestashop-1-7-2","prestashop-1-7-3","prestashop-1-7-4","prestashop-1-7-5","prestashop-1-7-6","prestashop-1-7-7","prestashop-1-7-8","prestashop-8-0","prestashop-8-1"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/comments?post=1520"}],"version-history":[{"count":11,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1520\/revisions"}],"predecessor-version":[{"id":1542,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1520\/revisions\/1542"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=1520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=1520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=1520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}