Python: развертывание с использованием библиотеки fabri c не работает - ОШИБКА: неизвестная команда "deploy: 3.6.3" - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть следующая реализация fabfile.py, которую я использовал для установки предыдущей версии (3.6.2) моего приложения:

from fabric.api import local, run, cd, env, lcd
from fabric.contrib.project import upload_project

git_source = 'git@bitbucket.org:somegitsource'
test_git = False
# Temporary folder defined relative to folder containing this script
temp_folder = '../temp'

def production():
    env.user = 'mywebapp'
    env.hosts = ['aHost']
    env.config = {
        'home': '/home/myDir'
    }

production()


def deploy(version):

    # go to correct location
    with cd(env.config['home']):
        run('mkdir {}'.format(version))
        with cd(version):

            # run and activate virtualenv
            run('virtualenv ve')
            run('. ve/bin/activate')

            checkout(version, test=test_git)

            run('rm -f production')
            with cd('code'):
                pass
                # run("./manage.py sitetree_resync_apps")
                # run("./manage.py migrate")

        run('ln -s {} production'.format(version))
        # sudo /home/myDir/bin/restart-server


def checkout(version):

    local('mkdir {}'.format(temp_folder))
    with lcd(temp_folder):
        # Checkout latest code to temp folder
        local('git clone --branch {0} {1} --depth 1 code'.format(version, git_source))
        # local("gulp")
        upload_project(remote_dir='.')

после установки некоторых переменных среды сценарий определяет функцию, называемую deploy ,

Перестал работать скрипт. Если я вызываю его

fab deploy: 3.6.3

Я получаю сообщение об ошибке:

ОШИБКА: неизвестная команда "deploy: 3.6 .3 "

Я прочитал документацию Fabri c, но не могу понять, что делаю неправильно

1 Ответ

0 голосов
/ 17 февраля 2020

Поскольку вы объявляете вызываемую функцию (production), Фабри c не знает, какая функция является задачей, а какая нет

Сначала вы должны импортировать * Декоратор 1004 * из fabric.api, а затем оберните функцию deploy этим декоратором

...