【问题标题】:How to configure/set up commands on deployment on Heroku如何在 Heroku 上配置/设置部署命令
【发布时间】:2019-05-22 19:31:35
【问题描述】:

我正在将我的 Laravel 应用程序部署到 Heroku。我为连接到 GitHub 的应用程序设置了一个管道。我将其配置为在开发分支上发现新提交时自动再次部署。问题是我需要配置在每个部署上运行一些其他命令,例如迁移我的数据库。

我在 Heroku UI 中找不到设置这些命令的选项。我该怎么做?

我找到了 Heroku 的发布阶段,但我想通过 Heroku 仪表板进行配置。在发布阶段,我必须将命令放在Procfile 中。很难基于环境运行和管理命令。

例如,在我的测试环境中,我可能想运行 php artisan migrate --seed,但在我的生产环境中,我可能会在不为数据库播种的情况下运行我的迁移。

【问题讨论】:

  • 迁移是什么意思?数据库迁移或其他。
  • php 工匠迁移
  • 可能还有其他自定义命令
  • 你不明白我的问题。我想在每个新部署上运行一组配置的命令。我不是在问如何在 Heroku 上运行 artisan。

标签: laravel heroku


【解决方案1】:

您可能更喜欢通过网络仪表板执行此操作,但我认为这不是一个选项。 Procfile release phase 方法效果很好。

release 进程添加到您的Procfile,例如

web: vendor/bin/heroku-php-apache2 public/
release: php artisan migrate

发布阶段使您能够在部署应用的新release 之前运行某些任务。发布阶段可用于以下任务:

  • 将 CSS、JS 和其他资产从应用的 slug 发送到 CDN 或 S3 存储桶
  • 启动缓存存储或使缓存存储失效
  • 运行数据库架构迁移

如果发布阶段任务失败,则不会部署新版本,而当前版本不受影响。

编辑:发布命令不适合持续集成。更好的解决方案是使用适当的 CI 工具。 Heroku does provide one,但如果您愿意,可以使用第三方 CI 工具。

要使用 Heroku 的 CI 工具,您需要在管道的设置中启用 Heroku CI,并在您的存储库根目录中添加或更新名为 app.json 的文件。在app.json 文件中,您可以使用configure the testing environment,这比简单地为您的数据库播种要复杂得多。例如,您可能包含 Heroku 插件以提供 Redis 节点或设置自定义环境变量。

For PHP 您的require-dev 依赖项将自动安装在您的测试环境中。您可以在test-setup script 中播种您的数据库,并在test script 中定义您的测试命令。

【讨论】:

  • 嗨,克里斯,感谢您的帮助。我编辑了我的问题,因为我找到了 Heroku 版本。但我仍在寻找一种从 Heroku 仪表板中执行此操作的方法。有可能吗?
  • @WaiYanHein,正如我在回答和评论中所说,我认为不可能通过仪表板进行操作。我再次问:为什么要根据环境更改发布命令?您不想在每个环境中运行数据库迁移吗?
  • 但是对于测试环境,我可能想运行这个,php artisan migrate --seed。带种子。对于生产,我可能会在没有种子的情况下运行迁移
  • @WaiYanHein,啊,试井不一样。我不会为此使用发布命令,我会使用 CI 工具。 Heroku 确实提供了一个,我会相应地更新我的答案。
  • 为什么发布命令不适合 CI?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-12
  • 2015-03-08
  • 2021-04-24
  • 1970-01-01
  • 2016-04-11
  • 2011-06-18
  • 2015-09-15
相关资源
最近更新 更多