我正在将我的Laravel应用程序部署到Heroku。我为我的应用程序建立了连接到GitHub的管道。我将其配置为每当在develop分支上找到新的提交时自动再次部署。事情是我需要配置为在每个部署上运行其他命令,例如迁移数据库。
我找不到在Heroku UI中设置这些命令的选项。我该怎么办?
我找到了Heroku的发布阶段,但我想通过Heroku仪表板进行配置。在发布阶段,我必须将命令放在Procfile
中。很难根据环境来运行和管理命令。
例如,在测试环境中,我可能想运行php artisan migrate --seed
,但是在生产环境中,我可能会在不植入数据库的情况下运行迁移。
答案 0 :(得分:1)
您可能更喜欢通过Web仪表板执行此操作,但是我不认为这是一个选择。 Procfile
release phase方法效果很好。
将release
进程添加到您的Procfile
,例如
web: vendor/bin/heroku-php-apache2 public/
release: php artisan migrate
发布阶段使您可以在部署新的release应用之前运行某些任务。发布阶段对于以下任务可能很有用:
- 将来自应用程序的CSS,JS和其他资产发送到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中定义测试命令。