Запускать локальные команды с помощью Fabric - PullRequest
0 голосов
/ 28 марта 2019

Мои среды основаны на окнах с vagrant или docker в качестве реальных сред.Я хотел бы настроить быстрый способ специального развертывания материалов непосредственно из Windows, но было бы здорово, если бы я мог просто запустить

fab deploySomething

И это, например, локально создать приложение реагирования, коммити нажать на сервер.Однако я застрял на локальном бите.

Моя настройка: Windows 10 Fabric 2 Python 3

У меня есть файл fabfile.py с простым тестом:

from fabric import Connection, task, Config

@task
def deployApp(context):
    config = Config(overrides={'user': 'XXX', 'connect_kwargs': {'password': 'YYY'}})
    c = Connection('123.123.123.123', config=config)
    # c.local('echo ---------- test from local')             
    with c.cd('../../app/some-app'):
        c.local('dir') #this is correct
        c.local('yarn install', echo=True)

Но я просто получаю:

'yarn' is not recognized as an internal or external command, operable program or batch file.

Вы можете заменить 'пряжу' почти чем угодно, я не могу запустить команду с локальной системой, которая прекрасно работает вручную.С отладкой все, что я получаю, это:

DEBUG:invoke:Received a possibly-skippable exception: <UnexpectedExit: cmd='cd ../../app/some-app && yarn install' exited=1>

, что не очень полезно ... кто-нибудь сталкивался с этим?Любые примеры локальных команд с фабрикой, которые я могу найти, относятся к старым версиям 1.X

1 Ответ

0 голосов
/ 13 апреля 2019

Чтобы запускать локальные команды, запускайте их с вашего context, а не с вашего соединения. н.б., это опустит вас до уровня invoke:

from fabric import task

@task
def hello(context):
    with context.cd('/path/to/local_dir'):
        context.run('ls -la')

Тем не менее, проблема, вероятно, в том, что вам нужен полный путь к yarn, поскольку путь вашей среды не был найден.

...