Git 结构-f选项不起作用
我已经在本地机器上成功地使用Fabric一段时间了,终于有了一个不错的部署脚本,我想在git的post接收钩子期间调用它。为了实现这一点,我有以下代码,在执行Git 结构-f选项不起作用,git,bash,deployment,fabric,Git,Bash,Deployment,Fabric,我已经在本地机器上成功地使用Fabric一段时间了,终于有了一个不错的部署脚本,我想在git的post接收钩子期间调用它。为了实现这一点,我有以下代码,在执行fab命令之前,所有代码都经过验证: deploy=... # CODE TO DETERMINE IF YOU SHOULD DEPLOY if [[ $deploy ]] ; then TMPFILE="/tmp/$(basename $0).$$.tmp" git cat-file blob release:fabfile.
fab
命令之前,所有代码都经过验证:
deploy=... # CODE TO DETERMINE IF YOU SHOULD DEPLOY
if [[ $deploy ]] ; then
TMPFILE="/tmp/$(basename $0).$$.tmp"
git cat-file blob release:fabfile.py > $TMPFILE
fab -f $TMPFILE deploy:servername.mycompany.com
rm $TMPFILE
fi
我已经检查了方法的每一步,我确信TMPFILE的创建是正确的(它包含我的fabbile)。在/tmp/中手动运行上面的步骤w/a组合文件会导致相同的行为
最糟糕的是,它“提醒”我可以使用
-f
指定一个fabfile…我就是。这是因为它需要一个结尾带有.py的文件。将临时文件更改为使用此文件扩展名,它将正常工作。这是fab希望允许人们使用python风格的目录类(如fabfile/\uuuu init\uuuu)的产物。py
将使用-f fabfile
此行为的示例如下:
╭─mgoose@Macintosh ~
╰─$ fab -f tmp.py test
[localhost] local: whoami
mgoose
Done.
╭─mgoose@Macintosh ~
╰─$ mv tmp.py tmp.py.tmp
╭─mgoose@Macintosh ~
╰─$ fab -f tmp.py.tmp test
Fatal error: Couldn't find any fabfiles!
Remember that -f can be used to specify fabfile path, and use -h for help.
Aborting.
╭─mgoose@Macintosh ~
╰─$ cat tmp.py.tmp 1 ↵
from fabric.api import local, task
@task
def test():
local("whoami")
看起来你想说的是
$TMPFILE
而不是$TFILE
?对不起,你是对的,但我的脚本也是。。。谢谢你的锐利目光谢谢,我会试一试,让你知道我的结果。旁注:这是在什么地方记录的,还是我应该调整文档?现在它正在运行,但它不喜欢文件名(我想):没有名为post receive.12345的模块
+1,接受。尝试使用在python中具有特殊意义的点
,这使它能够工作。谢谢你的帮助。显然,fabric无法处理文件名中的任何特殊字符,需要一个.py
文件。最好在文档部分添加一个注释,说明文件标志和查找。虽然事后诸葛亮与此相关,但你最好能添加一个更明确的好名字和坏名字的例子。