Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro Deploy em Produção

Existe um GAP entre o final da aula e o início da próxima onde o deploy no servidor de produção não é mostrado e parte do principio que após a criação do usuário no arquivo /var/lib/tomcat8/conf/tomcat-users.xml já estaria resolvido.

Consigo visualizar o Manager através da URL, mas ao mandar um Build tive o erro abaixo, vi que algumas pessoas tiveram esse mesmo erro, mas não encontrei uma resposta. Podem me ajudar?

[DeployPublisher][INFO] Attempting to deploy 1 war file(s)
[DeployPublisher][INFO] Deploying /var/lib/jenkins/workspace/catalogo/target/alura-aws.war to container Tomcat 8.x Remote with context alura-aws
ERROR: Build step failed with exception
org.codehaus.cargo.container.ContainerException: Failed to redeploy [/var/lib/jenkins/workspace/catalogo/target/alura-aws.war]
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:184)
    at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:81)
    at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:167)
    at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:136)
    at hudson.FilePath.act(FilePath.java:1075)
    at hudson.FilePath.act(FilePath.java:1058)
    at hudson.plugins.deploy.CargoContainerAdapter.redeployFile(CargoContainerAdapter.java:133)
    at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeployFile(PasswordProtectedAdapterCargo.java:95)
    at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:113)
    at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:78)
    at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:741)
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690)
    at hudson.model.Build$BuildExecution.post2(Build.java:186)
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635)
    at hudson.model.Run.execute(Run.java:1905)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:428)
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The username and password you provided are not correct (error 401)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:704)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:882)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:895)
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:169)
    ... 18 more
Caused by: java.io.IOException: Server returned HTTP response code: 401 for URL: http://ec2-3-128-25-241.us-east-2.compute.amazonaws.com:8080/manager/text/list
2 respostas
solução!

Olá Francisco, tudo bem? Certo, vou indicar o mesmo passo a passo que indiquei para o Natan nesse outro tópico.

O que acontece é que depois de colocar o seguinte conteúdo:

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>

<user username="jenkins" password="jenkins" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

Dentro do arquivo /var/lib/tomcat8/conf/tomcat-users.xml e logo em seguida reiniciar o Tomcat com o comando sudo service tomcat8 restart como o instrutor apresentou, faltou fazer o seguinte processo:

  • Ir novamente em "Ações de pós-build" (Post-build Actions) , na parte de Credentials clique em Add e depois em Jenkins, como na imagem abaixo: Add Credentials

  • Coloque os campos da seguinte forma:

    • Username: jenkins
    • Password: jenkins
    • ID: jenkins
    • Description: jenkins
  • Por fim, clique no botão Add, como na imagem abaixo: Save Credential

  • E novamente no campo de Credentials selecione a nova crendencial que acabamos de criar jenkins e salve o Job novamente, como na imagem: Select Credential
  • Agora tente executar o Job novamente.

Acho que talvez você tenha o seguinte ERROR:

ERROR: Build step failed with exception
org.codehaus.cargo.container.ContainerException: Failed to deploy [/var/lib/jenkins/workspace/catalogo/target/alura-aws.war]

<outra parte do log>
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The Tomcat Manager responded "FAIL - Deployed application at context path [/alura-aws] but context failed to start
" instead of the expected "OK" message

Já vou me antecipar e indicar os passos para você resolver esse outro problema:

1) Conecte-se a máquina EC2 via SSH, entre no banco de dados com o comando (instale o mysql-client antes e também o RDS e o EC2 precisam estar no mesmo VPC):

mysql -u root -h endpoint_do_banco_de_dados -p

E agora informe a senha.

2) E depois crie o banco de dados "alura_aws", para isso você precisa executar o comando para criar o banco de dados:

CREATE DATABASE alura_aws;

3) Agora crie saia do MySQL e entre no arquivo setenv.sh com o comando:

sudo nano /usr/share/tomcat8/bin/setenv.sh

4) Altere o arquivo colocando a porta do MySQL (3306) e também coloque a palavra reservada export antes de todas as variaveis, então o arquivo deve ficar da seguinte forma:

export url=endpoint_do_banco_de_dados:3306
export usuario=root
export senha=12345678

E deve funcionar corretamente seu build, caso ainda persista o erro, então entre na pasta /var/lib/tomcat8/webapps com o comando:

cd /var/lib/tomcat8/webapps

E exclua o arquivo "alura-aws.war" e a pasta "alura-aws/" com os comandos:

sudo rm  alura-aws.war

E depois:

sudo rm -r  alura-aws

E tente fazer o build novamente.

Espero ter ajudado!

Jonilson,

Excelente explicação e orientação funcionou corretamente.

Acredito que o que faltou no meu projeto é o export antes das variáveis no arquivo /usr/share/tomcat8/bin/setenv.sh

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software