Maven Heroku:使用'gitlab ci'部署jhipster项目由于'Procfile'命令而崩溃

Maven Heroku:使用'gitlab ci'部署jhipster项目由于'Procfile'命令而崩溃,maven,spring-boot,heroku,jhipster,gitlab-ci,Maven,Spring Boot,Heroku,Jhipster,Gitlab Ci,我以前曾在jhipster generator的Github问题上问过这个问题。 但仍然没有找到解决方案 (详见和) 我认为这与我从生成器获得的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/

我以前曾在jhipster generator的Github问题上问过这个问题。 但仍然没有找到解决方案

(详见和)

我认为这与我从生成器获得的
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
    目录在那里

  • 因此,我尝试从
    Procfile
    中删除
    release:
    行,然后我从运行该应用程序的Heroku服务器收到崩溃消息

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

    因此,由于我认为这与我现在发现的问题最相关的问题,我应该在
    Procfile
    上解决什么问题,以便在Heroku上获得最终部署,从而使其能够正常工作

    任何帮助,我们都将提前感谢您。

    我做了这些事情,然后使用
    Gitlab
    ->
    Heroku
    的CI-CD可以正确地制作CI-CD

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

    现在,您可以在
    Gitlab
    pipeline上以全绿色运行CI-CD,在
    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}
    
    • 应用程序heroku.yml
      文件,对环境变量的引用
      ${JDBC\u DATABASE\u URL}
      ${JDBC\u DATABASE\u USERNAME}
      ${JDBC\u DATABASE\u PASSWORD}
      ,并没有创建,唯一要创建的是
      包含
      postgres://[生成的用户]:[生成的秘密]@[生成的url]:5432/[生成的dbname]
    • 这是错误的
      • 不是以
        jdbc:
      • 环境变量名称不同于上面定义的
        DATABASE\u URL
        (已创建)不等于
        JDBC\u DATABASE\u URL
        ,以及
        ${JDBC\u DATABASE\u USERNAME}
        ${JDBC\u DATABASE\u PASSWORD}
        未创建。然后我的解决方法是在
        Heroku
        设置->配置变量上创建这些环境变量,并正确编辑它们的值,如
      • key
        JDBC\u DATABASE\u URL
        value
        JDBC:postgres://[URL]:5432/[dbname]
      • JDBC\u数据库\u用户名
        value
        [USERNAME]
      • JDBC\u数据库\u密码
        value
        [PASSWORD]
      • 或者您可以将此
        url:${JDBC\u DATABASE\u url}
        更改为
        url:JDBC:${DATABASE\u url}
        (之前不要尝试,对结果没有信心)
      • 我做了这些事情,然后使用
        Gitlab
        ->
        Heroku
        的CI-CD可以正确地制作CI-CD

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

        现在,您可以在
        Gitlab
        pipeline上以全绿色运行CI-CD,在
        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}
        
        • 应用程序heroku.yml
          文件,对环境变量的引用
          ${JDBC\u DATABASE\u URL}
          ${JDBC\u DATABASE\u USERNAME}
          ${JDBC\u DATABASE\u PASSWORD}
          ,并没有创建,唯一要创建的是
          包含
          postgres://[生成的用户]:[生成的秘密]@[生成的url]:5432/[生成的dbname]
        • 这是错误的
          • 不是以
            jdbc:
          • 环境变量名称不同于上面定义的
            DATABASE\u URL
            (已创建)不等于
            JDBC\u DATABASE\u URL
            ,以及
            ${JDBC\u DATABASE\u USERNAME}
            ${JDBC\u DATABASE\u PASSWORD}
            未创建。然后我的解决方法是在
            Heroku
            设置->配置变量上创建这些环境变量,并正确编辑它们的值,如
          • key
            JDBC\u DATABASE\u URL
            value
            JDBC:postgres://[URL]:5432/[dbname]
          • JDBC\u数据库\u用户名
            value
            [USERNAME]
          • JDBC\u数据库\u密码
            value
            [PASSWORD]
          • 或者您可以将此
            url:${JDBC\u DATABASE\u url}
            更改为
            url:JDBC:${DATABASE\u url}
            (之前不要尝试,对结果没有信心)

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