Bom estou lendo o Livro sobre o Jenkins, mas estou com uma dúvida gostaria de saber como configurar o Jenkins para fazer o Deploy para o Heroku ?
Alguém que sabe me explicar como eu posso configurar o Jenkins para realizar o deploy continuo?
Olá Cesar,
O Heroku faz deploy através do git, então instale o plugin do Git para isso, nesse blog tem um exemplo:
http://thediscoblog.com/blog/2014/01/24/continuous-delivery-for-heroku-with-jenkins/
Continue lendo o livro e observe o exemplo do pipeline que é construído no decorrer dos capítulos, ele é um exemplo de integração contínua, com deploy em vários ambientes e atualização do banco de dados.
Olá Fernando @boaglio,
Bom gostei bastante do livro e vi as partes em que você faz o uso do Flyway com o jenkins, os deploy para um tomcat externo entre outras coisas.
Mas o grande problema do deploy para o Heroku é que não estou conseguindo fazer a autenticação, bom vou deixar o stacktrace:
"C:\Users\Cesar\AppData\Local\GitHub\PortableGit_d76a6a98c9315931ec4927243517bc09e9b731a0\cmd\git.exe -c core.askpass=true fetch --tags --progress https://git.heroku.com/mydemoisfirst.git +refs/heads/*:refs/remotes/heroku/*" returned status code 128:
stdout:
stderr: github --credentials get: github: command not found
github --credentials erase: github: command not found
remote: ! WARNING:
remote: ! Do not authenticate with username and password using git.
remote: ! Run `heroku login` to update your credentials, then retry the git command.
remote: ! See documentation for details: https://devcenter.heroku.com/articles/http-git#authentication
fatal: Authentication failed for 'https://git.heroku.com/bla.git/'
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1723)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1459)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:63)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:314)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$2.execute(CliGitAPIImpl.java:506)
at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1046)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1086)
at hudson.scm.SCM.checkout(SCM.java:495)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1278)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:604)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529)
at hudson.model.Run.execute(Run.java:1720)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:404)
ERROR: null
Estou fazendo uma referência ao git.exe do aplicativo do github que possuo na maquina pois não consegui utilizar a instalação automática do jenkins.
Você precisa usar o https://toolbelt.heroku.com/ para interagir com o Heroku.
Bom então eu já tinha instalado o toolbelt, mas assim mesmo assim ele persiste com o mesmo erro. Mas eu troquei o git.exe para o do próprio do toolbelt que é o mesmo o git-scm e o erro mudou o problema foi a espera
ERROR: Timeout after 10 minutes
> C:\Program Files\Git\bin\git.exe config --local --remove-section credential # timeout=10
ERROR: Error fetching remote repo 'heroku'
hudson.plugins.git.GitException: Failed to fetch from https://git.heroku.com/bla.git
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:799)
at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1055)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1086)
at hudson.scm.SCM.checkout(SCM.java:495)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1278)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:604)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529)
at hudson.model.Run.execute(Run.java:1720)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:404)
Caused by: hudson.plugins.git.GitException: Command "C:\Program Files\Git\bin\git.exe -c core.askpass=true fetch --tags --progress https://git.heroku.com/bla.git +refs/heads/*:refs/remotes/heroku/*" returned status code -1:
stdout:
stderr:
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1723)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1459)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:63)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:314)
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:797)
... 11 more
ERROR: null
Build did not succeed and the project is configured to only push after a successful build, so no pushing will occur.
Finished: FAILURE
Já tentei trocar as credenciais e troquei vários tipos de ssh do próprio jenkins que estão configurado direto no heroku e nada .
sua rede tem proxy ? Precisa configurar o Git também:
Bom minha rede não estou usando proxy.
Bom usando o toolbelt consigo clonar o projeto, dar pull e push no git do heroku via script numa boa, mas da maneira que você me passou com o Jenkins ainda não consegui .
Olá Cesar, tudo bem?
No caso você configuro o plugin do git com uma chave ssh e coloco essa chave ssh no repositório?
Olá @paulopatto3,
Bom na verdade sim eu coloquei chave até porque eu não conseguiria nem comitar ele no Heroku sem ela, coloquei o padrão que é gerado pelo github.ssh e o id_pub.ssh que eu gero manualmente. Já como expliquei acima já tentei de várias maneiras colocar informando na config do Jenkins mas nenhum surgiu efeito, e criei varias credentials para testar mas nada de funcionar.
Bom se alguém tiver algum tutorial de passo à passo de como posso fazer. Diferente do acima.
Ficaria agradecido.