我有两个命令要在发布阶段执行,根据本教程(https://devcenter.heroku.com/articles/release-phase),我将它们包含在名为release.sh的shell脚本中(位于根目录中)我的Django项目).
#!/bin/bash
python manage.py migrate
python manage.py compress
Run Code Online (Sandbox Code Playgroud)
在我的Procfile中,我添加了脚本,如文章中所述.
release: ./release.sh
web: gunicorn myapp.wsgi --log-file -
Run Code Online (Sandbox Code Playgroud)
但在发布期间我收到以下错误.
/bin/sh: 1: ./release.sh: not found
Run Code Online (Sandbox Code Playgroud)
然后发布失败.
我不知道问题是在Procfile中的路径(我也尝试过bash $PWD/releash.sh)或者在调用它时文件不可用.任何帮助,将不胜感激.
编辑:
我的release.sh是在一个子文件夹中,这就是为什么没找到它,但现在我得到了许可被拒绝.
/bin/sh: 1: ./release.sh: Permission denied
Run Code Online (Sandbox Code Playgroud)
这很有效
chmod u+x release.sh && ./release.sh
Run Code Online (Sandbox Code Playgroud)
所以Procfile成了
release: chmod u+x release.sh && ./release.sh
web: gunicorn myapp.wsgi --log-file -
Run Code Online (Sandbox Code Playgroud)
小智 8
为此,release.sh必须是可执行的
在本地,您可以运行chmod a+x release.sh. 但是您不想在 heroku 上这样做,因此您可以更改配置文件以具有以下内容:
release: bash release.sh
web: gunicorn myapp.wsgi --log-file -
Run Code Online (Sandbox Code Playgroud)