2013-07-31 55 views
0

我一直在我的本地機器上成功使用Fabric一會兒,最後有一個體面的部署腳本,我希望在git的post-receive hook期間調用它。爲了做到這一點,我有以下的代碼,所有這些都被驗證,直到fab命令:Fabric -f選項不起作用

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 (它包含我的fabfile)。手動運行上面的步驟(在/ tmp /中創建文件)會產生相同的行爲。

最糟糕的部分是,它「提醒」我可以使用-f來指定fabfile ...我就是這樣。

+0

看起來你想說的話'$ TMPFILE'而不是'$ TFILE'? – devnull

+0

對不起,你是對的,但我的腳本也是如此......感謝銳利的眼睛 – Crisfole

回答

1

這是因爲它需要一個帶有.py結尾的文件。改變你的臨時文件使用這個文件擴展名,它會起作用。這是最有可能的晶圓廠的希望,讓人們使用Python樣式的目錄類,如fabfile/__init__.py將與這裏的這種行爲-f fabfile

例被拾起的神器:

╭─[email protected] ~ 
╰─$ fab -f tmp.py test 
[localhost] local: whoami 
mgoose 

Done. 
╭─[email protected] ~ 
╰─$ mv tmp.py tmp.py.tmp 
╭─[email protected] ~ 
╰─$ 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. 
╭─[email protected] ~ 
╰─$ cat tmp.py.tmp                                                      1 ↵ 
from fabric.api import local, task 

@task 
def test(): 
    local("whoami") 
+0

謝謝,我會給你一個旋轉,讓你知道我的結果。 – Crisfole

+0

附註:是否記錄在某處,或者我應該調整文檔? – Crisfole

+0

所以現在它正在運行,但它不喜歡文件名(我認爲):'沒有名爲post-receive.12345'的模塊+1,接受。嘗試w/out在python中有特殊含義的'dot'。 – Crisfole