{"id":229409,"date":"2022-11-11T11:17:00","date_gmt":"2022-11-11T08:17:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229409"},"modified":"2022-11-09T06:54:37","modified_gmt":"2022-11-09T03:54:37","slug":"integracion-continua-centrada-en-wordpress-con-circleci","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/integracion-continua-centrada-en-wordpress-con-circleci\/","title":{"rendered":"Integraci\u00f3n continua centrada en WordPress con CircleCI"},"content":{"rendered":"\n<p>Escribir sobre integraci\u00f3n continua o implementaciones continuas me parece un poco divertido dado que lo he hecho <a href=\"https:\/\/tommcfarlin.com\/continuous-deployment-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">antes<\/a> y s\u00e9 que muchos desarrolladores ya lo usan como parte de su d\u00eda a d\u00eda.<\/p>\n<p>Pero tambi\u00e9n s\u00e9 que hay muchos aficionados, principiantes y aquellos que reci\u00e9n comienzan que buscan formas de asegurarse de que est\u00e1n estableciendo pr\u00e1cticas s\u00f3lidas para su trabajo.<\/p>\n<p>Por lo que vale, no fue hasta <a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">que comenc\u00e9 a trabajar con algunas personas m\u00e1s<\/a> que comenzamos a incorporar un conjunto m\u00e1s amplio de herramientas en nuestro proceso de implementaci\u00f3n.<\/p>\n<p>Y ese es el prop\u00f3sito de esta publicaci\u00f3n.<\/p>\n<p>Eso es:<\/p>\n<ol>\n<li>presentar la idea completa detr\u00e1s de la integraci\u00f3n continua centrada en WordPress,<\/li>\n<li>Introduciendo <a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">CircleCI<\/a> ,<\/li>\n<li>prepar\u00e1ndonos para charlar m\u00e1s al respecto.<\/li>\n<\/ol>\n<p>Dicho esto, aqu\u00ed est\u00e1 el resumen de todo lo anterior.<\/p>\n<h2>Integraci\u00f3n continua centrada en WordPress<\/h2>\n<p>Primero, \u00bfcu\u00e1l es la gran idea detr\u00e1s de la integraci\u00f3n continua? Entonces, la definici\u00f3n general <a href=\"https:\/\/en.wikipedia.org\/wiki\/Continuous_integration\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">de integraci\u00f3n continua es<\/a> :<\/p>\n<blockquote>\n<p>En ingenier\u00eda de software, la integraci\u00f3n continua (CI) es la pr\u00e1ctica de fusionar todas las copias de trabajo del desarrollador en una l\u00ednea principal compartida varias veces al d\u00eda.<\/p>\n<\/blockquote>\n<p>Dependiendo del sistema de control de c\u00f3digo fuente que elija, lo que se considera su &quot;l\u00ednea principal&quot; variar\u00e1. Si est\u00e1 usando GitHub, es probable que sea su\u00a0 rama <strong>principal<\/strong> (es por eso que siempre debemos trabajar en ramas separadas, tener revisiones de c\u00f3digo, y configurar solicitudes de extracci\u00f3n).<\/p>\n<p>Luego tome lo que est\u00e9 en <strong>el maestro<\/strong> y h\u00e1galo implementar en su servidor de ensayo o en su servidor de producci\u00f3n.<\/p>\n<p>Y aunque hay muchas herramientas para eso, mi equipo y yo hemos estado usando CircleCI para algunos proyectos y definitivamente soy un fan\u00e1tico (adem\u00e1s, acaban de lanzar la segunda versi\u00f3n de su trabajo).<\/p>\n<h3>1 \u00bfQu\u00e9 es CircleCI?<\/h3>\n<p><a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">CircleCI<\/a> se fija a s\u00ed mismo simplemente como:<\/p>\n<blockquote>\n<p>Cree entornos personalizados, aplique flujos de trabajo para controlar su flujo de desarrollo, disfrute de una asignaci\u00f3n de recursos flexible y m\u00e1s.<\/p>\n<\/blockquote>\n<p>Sobre el cual tengo sentimientos encontrados. Quiero decir, todo es cierto y nos permite personalizar varios aspectos diferentes de nuestras implementaciones, pero en t\u00e9rminos de ser menos intimidantes para aquellos que reci\u00e9n comienzan, no lo s\u00e9.<\/p>\n<p>Independientemente, he descubierto que puede ser tan simple o tan complejo como lo necesite su proyecto. Y dado que se trata m\u00e1s de compartir las razones, no me molestar\u00e9 en explicar todo lo que ofrece.<\/p>\n<p>Al menos no en esta publicaci\u00f3n.<\/p>\n<h3>2 \u00bfC\u00f3mo lo usamos?<\/h3>\n<p>Suponiendo que ya tiene un proyecto de GitHub configurado, es muy f\u00e1cil conectar CircleCi a su proyecto.<\/p>\n<p>Cada vez que se <a href=\"https:\/\/circleci.com\/signup\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">registre<\/a>, puede conectarse con GitHub, Bitbucket o Google (aunque soy fan\u00e1tico de comenzar con GitHub o Bitbucket considerando que tienen los repositorios para el c\u00f3digo que muchos de nosotros en WordPress, al menos, usamos m\u00e1s com\u00fanmente) .<\/p>\n<p>A partir de ah\u00ed, deber\u00e1 configurar un <a href=\"https:\/\/en.wikipedia.org\/wiki\/Webhook\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">webhook<\/a> para CircleCI. Esto esencialmente har\u00e1 que CircleCI ejecute la variedad de herramientas que ha configurado y para construir su proyecto. Hablar\u00e9 m\u00e1s sobre esto en un momento.<\/p>\n<ul>\n<li>Si la compilaci\u00f3n se realiza correctamente, recibir\u00e1 una de esas notificaciones y podr\u00e1 solicitar una revisi\u00f3n del c\u00f3digo o fusionar la rama en <strong>master<\/strong>.<\/li>\n<li>Si la compilaci\u00f3n falla, bloquear\u00e1 (y deber\u00eda bloquear) la capacidad de fusionar la rama hasta que haya una compilaci\u00f3n exitosa.<\/li>\n<\/ul>\n<p>Dicho esto, \u00bfqu\u00e9 podr\u00edan incluir las herramientas que son parte de un proceso de construcci\u00f3n para un proyecto de WordPress? Dado que gran parte de un proyecto de WordPress generalmente incluye PHP y JavaScript, puede usar algunos de estos:<\/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\">PHP CodeSniffer<\/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>Y mucho m\u00e1s.<\/li>\n<\/ul>\n<p>Si configur\u00f3 GrumPHP correctamente, observar\u00e1 cada confirmaci\u00f3n que ingrese a su repositorio (incluso cuando se trata de una confirmaci\u00f3n local, es decir, antes de subir a GitHub).<\/p>\n<p>Por lo tanto, debe saber si hay un problema con su c\u00f3digo incluso antes de enviarlo aguas arriba. Una vez que se hayan completado las comprobaciones locales, estar\u00e1 listo para enviarlo a su repositorio. CircleCI luego ejecutar\u00e1 las mismas operaciones seg\u00fan su configuraci\u00f3n en el entorno que ha configurado.<\/p>\n<p>Si todo va bien, pasar\u00e1 y, como se mencion\u00f3, puede fusionarlo. De lo contrario, deber\u00e1 corregir cualquier error que informe, volver a confirmar y enviar. Por lo general, si pasa una confirmaci\u00f3n local, pasar\u00e1 una inserci\u00f3n. Pero ese no es siempre el caso, as\u00ed que no asumas tanto.<\/p>\n<h2>M\u00e1s por venir<\/h2>\n<p>Obviamente, esto es solo rascar la superficie de lo que puede hacer la integraci\u00f3n continua. Honestamente, ni siquiera s\u00e9 si dir\u00eda eso; en cambio, se trata m\u00e1s de presentar la idea de integraci\u00f3n continua y los beneficios que brinda, especialmente cuando se trabaja con un equipo.<\/p>\n<p>Aunque he probado una variedad de herramientas diferentes, debo decir que estoy muy satisfecho con lo que ofrece CircleCI. Una de las mejores cosas de todo es que si opta por construir en una caja de Linux, entonces es de uso gratuito. Y eso funciona bien para un equipo peque\u00f1o que busca mantenerse delgado.<\/p>\n<p>De todos modos, hay m\u00e1s que cubrir con respecto a esto, as\u00ed que estoy buscando hacerlo en publicaciones futuras.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>No fue hasta que comenc\u00e9 a trabajar con algunas personas m\u00e1s que comenzamos a incorporar un conjunto m\u00e1s amplio de herramientas en nuestra integraci\u00f3n continua centrada en 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":[716,1015,779],"tags":[1172],"class_list":["post-229409","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollador","category-sitios-utiles","category-software-de-codigo-abierto","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229409","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=229409"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229409\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/165940"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=229409"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=229409"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=229409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}