{"id":229731,"date":"2022-11-11T10:55:00","date_gmt":"2022-11-11T07:55:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229731"},"modified":"2022-11-09T16:08:25","modified_gmt":"2022-11-09T13:08:25","slug":"integration-continue-centree-sur-wordpress-avec-circleci","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/integration-continue-centree-sur-wordpress-avec-circleci\/","title":{"rendered":"Int\u00e9gration continue centr\u00e9e sur WordPress avec CircleCI"},"content":{"rendered":"\n<p>\u00c9crire sur l&rsquo;int\u00e9gration continue ou les d\u00e9ploiements continus me semble un peu dr\u00f4le \u00e9tant donn\u00e9 que je l&rsquo;ai d\u00e9j\u00e0 fait <a href=\"https:\/\/tommcfarlin.com\/continuous-deployment-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">et<\/a> que je sais que beaucoup de d\u00e9veloppeurs l&rsquo;utilisent d\u00e9j\u00e0 dans leur quotidien.<\/p>\n<p>Mais je sais aussi qu&rsquo;il y a beaucoup d&rsquo;amateurs, de d\u00e9butants et de d\u00e9butants qui cherchent des moyens de s&rsquo;assurer qu&rsquo;ils mettent en place des pratiques solides pour leur travail.<\/p>\n<p>Pour ce que \u00e7a vaut, ce n&rsquo;est que lorsque <a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j&rsquo;ai commenc\u00e9 \u00e0 travailler avec quelques personnes suppl\u00e9mentaires<\/a> que nous avons commenc\u00e9 \u00e0 int\u00e9grer un ensemble plus large d&rsquo;outils dans notre processus de d\u00e9ploiement.<\/p>\n<p>Et c&rsquo;est le but de ce post.<\/p>\n<p>C&rsquo;est-\u00e0-dire:<\/p>\n<ol>\n<li>pr\u00e9senter toute l&rsquo;id\u00e9e derri\u00e8re l&rsquo;int\u00e9gration continue centr\u00e9e sur WordPress,<\/li>\n<li>pr\u00e9sentant <a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">CircleCI<\/a> ,<\/li>\n<li>pr\u00e9parez-vous \u00e0 en discuter davantage.<\/li>\n<\/ol>\n<p>Cela dit, voici le r\u00e9capitulatif de tout ce qui pr\u00e9c\u00e8de.<\/p>\n<h2>Int\u00e9gration continue centr\u00e9e sur WordPress<\/h2>\n<p>Tout d&rsquo;abord, quelle est la grande id\u00e9e derri\u00e8re l&rsquo;int\u00e9gration continue de toute fa\u00e7on\u00a0? La d\u00e9finition g\u00e9n\u00e9rale <a href=\"https:\/\/en.wikipedia.org\/wiki\/Continuous_integration\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">de l&rsquo;int\u00e9gration continue est donc<\/a> :<\/p>\n<blockquote>\n<p>En g\u00e9nie logiciel, l&rsquo;int\u00e9gration continue (CI) est la pratique consistant \u00e0 fusionner toutes les copies de travail des d\u00e9veloppeurs dans une ligne principale partag\u00e9e plusieurs fois par jour.<\/p>\n<\/blockquote>\n<p>Selon le syst\u00e8me de contr\u00f4le de code source choisi, ce qui est consid\u00e9r\u00e9 comme votre &quot;ligne principale&quot; variera. Si vous utilisez GitHub, ce sera probablement votre\u00a0 branche <strong>principale<\/strong> (c&rsquo;est pourquoi nous devrions toujours travailler dans des branches s\u00e9par\u00e9es, avoir des r\u00e9visions de code, et configurer des demandes d&rsquo;extraction).<\/p>\n<p>Ensuite, prenez tout ce qui se trouve dans <strong>master<\/strong> et d\u00e9ployez-le sur votre serveur interm\u00e9diaire ou votre serveur de production.<\/p>\n<p>Et bien qu&rsquo;il existe de nombreux outils pour cela, mon \u00e9quipe et moi utilisons CircleCI pour quelques projets et je suis d\u00e9finitivement fan (en plus, ils viennent de publier la deuxi\u00e8me version de leur travail).<\/p>\n<h3>1 Qu&rsquo;est-ce que CircleCI ?<\/h3>\n<p><a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">CircleCI<\/a> se d\u00e9finit simplement comme\u00a0:<\/p>\n<blockquote>\n<p>Cr\u00e9ez des environnements personnalis\u00e9s, appliquez des workflows pour contr\u00f4ler votre pipeline de build, profitez d&rsquo;une allocation flexible des ressources, et bien plus encore.<\/p>\n<\/blockquote>\n<p>\u00c0 propos de laquelle j&rsquo;ai des sentiments mitig\u00e9s. Je veux dire, tout est vrai et cela nous permet d&rsquo;avoir une personnalisation sur un certain nombre d&rsquo;aspects diff\u00e9rents de nos d\u00e9ploiements, mais en termes d&rsquo;\u00eatre moins intimidant pour ceux qui d\u00e9butent, je ne sais pas.<\/p>\n<p>Quoi qu&rsquo;il en soit, j&rsquo;ai constat\u00e9 que cela peut \u00eatre aussi simple ou aussi complexe que les besoins de votre projet. Et puisqu&rsquo;il s&rsquo;agit plus d&rsquo;en partager les raisons, je ne vais pas m&rsquo;attarder sur tout ce qu&rsquo;il propose.<\/p>\n<p>Du moins pas dans ce post.<\/p>\n<h3>2 Comment l&rsquo;utilisons-nous ?<\/h3>\n<p>En supposant que vous ayez d\u00e9j\u00e0 configur\u00e9 un projet GitHub, il est tr\u00e8s facile de connecter CircleCi \u00e0 votre projet.<\/p>\n<p>Chaque fois que vous vous <a href=\"https:\/\/circleci.com\/signup\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">inscrivez<\/a>, vous pouvez vous connecter avec GitHub, Bitbucket ou Google (bien que je sois fan de commencer avec GitHub ou Bitbucket \u00e9tant donn\u00e9 qu&rsquo;ils ont les r\u00e9f\u00e9rentiels pour le code que beaucoup d&rsquo;entre nous dans WordPress, au moins, utilisent le plus couramment) .<\/p>\n<p>\u00c0 partir de l\u00e0, vous devrez configurer un <a href=\"https:\/\/en.wikipedia.org\/wiki\/Webhook\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">webhook<\/a> pour CircleCI. Cela permettra essentiellement \u00e0 CircleCI de parcourir la vari\u00e9t\u00e9 d&rsquo;outils que vous avez configur\u00e9s et de construire votre projet. J&rsquo;en parlerai plus dans un instant.<\/p>\n<ul>\n<li>Si la construction r\u00e9ussit, vous recevrez une telle notification et vous pourrez demander une r\u00e9vision du code ou fusionner la branche dans <strong>master<\/strong>.<\/li>\n<li>Si la construction \u00e9choue, elle bloquera (et devrait) bloquer la possibilit\u00e9 de fusionner la branche jusqu&rsquo;\u00e0 ce qu&rsquo;il y ait une construction r\u00e9ussie.<\/li>\n<\/ul>\n<p>Cela dit, que pourraient inclure les outils faisant partie d&rsquo;un processus de construction pour un projet WordPress? \u00c9tant donn\u00e9 qu&rsquo;une grande partie d&rsquo;un projet WordPress inclut g\u00e9n\u00e9ralement PHP et JavaScript, vous pouvez en utiliser quelques-uns\u00a0:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/squizlabs\/PHP_CodeSniffer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Renifleur de code PHP<\/a><\/li>\n<li><a href=\"https:\/\/phpmd.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMD<\/a><\/li>\n<li><a href=\"https:\/\/eslint.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ESLint<\/a><\/li>\n<li>Et beaucoup plus.<\/li>\n<\/ul>\n<p>Si vous avez correctement configur\u00e9 GrumPHP, il surveillera chaque commit qui entre dans votre r\u00e9f\u00e9rentiel (m\u00eame s&rsquo;il s&rsquo;agit d&rsquo;un commit local, c&rsquo;est-\u00e0-dire avant que vous ne poussiez en amont vers GitHub).<\/p>\n<p>Ainsi, vous devez savoir s&rsquo;il y a un probl\u00e8me avec votre code avant m\u00eame de le pousser en amont. Une fois les v\u00e9rifications locales termin\u00e9es, vous \u00eates alors pr\u00eat \u00e0 le pousser vers votre r\u00e9f\u00e9rentiel. CircleCI ex\u00e9cutera alors les m\u00eames op\u00e9rations en fonction de votre configuration dans l&rsquo;environnement que vous avez configur\u00e9.<\/p>\n<p>Si tout se passe bien, cela passera et, comme mentionn\u00e9, vous pourrez le fusionner. Sinon, vous devrez corriger les erreurs qu&rsquo;il signale, r\u00e9engager et pousser. Habituellement, s&rsquo;il passe un commit local, il passera un push. Mais ce n&rsquo;est pas toujours le cas, alors ne supposez pas autant.<\/p>\n<h2>Plus \u00e0 venir<\/h2>\n<p>De toute \u00e9vidence, cela ne fait qu&rsquo;effleurer la surface de ce que l&rsquo;int\u00e9gration continue peut faire. Honn\u00eatement, je ne sais m\u00eame pas si je dirais cela \u2013 il s&rsquo;agit plut\u00f4t d&rsquo;introduire l&rsquo;id\u00e9e d&rsquo;int\u00e9gration continue et les avantages qu&rsquo;elle procure, en particulier lorsque l&rsquo;on travaille en \u00e9quipe.<\/p>\n<p>Bien que j&rsquo;aie essay\u00e9 une vari\u00e9t\u00e9 d&rsquo;outils diff\u00e9rents, je dois dire que j&rsquo;ai \u00e9t\u00e9 tr\u00e8s satisfait de ce qu&rsquo;offre CircleCI. L&rsquo;une des choses les plus int\u00e9ressantes est que si vous choisissez de construire sur une bo\u00eete Linux, son utilisation est gratuite. Et cela fonctionne bien pour une petite \u00e9quipe qui cherche \u00e0 rester maigre.<\/p>\n<p>Quoi qu&rsquo;il en soit, il y a plus \u00e0 couvrir \u00e0 ce sujet, donc je cherche \u00e0 le faire dans les prochains articles.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ce n&rsquo;est que lorsque j&rsquo;ai commenc\u00e9 \u00e0 travailler avec quelques personnes suppl\u00e9mentaires que nous avons commenc\u00e9 \u00e0 int\u00e9grer un ensemble plus large d&rsquo;outils dans notre int\u00e9gration continue ax\u00e9e sur WordPress.<\/p>\n","protected":false},"author":1,"featured_media":165940,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[717,780,1016],"tags":[1167],"class_list":["post-229731","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developpeur","category-logiciels-open-source","category-sites-utiles","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229731","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=229731"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229731\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/165940"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229731"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229731"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229731"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}