Ткань -f опция не работает
Я уже некоторое время успешно использую Fabric со своего локального компьютера и, наконец, у меня есть достойный скрипт развертывания, который я хотел бы вызвать во время перехвата после получения git. Для этого у меня есть следующий код, который проверяется до 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 создается правильно (он содержит мой файл). Выполнение указанных выше действий вручную с созданным файлом в / tmp / приводит к тому же поведению.
Хуже всего то, что это "напоминает" мне, что я могу использовать -f
указать файл... который я.
1 ответ
Это потому, что он хочет файл с.py в конце. Измените временный файл, чтобы использовать это расширение файла, и он будет работать. Это скорее всего артефакт, который хочет, чтобы люди использовали классы каталогов в стиле Python, такие как fabfile/__init__.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")