Heroku:使用"gitlab-ci"部署jhipster项目由于"Procfile&q



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

(请参阅我的 Gitlab 和 Github 问题#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.然后我尝试使用添加到release:ls * -ltr进行更多调查,发现甚至找不到src目录。只有target目录在那里。

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

    • 日志中的某些部分
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 部署文档,我应该在 Heroku 上进行什么Procfile才能使最终部署能够正常工作?

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

TLDR;

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

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

现在,您可以在管道上运行 CI-CDGitlab全绿色,在Heroku上运行Deployed succeed

但是有些问题会阻止您的应用程序正常运行。在这里我发现了什么。

# ===================================================================
# 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},不创建,只创建包含postgres://[generated-user]:[generated-secret]@[generated-url]:5432/[generated-dbname]DATABASE_URL
  • 错了
    • 不是从jdbc:开始
    • 环境变量名称与上面定义的不同DATABASE_URL(创建)不等于JDBC_DATABASE_URL,并且${JDBC_DATABASE_USERNAME}${JDBC_DATABASE_PASSWORD}未创建。然后我的解决方法是在Heroku设置 -> Config vars 上创建这些环境变量并正确编辑它们的值,例如......
    • 关键JDBC_DATABASE_URLjdbc:postgres://[url]:5432/[dbname]
    • 关键JDBC_DATABASE_USERNAME[username]
    • 关键JDBC_DATABASE_PASSWORD[password]
    • 或者,您可以将此url: ${JDBC_DATABASE_URL}更改为url: jdbc:${DATABASE_URL}(以前从未尝试过,对结果没有信心)。

最新更新