{"id":3048,"date":"2017-04-13T08:04:25","date_gmt":"2017-04-13T15:04:25","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=3048"},"modified":"2023-09-07T04:45:33","modified_gmt":"2023-09-07T11:45:33","slug":"create-a-continuous-deployment-pipeline-with-jenkins-and-java","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/","title":{"rendered":"Criar um pipeline de implanta\u00e7\u00e3o cont\u00ednua com Jenkins e Java"},"content":{"rendered":"<p>Ultimamente, tenho trabalhado muito com o Jenkins <span style=\"font-weight: 400\">para executar arquivos Java JAR <\/span>para a implanta\u00e7\u00e3o cont\u00ednua de um dos meus aplicativos.  Caso voc\u00ea n\u00e3o tenha visto, a demonstra\u00e7\u00e3o principal feita no <a href=\"https:\/\/youtu.be\/Bq8zkcbnRac?t=26m25s\" target=\"_blank\" rel=\"noopener noreferrer\">Couchbase Connect 2016<\/a> usou o Jenkins para criar e reimplantar o back-end Java e o front-end Angular sempre que uma altera\u00e7\u00e3o era detectada no GitHub.  Este \u00e9 o aplicativo que ajudei a criar.<\/p>\n<p>Ent\u00e3o, como eu aproveitei <a href=\"https:\/\/jenkins.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jenkins<\/a> <span style=\"font-weight: 400\">implantar esse aplicativo Java<\/span>?  Veremos como criar <span style=\"font-weight: 400\">um arquivo JAR usando o Jenkins, resultando em <\/span>um pipeline de implanta\u00e7\u00e3o cont\u00ednua que inclui a cria\u00e7\u00e3o e a implanta\u00e7\u00e3o em um servidor.<\/p>\n<p><!--more--><\/p>\n<p>Para ser claro, n\u00e3o explicarei como usar o aplicativo Couchbase Connect 2016, que estou chamando de <a href=\"https:\/\/github.com\/couchbaselabs\/gittalent\" target=\"_blank\" rel=\"noopener noreferrer\">GitTalent<\/a>Com o Jenkins, \u00e9 um pouco mais complicado.  Vamos come\u00e7ar devagar para entender melhor.<\/p>\n<h2>Os requisitos<\/h2>\n<p>H\u00e1 alguns requisitos que precisam ser atendidos para que voc\u00ea tenha sucesso com este guia.  Eles podem ser encontrados abaixo:<\/p>\n<ul>\n<li>JDK 8<\/li>\n<li><a href=\"https:\/\/jenkins.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jenkins<\/a> 2.32+<\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/downloads\/\" target=\"_blank\" rel=\"noopener noreferrer\">Servidor Couchbase<\/a> 4.6+<\/li>\n<\/ul>\n<p>Neste exemplo, o Jenkins, o JDK e o Couchbase Server residir\u00e3o todos no mesmo computador. Isso significa que um script de implanta\u00e7\u00e3o cont\u00ednua do Jenkins extrair\u00e1 o c\u00f3digo do GitHub, o criar\u00e1 usando o JDK e o publicar\u00e1 localmente em vez de em algum servidor remoto. Dito isso, parte da automa\u00e7\u00e3o foi removida deste exemplo porque, para fazer com que o Jenkins crie automaticamente quando forem encontrados commits, os hooks do GitHub exigem uma m\u00e1quina que n\u00e3o seja o host local.  A efic\u00e1cia deste guia ainda estar\u00e1 presente.<\/p>\n<p>Embora o Couchbase seja um requisito, ele n\u00e3o \u00e9 o foco deste guia.  Ele precisa estar presente para o aplicativo de amostra que retiraremos do GitHub.<\/p>\n<h2>Configura\u00e7\u00e3o do Jenkins com os plug-ins e as depend\u00eancias necess\u00e1rias<\/h2>\n<p>A esta altura, voc\u00ea j\u00e1 deve ter feito o download do Jenkins.  Vamos orient\u00e1-lo na configura\u00e7\u00e3o, pois ele pode ser um pouco confuso para um usu\u00e1rio iniciante.<\/p>\n<p>Voc\u00ea pode executar o Jenkins executando o seguinte no prompt de comando ou no terminal:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">java -jar jenkins.war -httpPort=8080<\/pre>\n<p>O comando acima tornar\u00e1 o Jenkins acess\u00edvel em <strong>https:\/\/localhost:8080<\/strong> em seu navegador da Web.  Ap\u00f3s a primeira inicializa\u00e7\u00e3o, voc\u00ea ser\u00e1 guiado por um assistente para configura\u00e7\u00e3o.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3058 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/jenkins-config-1.png\" alt=\"Jenkins Configuration Part 1\" width=\"1100\" height=\"522\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-1.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-1-300x142.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-1-1024x486.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-1-768x364.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-1-20x9.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Como parte da primeira etapa de configura\u00e7\u00e3o, voc\u00ea precisar\u00e1 obter um valor gerado para ser usado como senha de superadministrador.<\/p>\n<p>Depois de fornecer a senha de acordo com as instru\u00e7\u00f5es na tela, voc\u00ea ser\u00e1 questionado sobre a instala\u00e7\u00e3o dos plug-ins do Jenkins.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3059 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/jenkins-config-2.png\" alt=\"Jenkins Configuration Part 2\" width=\"1100\" height=\"521\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-2.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-2-300x142.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-2-1024x485.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-2-768x364.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-2-20x9.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Vamos come\u00e7ar instalando os plug-ins sugeridos e depois instalaremos os extras.  Pode levar algum tempo, mas depois que os plug-ins sugeridos forem instalados, voc\u00ea ser\u00e1 solicitado a configurar sua primeira conta de usu\u00e1rio administrativo.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3060 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/jenkins-config-3.png\" alt=\"Jenkins Configuration Part 3\" width=\"1100\" height=\"520\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-3.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-3-300x142.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-3-1024x484.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-3-768x363.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-config-3-20x9.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Voc\u00ea pode optar por criar um usu\u00e1rio administrativo ou continuar a usar a senha gerada ao trabalhar com o Jenkins.<\/p>\n<p>Depois de criar uma conta, o Jenkins est\u00e1 pronto para ser usado.  Antes de criarmos nosso primeiro fluxo de trabalho, ou trabalho, precisamos instalar um plugin adicional.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3061 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/jenkins-manage.png\" alt=\"Manage Jenkins\" width=\"1100\" height=\"530\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-manage.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-manage-300x145.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-manage-1024x493.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-manage-768x370.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-manage-20x10.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Voc\u00ea dever\u00e1 optar por\u00a0<strong>Gerenciar o Jenkins<\/strong> que nos levar\u00e1 a uma lista de se\u00e7\u00f5es de gerenciamento, uma das quais \u00e9 uma se\u00e7\u00e3o para gerenciar plug-ins.<\/p>\n<p>Escolha\u00a0<strong>Gerenciar plug-ins<\/strong> e fa\u00e7a uma busca pelo\u00a0<strong>Script p\u00f3s-constru\u00e7\u00e3o<\/strong> plugin.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3062 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/jenkins-postbuildscript-plugin.png\" alt=\"Install Jenkins Post-Build Script Plugin\" width=\"1100\" height=\"529\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-postbuildscript-plugin.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-postbuildscript-plugin-300x144.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-postbuildscript-plugin-1024x492.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-postbuildscript-plugin-768x369.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-postbuildscript-plugin-20x10.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Esse plug-in nos permitir\u00e1 executar scripts no host Jenkin depois que a compila\u00e7\u00e3o for conclu\u00edda sem erros.\u00a0 <span style=\"font-weight: 400\">Precisamos disso para que o Jenkins possa implantar o JAR depois que ele tiver sido empacotado<\/span>.<\/p>\n<p>Agora, o Jenkins como um todo foi configurado.  Embora ele esteja pronto para criarmos trabalhos, primeiro vamos obter <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/\" target=\"_blank\" rel=\"noopener noreferrer\">Couchbase<\/a> pronto para ser usado.<\/p>\n<h2>Preparando o Couchbase com um bucket para armazenamento de documentos<\/h2>\n<p>O Couchbase n\u00e3o \u00e9 o destaque deste exemplo, mas como estamos usando um dos meus antigos projetos, ele era um requisito do projeto.<\/p>\n<p>Se voc\u00ea ainda n\u00e3o fez o download do Couchbase, fa\u00e7a-o agora e passe pela configura\u00e7\u00e3o.  Para obter ajuda com a configura\u00e7\u00e3o do Couchbase, confira um <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/getting-started-with-couchbase-server-on-mac-os\/\" target=\"_blank\" rel=\"noopener noreferrer\">Artigo anterior<\/a> Eu escrevi.<\/p>\n<p>O que \u00e9 importante \u00e9 o Bucket que usaremos.  Certifique-se de criar um Bucket com o t\u00edtulo\u00a0<strong>restful-sample<\/strong> com pelo menos um \u00edndice N1QL prim\u00e1rio.<\/p>\n<p>Se precisar de ajuda com tudo isso, voc\u00ea pode encontrar uma descri\u00e7\u00e3o completa do nosso projeto <a href=\"https:\/\/www.thepolyglotdeveloper.com\/2016\/01\/create-a-full-stack-app-using-java-and-couchbase-server\/\" target=\"_blank\" rel=\"noopener noreferrer\">aqui<\/a>.  \u00c9 claro que esse artigo n\u00e3o inclui a implanta\u00e7\u00e3o cont\u00ednua com o Jenkins.<\/p>\n<p>Agora podemos nos concentrar em nosso pipeline.<\/p>\n<h2>Cria\u00e7\u00e3o de um trabalho para cria\u00e7\u00e3o e implanta\u00e7\u00e3o de um aplicativo desenvolvido com Java<\/h2>\n<p>Com o Jenkins e o Couchbase prontos para uso, podemos nos concentrar na cria\u00e7\u00e3o de um trabalho que controlar\u00e1 nosso pipeline.  Para reiterar nosso plano, estaremos extraindo do GitHub, empacotando um JAR no processo de compila\u00e7\u00e3o e implantando esse JAR durante o processo p\u00f3s-compila\u00e7\u00e3o (implanta\u00e7\u00e3o).<\/p>\n<p>V\u00e1 em frente e crie um novo trabalho no Jenkins.  A primeira coisa que lhe ser\u00e1 solicitada \u00e9 o nome do projeto e o tipo de nome do projeto.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3054 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/jenkins-job-java-freestyle.png\" alt=\"Jenkins Freestyle Java Project\" width=\"1100\" height=\"441\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-job-java-freestyle.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-job-java-freestyle-300x120.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-job-java-freestyle-1024x411.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-job-java-freestyle-768x308.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-job-java-freestyle-20x8.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>D\u00ea ao trabalho um nome exclusivo e certifique-se tamb\u00e9m de usar\u00a0<strong>Projeto Freestyle<\/strong> da lista.  Ao configurar esse projeto, nossa primeira preocupa\u00e7\u00e3o \u00e9 o reposit\u00f3rio do GitHub que usaremos.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3055 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/jenkins-git-java-project.png\" alt=\"Jenkins Java Project Source Control\" width=\"1100\" height=\"654\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-git-java-project.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-git-java-project-300x178.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-git-java-project-1024x609.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-git-java-project-768x457.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-git-java-project-20x12.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Se o seu reposit\u00f3rio n\u00e3o for p\u00fablico, n\u00e3o se preocupe, pois voc\u00ea pode adicionar credenciais, mas, neste exemplo, meu projeto \u00e9 p\u00fablico.<\/p>\n<p>Estou usando o projeto encontrado aqui:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">https:\/\/github.com\/couchbaselabs\/restful-angularjs-java<\/pre>\n<p>Sinta-se \u00e0 vontade para usar seu pr\u00f3prio projeto, se desejar.  Com o controle de origem resolvido, vamos passar para o\u00a0<strong>Construir<\/strong> passo.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3056 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/jenkins-java-project-build.png\" alt=\"Jenkins Build Java Project\" width=\"1100\" height=\"459\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-java-project-build.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-java-project-build-300x125.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-java-project-build-1024x427.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-java-project-build-768x320.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-java-project-build-20x8.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Aqui podemos inserir os comandos de shell que quisermos para criar o aplicativo que foi extra\u00eddo do Git.<\/p>\n<p>Neste exemplo, queremos apenas gerar um arquivo JAR, o que pode ser feito adicionando o seguinte comando:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">pacote mvn clean<\/pre>\n<p>Isso nos deixa com um arquivo JAR em um novo arquivo\u00a0<strong>alvo<\/strong> que, neste momento, s\u00f3 \u00e9 relevante para o Jenkins.  A etapa final \u00e9 eliminar qualquer inst\u00e2ncia j\u00e1 em execu\u00e7\u00e3o do aplicativo e execut\u00e1-lo novamente.<\/p>\n<p>Como instalamos o\u00a0<strong>Script de plug-in p\u00f3s-compila\u00e7\u00e3o<\/strong> podemos definir o que acontece com nossa compila\u00e7\u00e3o.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3057 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/jenkins-java-post-build.png\" alt=\"Jenkins Post-Build Java Actions\" width=\"1100\" height=\"786\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-java-post-build.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-java-post-build-300x214.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-java-post-build-1024x732.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-java-post-build-768x549.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/jenkins-java-post-build-20x14.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Neste exemplo, n\u00e3o estamos implementando-o em outro computador, mas poder\u00edamos.  Em vez disso, vamos execut\u00e1-lo apenas na m\u00e1quina local.<\/p>\n<p>Escolha executar um script de shell e inclua o seguinte:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">ps | grep java-fullstack | awk '{print $1}' | xargs kill -9 || true\r\nenv SERVER.PORT=8081 nohup java -jar .\/target\/java-fullstack-1.0-SNAPSHOT.jar &amp;<\/pre>\n<p>A descri\u00e7\u00e3o acima \u00e9 um pouco enganosa, mas \u00e9 necess\u00e1ria porque estamos executando tudo localmente na mesma m\u00e1quina.<\/p>\n<p>O primeiro comando procurar\u00e1 qualquer processo em execu\u00e7\u00e3o no meu Mac que se pare\u00e7a com o nosso aplicativo Java.  Uma vez encontrado, ele eliminar\u00e1 o processo.  Mesmo que n\u00e3o encontre o processo, ele retornar\u00e1 verdadeiro devido ao nosso pipe.  Isso evita que o trabalho falhe.<\/p>\n<p>Depois que o processo \u00e9 interrompido, executamos o JAR criado em segundo plano.<\/p>\n<p>Lembre-se de que seu script pode ser um pouco diferente se estiver sendo executado localmente no Linux ou no Windows.  Em um cen\u00e1rio de produ\u00e7\u00e3o, voc\u00ea provavelmente usar\u00e1 o plug-in SSH para o Jenkins, enviar\u00e1 o JAR para algum servidor e reiniciar\u00e1 o daemon de controle.<\/p>\n<p>V\u00e1 em frente e tente executar o trabalho usando o\u00a0<strong>Construir agora<\/strong> bot\u00e3o.  Se voc\u00ea n\u00e3o quiser inici\u00e1-lo manualmente, considere adicionar um gancho ou um cron\u00f4metro na \u00e1rea de configura\u00e7\u00e3o que acabamos de explorar.<\/p>\n<p>Se tudo correr bem, voc\u00ea ter\u00e1 seu aplicativo Java acess\u00edvel em <strong>https:\/\/localhost:8081<\/strong> e ele se comunicar\u00e1 com o Couchbase Server.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Voc\u00ea acabou de ver como <span style=\"font-weight: 400\">implantar um arquivo JAR em <\/span><a href=\"https:\/\/jenkins.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jenkins<\/a> para fazer a implanta\u00e7\u00e3o cont\u00ednua de um aplicativo Java que se comunica com o Couchbase Server.  Essa configura\u00e7\u00e3o do Jenkins ser\u00e1 extra\u00edda do GitHub, criar\u00e1 um JAR e o implantar\u00e1.  Embora deva ser um pouco mais refinada em um cen\u00e1rio de produ\u00e7\u00e3o, \u00e9 uma boa maneira de come\u00e7ar.<\/p>\n<p>Deseja usar o Jenkins para a implanta\u00e7\u00e3o cont\u00ednua de microsservi\u00e7os agrupados em cont\u00eaineres do Docker?  D\u00ea uma olhada em um artigo anterior que escrevi intitulado,\u00a0<a href=\"https:\/\/www.thepolyglotdeveloper.com\/2017\/04\/continuous-deployment-of-web-application-containers-with-jenkins-and-docker\/\" target=\"_blank\" rel=\"noopener noreferrer\">Implanta\u00e7\u00e3o cont\u00ednua de cont\u00eaineres de aplicativos da Web com Jenkins e Docker<\/a>.<\/p>\n<p>Deseja obter mais informa\u00e7\u00f5es sobre como usar a implanta\u00e7\u00e3o cont\u00ednua do Java com o Couchbase? D\u00ea uma olhada na se\u00e7\u00e3o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/developers\/\" target=\"_blank\" rel=\"noopener noreferrer\">Portal do desenvolvedor do Couchbase<\/a> para obter exemplos e documenta\u00e7\u00e3o.<\/p>\n<p>Recomendo que voc\u00ea d\u00ea uma olhada no Couchbase Connect 2016 <a href=\"https:\/\/youtu.be\/Bq8zkcbnRac?t=26m25s\" target=\"_blank\" rel=\"noopener noreferrer\">demonstra\u00e7\u00e3o principal<\/a> se voc\u00ea ainda n\u00e3o o fez.<\/p>","protected":false},"excerpt":{"rendered":"<p>Lately I&#8217;ve been working a lot with Jenkins to run Java JAR files for continuous deployment of one of my applications. \u00a0In case you haven&#8217;t seen it, the keynote demonstration given at Couchbase Connect 2016 used Jenkins to build and [&hellip;]<\/p>","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1818],"tags":[1919,1920,1567,1758,1565,1874,1921,1922],"ppma_author":[9032],"class_list":["post-3048","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-java","tag-cd","tag-continuous-delivery","tag-continuous-deployment","tag-gradle","tag-jenkins","tag-maven","tag-pipeline","tag-ssh"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Continuous Deployment Pipeline: Run JAR with Jenkins + Java<\/title>\n<meta name=\"description\" content=\"See how to create and run a JAR file using Jenkins and Java, resulting in a continuous deployment pipeline that includes building and deploying to a server.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Create a Continuous Deployment Pipeline with Jenkins and Java\" \/>\n<meta property=\"og:description\" content=\"See how to create and run a JAR file using Jenkins and Java, resulting in a continuous deployment pipeline that includes building and deploying to a server.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2017-04-13T15:04:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-07T11:45:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/jenkins-config-1.png\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Create a Continuous Deployment Pipeline with Jenkins and Java\",\"datePublished\":\"2017-04-13T15:04:25+00:00\",\"dateModified\":\"2023-09-07T11:45:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/\"},\"wordCount\":1335,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"cd\",\"continuous delivery\",\"Continuous Deployment\",\"gradle\",\"Jenkins\",\"maven\",\"pipeline\",\"ssh\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Java\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/\",\"name\":\"Continuous Deployment Pipeline: Run JAR with Jenkins + Java\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-04-13T15:04:25+00:00\",\"dateModified\":\"2023-09-07T11:45:33+00:00\",\"description\":\"See how to create and run a JAR file using Jenkins and Java, resulting in a continuous deployment pipeline that includes building and deploying to a server.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a Continuous Deployment Pipeline with Jenkins and Java\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Continuous Deployment Pipeline: Run JAR with Jenkins + Java","description":"See how to create and run a JAR file using Jenkins and Java, resulting in a continuous deployment pipeline that includes building and deploying to a server.","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:\/\/www.couchbase.com\/blog\/pt\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/","og_locale":"pt_BR","og_type":"article","og_title":"Create a Continuous Deployment Pipeline with Jenkins and Java","og_description":"See how to create and run a JAR file using Jenkins and Java, resulting in a continuous deployment pipeline that includes building and deploying to a server.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2017-04-13T15:04:25+00:00","article_modified_time":"2023-09-07T11:45:33+00:00","og_image":[{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/jenkins-config-1.png","type":"","width":"","height":""}],"author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Create a Continuous Deployment Pipeline with Jenkins and Java","datePublished":"2017-04-13T15:04:25+00:00","dateModified":"2023-09-07T11:45:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/"},"wordCount":1335,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["cd","continuous delivery","Continuous Deployment","gradle","Jenkins","maven","pipeline","ssh"],"articleSection":["Best Practices and Tutorials","Java"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/","url":"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/","name":"Continuous Deployment Pipeline: Run JAR with Jenkins + Java","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-04-13T15:04:25+00:00","dateModified":"2023-09-07T11:45:33+00:00","description":"See how to create and run a JAR file using Jenkins and Java, resulting in a continuous deployment pipeline that includes building and deploying to a server.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/create-a-continuous-deployment-pipeline-with-jenkins-and-java\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Create a Continuous Deployment Pipeline with Jenkins and Java"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, defensor dos desenvolvedores, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"Nic Raboy \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","first_name":"Nic","last_name":"Raboy","user_url":"https:\/\/www.thepolyglotdeveloper.com","author_category":"","description":"Nic Raboy \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/3048","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=3048"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/3048\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=3048"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=3048"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=3048"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=3048"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}