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