Ткань -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")
Другие вопросы по тегам