我的环境基于Windows,而Vagrant或docker为实际环境。我想建立一种直接从Windows直接临时部署内容的快速方法,如果我能运行就很好了
fab deploySomething
例如,这将在本地构建React应用,提交并推送到服务器。但是我被困在本地。
我的设置是: Windows 10 面料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.
您几乎可以用任何东西替换'yarn',我无法使用可以正常工作的local运行命令。启用调试后,我得到的只是:
DEBUG:invoke:Received a possibly-skippable exception: <UnexpectedExit: cmd='cd ../../app/some-app && yarn install' exited=1>
这不是很有帮助...有人碰到过这个吗?我可以找到的带有fabric的本地命令的任何示例似乎都是指旧的1.X版本
答案 0 :(得分:0)
要运行本地命令,请从context
而不是连接中运行它们。 n.b.,这使您进入invoke
级别:
from fabric import task
@task
def hello(context):
with context.cd('/path/to/local_dir'):
context.run('ls -la')
也就是说,问题可能是您需要yarn
的完全限定路径,因为您的环境路径尚未获得。