maven - Heroku:使用 `gitlab-ci` 部署 jhipster 项目由于`Procfile`命令而崩溃
问题描述
我之前在jhipster-generator
Github 问题上问过这个问题。但仍然没有得到解决方案。
(在我的 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
命令上
release:
的命令cp -R ...
无法执行,因为从 gitlab-ci 的最后一项工作中可以正常工作并获得绿色响应。但是当我看到登录 Heroku 部署实例时,我得到了src/main/resource/config not found
. 然后我尝试通过添加进行更多调查ls * -ltr
,release:
发现甚至找不到src
目录。只有target
目录在那里。所以我再次尝试
release:
从尝试中删除该行Procfile
,然后我从运行应用程序的 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 部署文档,我认为它与我现在发现的问题最相关,我应该修复什么Procfile
才能让 Heroku 上的最终部署可以正常工作?
任何帮助将不胜感激,并提前感谢您。
解决方案
TLDR ;
我做了这些事情,然后带有Gitlab
->的Heroku
CI-CD 可以正确执行 CI-CD。
at Procfile
,删除该release:
行,因为执行状态.gitlab-ci.yml
时文件所做deploy-to-production
的是部署JAR
文件,而不包括整个项目目录,因此,从项目目录复制文件不再重要。
现在你可以运行 CI-CD 并且在Gitlab
管道上和Deployed succeed
上都是绿色的Heroku
但是有一些问题会阻止您的应用程序正常运行。在这里我发现了什么。
# ===================================================================
# 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
包含 withpostgres://[generated-user]:[generated-secret]@[generated-url]:5432/[generated-dbname]
- 上错了
- 没有开始
jdbc:
- 环境变量名称与上面定义的不同
DATABASE_URL
(已创建)不等于JDBC_DATABASE_URL
,并且${JDBC_DATABASE_USERNAME}
,${JDBC_DATABASE_PASSWORD}
未创建。然后我的解决方法是在Heroku
settings -> Config vars 上创建这些环境变量并正确编辑它们的值,比如...... - 关键
JDBC_DATABASE_URL
价值jdbc:postgres://[url]:5432/[dbname]
- 关键
JDBC_DATABASE_USERNAME
价值[username]
- 关键
JDBC_DATABASE_PASSWORD
价值[password]
- 或者您可以将其更改
url: ${JDBC_DATABASE_URL}
为url: jdbc:${DATABASE_URL}
(以前从未尝试过,对结果没有信心)。
- 没有开始
推荐阅读
- java - 无法解决 spring-mvc 项目中的 spring-webmvc-5.0.0.M5 依赖项
- python - 如何仅使用模板将 UserCreationForm 字段传递到输入字段?
- javascript - 抽屉导航背景图像 SVG
- java - 从firebase获取数据时如何显示进度条?
- redirect - Apache 反向代理产生过多的重定向
- apache-spark - 是否可以在 HDFS 上解压 tar.gz 文件并将其放在不同的 HDFS 文件夹中而不将其带到本地系统
- javascript - 如何从下到上增加图像的高度
- xamarin - Xamarin.forms - 复选框触发另一个复选框的 CheckedChanged 事件
- python - Python阿拉伯语文本以从右到左的方向而不是从左到右的方向返回
- html - 将文本放置在所需位置