在Heroku的发布阶段执行shell脚本

时间:2018-03-14 15:43:21

标签: shell heroku

我有两个命令要在发布阶段执行,根据本教程(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

2 个答案:

答案 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 -