{"id":229835,"date":"2022-11-11T10:32:00","date_gmt":"2022-11-11T07:32:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229835"},"modified":"2022-11-09T16:35:12","modified_gmt":"2022-11-09T13:35:12","slug":"integracao-continua-focada-no-wordpress-com-o-circleci","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/integracao-continua-focada-no-wordpress-com-o-circleci\/","title":{"rendered":"Integra\u00e7\u00e3o Cont\u00ednua Focada no WordPress com o CircleCI"},"content":{"rendered":"\n<p>Escrever sobre integra\u00e7\u00e3o cont\u00ednua ou implanta\u00e7\u00f5es cont\u00ednuas me parece um pouco engra\u00e7ado, pois j\u00e1 fiz isso <a href=\"https:\/\/tommcfarlin.com\/continuous-deployment-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">antes<\/a> e sei que muitos desenvolvedores j\u00e1 usam isso como parte de seu dia-a-dia.<\/p>\n<p>Mas tamb\u00e9m sei que existem muitos hobistas, iniciantes e aqueles que est\u00e3o apenas come\u00e7ando que est\u00e3o procurando maneiras de ter certeza de que est\u00e3o estabelecendo pr\u00e1ticas s\u00f3lidas para seu trabalho.<\/p>\n<p>Se vale a pena, foi s\u00f3 quando <a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">comecei a trabalhar com mais algumas pessoas<\/a> que come\u00e7amos a incorporar um conjunto mais amplo de ferramentas em nosso processo de implanta\u00e7\u00e3o.<\/p>\n<p>E esse \u00e9 o objetivo deste post.<\/p>\n<p>Aquilo \u00e9:<\/p>\n<ol>\n<li>apresentar toda a ideia por tr\u00e1s da integra\u00e7\u00e3o cont\u00ednua focada no WordPress,<\/li>\n<li>apresentando <a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">o CircleCI<\/a> ,<\/li>\n<li>se preparando para conversar mais sobre isso.<\/li>\n<\/ol>\n<p>Com isso dito, aqui est\u00e1 o resumo de todos os itens acima.<\/p>\n<h2>Integra\u00e7\u00e3o Cont\u00ednua Focada no WordPress<\/h2>\n<p>Primeiro, qual \u00e9 a grande ideia por tr\u00e1s da integra\u00e7\u00e3o cont\u00ednua? Portanto, a defini\u00e7\u00e3o geral <a href=\"https:\/\/en.wikipedia.org\/wiki\/Continuous_integration\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">de integra\u00e7\u00e3o cont\u00ednua \u00e9<\/a> :<\/p>\n<blockquote>\n<p>Na engenharia de software, a integra\u00e7\u00e3o cont\u00ednua (CI) \u00e9 a pr\u00e1tica de mesclar todas as c\u00f3pias de trabalho do desenvolvedor em uma linha principal compartilhada v\u00e1rias vezes ao dia.<\/p>\n<\/blockquote>\n<p>Dependendo do sistema de controle de origem escolhido, o que \u00e9 considerado sua &quot;linha principal&quot; variar\u00e1. Se voc\u00ea estiver usando o GitHub, provavelmente ser\u00e1 sua\u00a0 ramifica\u00e7\u00e3o <strong>principal<\/strong> (e \u00e9 por isso que devemos sempre trabalhar em ramifica\u00e7\u00f5es separadas, fazer revis\u00f5es de c\u00f3digo, e configurar pull requests).<\/p>\n<p>Em seguida, pegue o que estiver no <strong>mestre<\/strong> e implante-o no servidor de teste ou no servidor de produ\u00e7\u00e3o.<\/p>\n<p>E embora existam muitas ferramentas para isso, minha equipe e eu temos usado o CircleCI para alguns projetos e definitivamente sou um f\u00e3 (al\u00e9m disso, eles acabaram de lan\u00e7ar a segunda vers\u00e3o de seu trabalho).<\/p>\n<h3>1 O que \u00e9 CircleCI?<\/h3>\n<p><a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">O CircleCI<\/a> se define simplesmente como:<\/p>\n<blockquote>\n<p>Crie ambientes personalizados, aplique fluxos de trabalho para controlar seu pipeline de compila\u00e7\u00e3o, aproveite a aloca\u00e7\u00e3o flex\u00edvel de recursos e muito mais.<\/p>\n<\/blockquote>\n<p>Sobre o qual tenho sentimentos mistos. Quero dizer, \u00e9 tudo verdade e permite que tenhamos personaliza\u00e7\u00e3o em v\u00e1rios aspectos diferentes de nossas implanta\u00e7\u00f5es, mas em termos de ser menos intimidante para quem est\u00e1 come\u00e7ando, n\u00e3o sei.<\/p>\n<p>Independentemente disso, descobri que pode ser t\u00e3o simples ou t\u00e3o complexo quanto o seu projeto precisa. E como isso \u00e9 mais sobre compartilhar as raz\u00f5es para isso, n\u00e3o me incomodarei em entrar em tudo o que ele oferece.<\/p>\n<p>Pelo menos n\u00e3o neste post.<\/p>\n<h3>2 Como usamos?<\/h3>\n<p>Supondo que voc\u00ea j\u00e1 tenha um projeto GitHub configurado, \u00e9 muito f\u00e1cil conectar o CircleCi ao seu projeto.<\/p>\n<p>Sempre que voc\u00ea <a href=\"https:\/\/circleci.com\/signup\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">se inscreve<\/a>, voc\u00ea pode se conectar com o GitHub, Bitbucket ou Google (embora eu seja f\u00e3 de come\u00e7ar com GitHub ou Bitbucket, considerando que eles t\u00eam os reposit\u00f3rios de c\u00f3digo que muitos de n\u00f3s no WordPress, pelo menos, usamos com mais frequ\u00eancia) .<\/p>\n<p>A partir da\u00ed, voc\u00ea precisar\u00e1 configurar um <a href=\"https:\/\/en.wikipedia.org\/wiki\/Webhook\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">webhook<\/a> para o CircleCI. Isso basicamente far\u00e1 com que o CircleCI execute a variedade de ferramentas que voc\u00ea configurou e para construir seu projeto. Eu vou falar mais sobre isso em um momento.<\/p>\n<ul>\n<li>Se a compila\u00e7\u00e3o for bem-sucedida, voc\u00ea receber\u00e1 uma dessas notifica\u00e7\u00f5es e poder\u00e1 solicitar uma revis\u00e3o de c\u00f3digo ou mesclar a ramifica\u00e7\u00e3o em <strong>master<\/strong>.<\/li>\n<li>Se a compila\u00e7\u00e3o falhar, ela bloquear\u00e1 (e deve) bloquear a capacidade de mesclar a ramifica\u00e7\u00e3o at\u00e9 que haja uma compila\u00e7\u00e3o bem-sucedida.<\/li>\n<\/ul>\n<p>Com isso dito, o que as ferramentas podem incluir que fazem parte de um processo de constru\u00e7\u00e3o de um projeto WordPress? Dado que muito de um projeto WordPress geralmente inclui PHP e JavaScript, voc\u00ea pode usar alguns destes:<\/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>E muito mais.<\/li>\n<\/ul>\n<p>Se voc\u00ea configurou o GrumPHP corretamente, ele observar\u00e1 todos os commits que entrarem em seu reposit\u00f3rio (mesmo quando for um commit local \u2013 ou seja, antes de voc\u00ea enviar upstream para o GitHub).<\/p>\n<p>Assim, voc\u00ea deve saber se h\u00e1 um problema com seu c\u00f3digo antes mesmo de envi\u00e1-lo para o upstream. Depois que as verifica\u00e7\u00f5es locais forem conclu\u00eddas, voc\u00ea estar\u00e1 pronto para envi\u00e1-lo ao seu reposit\u00f3rio. O CircleCI executar\u00e1 as mesmas opera\u00e7\u00f5es com base em sua configura\u00e7\u00e3o no ambiente que voc\u00ea configurou.<\/p>\n<p>Se tudo der certo, passar\u00e1 e, como mencionado, voc\u00ea poder\u00e1 mescl\u00e1-lo. Caso contr\u00e1rio, voc\u00ea precisar\u00e1 corrigir quaisquer erros relatados, confirmar novamente e enviar por push. Normalmente, se passar por um commit local, passar\u00e1 um push. Mas isso nem sempre \u00e9 o caso, ent\u00e3o n\u00e3o assuma tanto.<\/p>\n<h2>Mais por vir<\/h2>\n<p>Obviamente, isso \u00e9 apenas arranhar a superf\u00edcie do que a integra\u00e7\u00e3o cont\u00ednua pode fazer. Honestamente, nem sei se diria isso \u2013 em vez disso, trata-se mais de introduzir a ideia de integra\u00e7\u00e3o cont\u00ednua e os benef\u00edcios que ela oferece, especialmente quando se trabalha em equipe.<\/p>\n<p>Embora eu tenha tentado uma variedade de ferramentas diferentes, devo dizer que estou mais satisfeito com o que o CircleCI oferece. Uma das coisas que \u00e9 melhor de tudo \u00e9 que se voc\u00ea optar por construir em uma caixa Linux, ent\u00e3o \u00e9 gr\u00e1tis para usar. E isso funciona bem para uma equipe pequena que deseja permanecer enxuta.<\/p>\n<p>De qualquer forma, h\u00e1 mais a cobrir sobre isso, ent\u00e3o estou procurando fazer isso em posts futuros.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Foi s\u00f3 quando comecei a trabalhar com mais algumas pessoas que come\u00e7amos a incorporar um conjunto mais amplo de ferramentas em nossa integra\u00e7\u00e3o cont\u00ednua focada no 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":[722,1021,785],"tags":[1170,1170],"class_list":["post-229835","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvedor","category-sites-uteis","category-software-livre","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229835","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=229835"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229835\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/165940"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=229835"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=229835"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=229835"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}