패브릭 작업에 매개 변수 전달
명령줄에서 "fab"을 호출할 때 패브릭 작업에 파라미터를 전달하려면 어떻게 해야 합니까?예를 들어,
def task(something=''):
print "You said %s" % something
$ fab task "hello"
You said hello
Done.
이 작업을 요청하지 않고 진행할 수 있습니까?fabric.operations.prompt
?
패브릭 2 태스크 인수 설명서:
http://docs.pyinvoke.org/en/latest/concepts/invoking-tasks.html#task-command-line-arguments
Fabric 1.X는 인수를 작업에 전달하기 위해 다음 구문을 사용합니다.
fab task:'hello world'
fab task:something='hello'
fab task:foo=99,bar=True
fab task:foo,bar
Fabric 문서에서 자세한 내용을 확인할 수 있습니다.
패브릭 2에서 인수를 작업 함수에 추가하기만 하면 됩니다.예를 들어, 통과하기 위해서는version
논박 대 과제deploy
:
@task
def deploy(context, version):
...
다음과 같이 실행합니다.
fab -H host deploy --version v1.2.3
패브릭은 옵션을 자동으로 문서화합니다.
$ fab --help deploy
Usage: fab [--core-opts] deploy [--options] [other tasks here ...]
Docstring:
none
Options:
-v STRING, --version=STRING
Fabric 1.x 인수는 매우 기본적인 문자열 구문 분석으로 이해되므로 보내는 방법에 조금 주의해야 합니다.
다음은 인수를 다음 테스트 함수에 전달하는 여러 가지 방법의 예입니다.
@task
def test(*args, **kwargs):
print("args:", args)
print("named args:", kwargs)
$ fab "test:hello world"
('args:', ('hello world',))
('named args:', {})
$ fab "test:hello,world"
('args:', ('hello', 'world'))
('named args:', {})
$ fab "test:message=hello world"
('args:', ())
('named args:', {'message': 'hello world'})
$ fab "test:message=message \= hello\, world"
('args:', ())
('named args:', {'message': 'message = hello, world'})
수식에서 셸을 제거하기 위해 이중 따옴표를 사용하지만 일부 플랫폼에서는 단일 따옴표가 더 나을 수 있습니다.패브릭에서 구분 기호를 고려하는 문자의 이스케이프도 참고합니다.
문서에서 자세한 내용은 http://docs.fabfile.org/en/1.14/usage/fab.html#per-task-arguments 에서 확인할 수 있습니다.
특히 하위 프로세스를 사용하여 스크립트를 실행하는 경우 모든 Python 변수를 문자열로 전달해야 합니다. 그렇지 않으면 오류가 발생합니다.변수를 int/boolean 유형으로 다시 변환해야 합니다.
def print_this(var):
print str(var)
fab print_this:'hello world'
fab print_this='hello'
fab print_this:'99'
fab print_this='True'
fabric2에서 한 작업에서 다른 작업으로 매개 변수를 전달하려는 사용자가 있다면 다음과 같은 환경 사전을 사용하십시오.
@task
def qa(ctx):
ctx.config.run.env['counter'] = 22
ctx.config.run.env['conn'] = Connection('qa_host')
@task
def sign(ctx):
print(ctx.config.run.env['counter'])
conn = ctx.config.run.env['conn']
conn.run('touch mike_was_here.txt')
그리고 실행:
fab2 qa sign
언급URL : https://stackoverflow.com/questions/8960777/pass-parameter-to-fabric-task
'programing' 카테고리의 다른 글
이름이 있는 DataTable 열 인덱스 가져오기 (0) | 2023.09.17 |
---|---|
C# XML 주석에 '<'자를 표시하는 방법은? (0) | 2023.09.12 |
ES6 제너레이터: 반복기의 스택 트레이스가 불량합니다.던지다 (err) (0) | 2023.09.12 |
바닥글에 워드프레스 jquery (0) | 2023.09.12 |
Swift에서 두 값 사이의 숫자를 "clamp"하는 표준 방법 (0) | 2023.09.12 |