【问题标题】:Heroku: deploy jhipster project with `gitlab-ci` get crashed because of `Procfile` commandHeroku:使用 `gitlab-ci` 部署 jhipster 项目由于`Procfile`命令而崩溃
【发布时间】:2019-08-16 09:22:02
【问题描述】:

我之前在jhipster-generator Github issue 上问过这个问题。 但仍然没有得到解决方案。

(在Example Repository on my GitlabGithub issue#9426查看更多信息)

我认为这与我从生成器获得的Procfile 中的最终命令有关,这些命令定义如下:

web: java $JAVA_OPTS -Xmx256m -jar target/*.war --spring.profiles.active=prod,heroku,no-liquibase --server.port=$PORT 
release: cp -R src/main/resources/config config && ./mvnw liquibase:update -Pheroku
  1. release: 上,命令cp -R ... 无法执行,因为从 gitlab-ci 的最后一项工作中可以正常工作并获得绿色响应。但是当我看到登录 Heroku 部署实例时,我得到了src/main/resource/config not found。然后我尝试通过将ls * -ltr 添加到release: 进行更多调查,发现甚至找不到src 目录。只有target 目录在那边。

  2. 所以我尝试从Procfile 中删除release: 行,然后再试一次,然后我从运行应用程序的 Heroku 服务器收到崩溃消息。

    • Lo​​g 的一部分
2019-03-26T03:18:10.547189+00:00 app[web.1]: 03:18:10.536 [localhost-startStop-1] ERROR org.springframework.boot.SpringApplication - Application run failed
2019-03-26T03:18:10.547217+00:00 app[web.1]: java.util.ServiceConfigurationError: javax.cache.spi.CachingProvider: Provider org.redisson.jcache.JCachingProvider not a subtype
...
2019-03-26T03:18:10.567009+00:00 app[web.1]: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]

但如果我使用命令jhipster heroku 运行,它将使用与.gitlab-ci.yml 文件中定义的命令不同的方法进行部署。并且可以成功运行。

所以由于Heroku deployment documentation 我认为它与我现在发现的问题最相关,我应该在Procfile 上修复什么以使Heroku 上的最终部署可以正常工作?

任何帮助将不胜感激,并提前感谢您。

【问题讨论】:

  • 这里也一样。你自己已经发现了什么吗?在我的情况下,我通过直接上传 .war (heroku war:deploy build/libs/*war) 进行部署,而不是通过 git push heroku 进行部署,这会带来其他问题。
  • @JeroenKransen 我找到了解决方案,稍后会发布。但关键是模板代码现在无法运行,需要在application.yml配置文件和环境变量上进行更改。
  • 可能对其他人有用。我现在可以使用 git push heroku 方法了。

标签: maven spring-boot heroku jhipster gitlab-ci


【解决方案1】:

TLDR;

我做这些事情,然后带有Gitlab -> Heroku 的 CI-CD 可以正常进行 CI-CD。

Procfile,去掉release:这一行,因为.gitlab-ci.yml文件在deploy-to-production状态执行时所做的是部署JAR文件,不包括整个项目目录,所以,这并不重要不再从项目目录中复制文件。

现在您可以在Gitlab 管道和Deployed succeedHeroku 上运行全绿色的CI-CD

但有一些问题会阻止您的应用正常运行。这是我发现的。

# ===================================================================
# Spring Boot configuration for the "heroku" profile.
#
# This configuration overrides the application.yml file.
# ===================================================================

# ===================================================================
# Standard Spring Boot properties.
# Full reference is available at:
# http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
# ===================================================================

eureka:
    instance:
        hostname: jhip-cicd-bug.herokuapp.com
        non-secure-port: 80
        prefer-ip-address: false

spring:
    datasource:
        type: com.zaxxer.hikari.HikariDataSource
        url: ${JDBC_DATABASE_URL}
        username: ${JDBC_DATABASE_USERNAME}
        password: ${JDBC_DATABASE_PASSWORD}
        hikari:
            maximumPoolSize: 8
    data:
        jest:
            uri: ${BONSAI_URL}
  • application-heroku.yml 文件,对环境变量${JDBC_DATABASE_URL}${JDBC_DATABASE_USERNAME}${JDBC_DATABASE_PASSWORD} 的引用,没有被创建,只有DATABASE_URL 包含postgres://[generated-user]:[generated-secret]@[generated-url]:5432/[generated-dbname]
  • 上错了
    • 未以jdbc: 开头
    • 环境变量名称与上面定义的不同DATABASE_URL(已创建)不等于JDBC_DATABASE_URL,并且未创建${JDBC_DATABASE_USERNAME}${JDBC_DATABASE_PASSWORD}。然后我的解决方法是在 Heroku 设置上创建这些环境变量 -> 配置变量并正确编辑它们的值,例如...
    • JDBC_DATABASE_URLjdbc:postgres://[url]:5432/[dbname]
    • JDBC_DATABASE_USERNAME[username]
    • JDBC_DATABASE_PASSWORD[password]
    • 或者您可以将这个url: ${JDBC_DATABASE_URL} 更改为url: jdbc:${DATABASE_URL}(以前不要尝试,对结果没有信心)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 2017-10-21
    • 2019-09-20
    • 1970-01-01
    相关资源
    最近更新 更多