Fabric: "*무언가*κ°€ 무엇인지 λͺ°λΌμš”!" fabric2 μ‹€ν–‰ ν›„

에 λ§Œλ“  2018λ…„ 08μ›” 16일  Β·  18μ½”λ©˜νŠΈ  Β·  좜처: fabric/fabric

λ‚˜λŠ” 직물에 μ΅μˆ™ν•˜μ§€ μ•Šκ³  그것을 μž‘λ™μ‹œν‚€λŠ” 데 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그것을 μ‹€ν–‰ν•˜λ €κ³  ν•  λ•Œ pip3λ₯Ό 톡해 λ¨Όμ € μ„€μΉ˜ν–ˆλŠ”λ° 'fab' λͺ…령을 찾을 수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. κ²°κ΅­ /home/me/.local/bin/fab2μ—μ„œ μ°Ύμ•˜μŠ΅λ‹ˆλ‹€.

μ—¬κΈ°κ°€ μ •ν™•ν•œ κ³³μΈκ°€μš”?

두 번째둜 λ‚΄κ°€ κ·Έλ ‡κ²Œ μ‹€ν–‰ν•  λ•Œλ§ˆλ‹€

/home/me/.local/bin/fab2 version

λ‚˜λŠ” μ–»λ‹€

(2, 3, 1)
2.3.1
No idea what 'version' is!
import fabric
if hasattr(fabric, '__version__'):
    # For fabric2
    print(fabric.__version_info__)
    print(fabric.__version__)   # for a version tuple
else:
    # for fabric1
    from fabric.api import *
    print(env.version)

/home/me/.local/bin/fab2κ°€ μ˜¬λ°”λ₯Έ μœ„μΉ˜μž…λ‹ˆκΉŒ?
'버전'이 무엇인지 λͺ¨λ¦…λ‹ˆλ‹€!'λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ? μ™œ λ‚˜νƒ€λ‚©λ‹ˆκΉŒ?

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@ajmcateer , λ‚˜λ„μ΄ λ¬Έμ œκ°€μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ¬Έμ œλŠ” μƒˆλ‘œμš΄ 패브릭 μž‘μ—… 방법(μ—¬κΈ°μ—μ„œ λ…Όμ˜λ¨ - http://docs.fabfile.org/en/1.14/usage/tasks.html)이 @task λ°μ½”λ ˆμ΄ν„°λ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이에 μƒμ‘ν•˜λŠ” "Hello World" μ˜ˆλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

from fabric import task

<strong i="8">@task</strong>
def hello(ctx):
  print("Hello World")

'fab hello'λ₯Ό μ‹€ν–‰ν•˜λ©΄ μ˜ˆμƒλ˜λŠ” 좜λ ₯이 μƒμ„±λ©λ‹ˆλ‹€.

λͺ¨λ“  18 λŒ“κΈ€

fabfileμ—μ„œ "version"μ΄λΌλŠ” μž‘μ—… κΈ°λŠ₯을 μ°Ύκ³  μžˆμ§€λ§Œ μ°Ύμ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. fab --version λŠ” κ±°κΈ°μ—μ„œ μ›ν•˜λŠ” 것을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

$HOME/.local/bin/ λŠ” pip install --user ... λ•Œ pipκ°€ μ‹€ν–‰ κ°€λŠ₯ν•œ "μ§„μž…μ "을 μ„€μΉ˜ν•˜λŠ” κ³³μž…λ‹ˆλ‹€ - PATH 에 $HOME/.local/bin λ₯Ό μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€(예: ~/.bash_profile λ˜λŠ” ~/.bashrc ). sudo pip install Fabric ( --user 없이 )λ₯Ό μˆ˜ν–‰ν–ˆλ‹€λ©΄ μ‹€ν–‰ κ°€λŠ₯ν•œ μ§„μž…μ μ„ /usr/local/bin/ 에 넣을 κ²ƒμž…λ‹ˆλ‹€. μ΄λŠ” μ•„λ§ˆλ„ PATH 에 이미 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€. λ˜λŠ” python -m fabric <fab args> λŒ€μ‹  μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” 패브릭 κ°μ‚¬ν•©λ‹ˆλ‹€ --version이 잘 μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€

슀크립트λ₯Ό λ‹€μŒκ³Ό 같이 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.

def hello():
    print("Hello world!")

μ—¬μ „νžˆ ''μ•ˆλ…•ν•˜μ„Έμš”'κ°€ 무엇인지 λͺ¨λ¦…λ‹ˆλ‹€!'λΌλŠ” λ©”μ‹œμ§€κ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

Fabric 2에 λŒ€ν•œ νŠœν† λ¦¬μ–Όμ΄ μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” 그것에 λŒ€ν•΄ 무엇이든 μ–»λŠ” 데 지μ˜₯ 같은 μ‹œκ°„μ„ 보내고 μžˆμŠ΅λ‹ˆλ‹€. Fabric 1.14에 λŒ€ν•œ μžμŠ΅μ„œλ₯Ό μ°Ύμ•˜μ§€λ§Œ κ°€μ Έμ˜€κΈ°κ°€ μž‘λ™ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— ν˜„μž¬λ‘œμ„œλŠ” λ³„λ‘œ 도움이 λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 패브릭 2κ°€ λ‹€λ₯΄κ²Œ μ²˜λ¦¬ν•œλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.

fab λ˜λŠ” fab2둜 μ‹€ν–‰ν•˜λ©΄ λ™μΌν•œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

/home/me/fabric에 패브릭이 μžˆμŠ΅λ‹ˆλ‹€.

@ajmcateer , λ‚˜λ„μ΄ λ¬Έμ œκ°€μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ¬Έμ œλŠ” μƒˆλ‘œμš΄ 패브릭 μž‘μ—… 방법(μ—¬κΈ°μ—μ„œ λ…Όμ˜λ¨ - http://docs.fabfile.org/en/1.14/usage/tasks.html)이 @task λ°μ½”λ ˆμ΄ν„°λ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이에 μƒμ‘ν•˜λŠ” "Hello World" μ˜ˆλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

from fabric import task

<strong i="8">@task</strong>
def hello(ctx):
  print("Hello World")

'fab hello'λ₯Ό μ‹€ν–‰ν•˜λ©΄ μ˜ˆμƒλ˜λŠ” 좜λ ₯이 μƒμ„±λ©λ‹ˆλ‹€.

from fabric import task 와 @task λ°μ½”λ ˆμ΄ν„°κ°€ μžˆμŠ΅λ‹ˆλ‹€.
κ·Έλž˜λ„ 'λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€..' 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

μΆ”κ°€ μ„ΈλΆ€ 사항 :

$ fab --version 
Fabric 2.3.1
Paramiko 2.4.1
Invoke 1.1.1

$ python --version
Python 3.6.2

$ more tasks.py
#!/usr/bin/env python

from fabric import task

<strong i="10">@task</strong>
def build(c):
    import pdb; pdb.set_trace()
    print("Building!")

$ fab build -f tasks.py
No idea what 'build' is!

@mandravaze , fabfile.py에 μž‘μ—…μ΄ μžˆμ§€λ§Œ(이것이 ν™˜κ²½μ˜ 문제라고 생각함) λ‹€μŒ 쀄을 μ‚¬μš©ν•˜μ—¬ ν˜ΈμΆœν•©λ‹ˆλ‹€.
$팹 λΉŒλ“œ

이것은 λ‹Ήμ‹ μ˜ ν™˜κ²½μ— λ¬Έμ œκ°€ μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μ–΄λ–»κ²Œ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? μ–΄λ–€ μΆ”κ°€ 데이터λ₯Ό μ›ν•˜μ‹­λ‹ˆκΉŒ?

이 μœ„μΉ˜μ— μ–΄λ–€ 파일이 μžˆμŠ΅λ‹ˆκΉŒ? build()κ°€ fabfile.py에 μžˆμ–΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. μžˆλŠ” 경우 fabμ—μ„œ 잘λͺ»λœ νŒŒμΌμ„ 선택할 수 μžˆμŠ΅λ‹ˆλ‹€...

fab build -f tasks.py λͺ…λ Ήμ˜ @mandarvaze μ—λŠ” μ—¬λŸ¬ 가지 ν˜Όλ™μ΄ μžˆμŠ΅λ‹ˆλ‹€.

  • fab μžμ²΄μ— λŒ€ν•œ μΈμˆ˜λŠ” fab -f tasks.py build 와 같이 첫 번째 μž‘μ—… 이름 μ•žμ— 와야 ν•©λ‹ˆλ‹€.
  • -f ν”Œλž˜κ·ΈλŠ” μž‘μ—… μ»¬λ ‰μ…˜μ΄ μ•„λ‹Œ ꡬ성 νŒŒμΌμš©μž…λ‹ˆλ‹€. fab -c tasks build -c ν”Œλž˜κ·Έμž…λ‹ˆλ‹€(".py" ν™•μž₯자 μ—†μŒ!)
  • inv (호좜)의 경우 μž‘μ—…μ΄ μžˆλŠ” 파일이 ν˜„μž¬ λ””λ ‰ν„°λ¦¬μ˜ tasks.py이면 지정할 ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. fab (패브릭)의 경우 μž‘μ—…μ΄ μžˆλŠ” 파일이 ν˜„μž¬ λ””λ ‰ν„°λ¦¬μ˜ fabfile.py이면 지정할 ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

@ploxiln fab -c tasks build μž‘λ™ν•©λ‹ˆλ‹€. πŸ‘
감사 ν•΄μš”.

@ajmcateer , λ‚˜λ„μ΄ λ¬Έμ œκ°€μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ¬Έμ œλŠ” μƒˆλ‘œμš΄ 패브릭 μž‘μ—… 방법(μ—¬κΈ°μ—μ„œ λ…Όμ˜λ¨ - http://docs.fabfile.org/en/1.14/usage/tasks.html)이 @task λ°μ½”λ ˆμ΄ν„°λ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이에 μƒμ‘ν•˜λŠ” "Hello World" μ˜ˆλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

from fabric import task

<strong i="9">@task</strong>
def hello(ctx):
  print("Hello World")

'fab hello'λ₯Ό μ‹€ν–‰ν•˜λ©΄ μ˜ˆμƒλ˜λŠ” 좜λ ₯이 μƒμ„±λ©λ‹ˆλ‹€.

어리석은 μ§ˆλ¬Έμ— μ£„μ†‘ν•˜μ§€λ§Œ 'ctx'μΈμˆ˜κ°€ ν•„μš”ν•œ μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ? 뭐야?

패브릭 2μ—μ„œ μ˜¬λ°”λ₯Έ μ‹œμŠ€ν…œμ—μ„œ μ‹€μ œλ‘œ λͺ…령을 μ‹€ν–‰ν•˜λ €λ©΄ ctx κ°€ ν•„μš”ν•©λ‹ˆλ‹€(예: ctx.run("hostname") ).

λ¬Έμ œκ°€ μž‘μ—… μΈμˆ˜μ— λŒ€ν•΄ 이 였λ₯˜λ₯Ό λ°›λŠ” 것이라면 인수λ₯Ό μ˜¬λ°”λ₯Έ ν˜•μ‹μœΌλ‘œ μ „λ‹¬ν•˜μ§€ μ•Šκ³  μž‘μ—… 이름을 μ§€μ •ν•œ λ°©μ‹μœΌλ‘œ μ „λ‹¬ν•˜κΈ° λ•Œλ¬ΈμΌ 수 μžˆμŠ΅λ‹ˆλ‹€.

fab mytask --task-name value

~ μ•„λ‹ˆλ‹€

fab mytask --task_name value

λ‚˜λŠ” 이것이 문제의 μžλ¦¬κ°€ μ•„λ‹ˆλΌλŠ” 것을 μ•Œκ³  μžˆμ§€λ§Œ μ—¬κΈ°μ—μ„œ λλ‚¬μœΌλ―€λ‘œ λ‚˜μ™€ 같은 λ¬Έμ œκ°€ μžˆλŠ” λ‹€λ₯Έ μ‚¬λžŒμ„ μœ„ν•΄ 이것을 남길 κ²ƒμž…λ‹ˆλ‹€.

패브릭 2μ—μ„œ μ˜¬λ°”λ₯Έ μ‹œμŠ€ν…œμ—μ„œ μ‹€μ œλ‘œ λͺ…령을 μ‹€ν–‰ν•˜λ €λ©΄ ctx κ°€ ν•„μš”ν•©λ‹ˆλ‹€(예: ctx.run("hostname") ).

μš°μ„  정보 κ°μ‚¬ν•©λ‹ˆλ‹€!!

λΆˆν–‰νžˆλ„ Fabric 2λŠ” μ™„μ „νžˆ λ‘”ν•˜λ‹€κ³  λ§ν•΄μ•Όν•©λ‹ˆλ‹€. 2.x의 λ…Όλ¦¬λŠ” 맀우 직관적이지 μ•ŠμœΌλ©° μ‚¬μš© 방법에 λŒ€ν•œ 쒋은 κΈ°λ³Έ μžμŠ΅μ„œκ°€ λ§Žμ§€ μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ–΄μ©Œλ©΄ λ‚΄κ°€ λ­”κ°€λ₯Ό λ†“μΉ˜κ³  μžˆμ§€λ§Œ 1.x의 논리와 이 1.x μžμŠ΅μ„œμ˜ ν’ˆμ§ˆμ„ μ‚΄νŽ΄λ³΄μ‹­μ‹œμ˜€. https://docs.fabfile.org/en/1.14/tutorial.html. 그런 λ‹€μŒ 2.x에 λŒ€ν•œ λ™λ“±ν•œ μžμŠ΅μ„œλ₯Ό μ°Ύμ•„λ³΄μ‹­μ‹œμ˜€ ....

1.x의 비곡식 ν¬νŠΈκ°€ μžˆλ‹€λŠ” 것은 λ†€λΌμš΄ 일이 μ•„λ‹™λ‹ˆλ‹€. 그리고 그듀은 그것을 3.x라고 λΆ€λ₯΄κ³  μžˆμŠ΅λ‹ˆλ‹€.

@task λ°μ½”λ ˆμ΄ν„°κ°€ ν•„μš”ν•˜κ³  μ»¨ν…μŠ€νŠΈ 개체λ₯Ό 전달해야 ν•˜λŠ” λ“±μ˜ μ„ΈλΆ€ μ •λ³΄λŠ” Fabric에 λŒ€ν•œ 곡개 λ¬Έμ„œμ˜ "κ°œμš” 및 μžμŠ΅μ„œ" μ„Ήμ…˜μ— μžˆλ‹€λŠ” 일반적인 μ°Έκ³  사항: https://docs .fabfile.org/en/1.8/tutorial.html

μ €λŠ” Fabric 1을 많이 μ‚¬μš©ν•˜λŠ” μ‚¬μš©μžμ˜€μœΌλ©° 이 문제 티켓을 μ°ΎκΈ° 전에 이 μ—°μŠ΅μ΄ Fabric 2에 λŒ€ν•œ μƒˆλ‘œμš΄ 의미λ₯Ό κ°€λ₯΄μ³μ€€λ‹€κ³  μˆœμ§„ν•˜κ²Œ μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€. λ¬Έμ„œκ°€ 본질적으둜 μ˜¨λ³΄λ”©ν•˜λŠ” μ‚¬λžŒλ“€μ„ μ˜€λ„ν•˜κΈ° λ•Œλ¬Έμ— 채택을 μ •λ§λ‘œ λ°©ν•΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 당신이 κ·Έ νŽ˜μ΄μ§€μ—μ„œ μ–΄λ–»κ²Œ λλ‚¬λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. https://docs.fabfile.org/en/2.5/getting-started.html 을 보고 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€! μ•„λ§ˆλ„ 미래의 μ—¬ν–‰μžκ°€ 1 μ‹œλ¦¬μ¦ˆ λ¬Έμ„œμ— λš±λš±ν•œ "DEPRECATED" 헀더λ₯Ό λ˜μ§€λŠ” 데 도움이 될 κ²ƒμž…λ‹ˆλ‹€. λ‚˜λŠ” 졜고의 Google κ²°κ³Ό λ˜λŠ” 곡식 패브릭 μ›Ή μ‚¬μ΄νŠΈ λ¬Έμ„œμ—μ„œ 이 νŽ˜μ΄μ§€λ‘œ μ΄λ™ν–ˆλ‹€κ³  ν™•μ‹ ν•©λ‹ˆλ‹€. 두 경우 λͺ¨λ‘ μ „μžλŠ” Fabric νŒ€μ—μ„œ μ œμ–΄ν•  수 μžˆλŠ” 것이 μ•„λ‹ˆμ§€λ§Œ λ§Žμ€ 잠재적인 μ±„νƒμžκ°€ λ°œμƒν•˜κ³  μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 이 쒌절감과 μ΅œμ‹  λ¬Έμ„œλ₯Ό μ°Ύμ•„μ•Ό ν•  ν•„μš”μ„±μ— λŒ€ν•œ κ²½κ³ λ₯Ό λ°›λŠ” 것이 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€(곡식 Python ν˜ΈμŠ€νŒ… λ¬Έμ„œλŠ” μœ μ‚¬ν•œ νŒ¨ν„΄ iircλ₯Ό λ”°λ¦…λ‹ˆλ‹€).

λ¬Έμ„œκ°€ 본질적으둜 μ˜¨λ³΄λ”©ν•˜λŠ” μ‚¬λžŒλ“€μ„ μ˜€λ„ν•˜κΈ° λ•Œλ¬Έμ— 채택을 μ •λ§λ‘œ λ°©ν•΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Fabric의 μƒˆλ‘œμš΄ μ‚¬μš©μžμž…λ‹ˆλ‹€. "Fabric Python"을 κ²€μƒ‰ν•˜κ³  "κ°œμš” 및 μžμŠ΅μ„œ"λΌλŠ” 링크λ₯Ό ν΄λ¦­ν–ˆμŠ΅λ‹ˆλ‹€. 예, μ €λŠ” 이것이 정말 ν˜Όλž€μŠ€λŸ½κ³  ν”„λ‘œμ„ΈμŠ€ μ΄ˆκΈ°μ— 잘λͺ»λœ λ°©ν–₯으둜 갈 수 μžˆλ‹€λŠ” 것에 맀우 λ†€λžμŠ΅λ‹ˆλ‹€.

λ§Žμ€ 잠재적인 μ±„νƒμžκ°€ μ΄λŸ¬ν•œ μ’Œμ ˆμ„ κ²ͺκ³  있으며 μ΅œμ‹  λ¬Έμ„œλ₯Ό 찾을 ν•„μš”κ°€ μžˆλ‹€λŠ” κ²½κ³ λ₯Ό λ°›λŠ” 것이 도움이 될 것이라고 μƒκ°ν•©λ‹ˆλ‹€(곡식 Python ν˜ΈμŠ€νŒ… λ¬Έμ„œλŠ” μœ μ‚¬ν•œ νŒ¨ν„΄ iircλ₯Ό λ”°λ¦…λ‹ˆλ‹€).

예.

λ˜ν•œ λ‹€μŒμ€ κ²°κ³Ό νŽ˜μ΄μ§€μž…λ‹ˆλ‹€.

Screenshot from 2020-11-16 22-43-32

도메인을 μ œμ–΄ν•˜λŠ” β€‹β€‹κ²½μš° λ“€μ—¬μ“°κΈ°λœ 링크λ₯Ό ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€. "DEPRECATED" 헀더λ₯Ό μΆ”κ°€ν•˜λŠ” 것 외에도 검색 κ²°κ³Όμ—μ„œ 1.x ν•­λͺ©μ„ μ œκ±°ν•˜λŠ” 것이 κ°€λŠ₯ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이것을 μš°μ—°νžˆ λ°œκ²¬ν–ˆκ³  λ§ˆμΉ¨λ‚΄ κ³ μΉ  μˆ˜μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μ›λ‹¨μ—λŠ” 이상이 μ—†μŠ΅λ‹ˆλ‹€.
μ—¬κΈ° λ‚΄κ°€ ν•œ 일이 μžˆμŠ΅λ‹ˆλ‹€.

╰─$ fab --version
Fabric 2.5.0
Paramiko 2.7.2
Invoke 1.4.1

λ‚΄ fabfile.py :

from fabric.tasks import task

<strong i="11">@task</strong>
def test(ctx, title):
    print("ctx:", ctx)
    print("title:", title)

μž‘μ—…μ„ μ‹€ν–‰ν•˜κΈ°λ§Œ ν•˜λ©΄ λ‹€μŒμ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

╰─$ fab test                                                                                                                                                                                                                      
'test' did not receive required positional arguments: 'title'

이것은 title λ₯Ό 인수둜 κΈ°λŒ€ν•˜κ³  μžˆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.
λ”°λΌμ„œ 인수λ₯Ό μ „λ‹¬ν•˜μ‹­μ‹œμ˜€.

fab test title="hello world"

μ‚°μΆœ:

ctx: <your current context. Don't worry about it>
title: title=hello world

κ·ΈλŸ¬λ‚˜ μ „λ‹¬λœ μΈμˆ˜λŠ” λ¬Έμžμ—΄μ΄λΌλŠ” 점에 μœ μ˜ν•˜μ‹­μ‹œμ˜€. = 둜 λΆ„ν• ν•΄μ•Ό ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄:

<strong i="28">@task</strong>
def test(ctx, title):
    print("ctx:", ctx)
    print("title type:", type(title))
    print("title:", title)
    print("title value:", title.split("=")[1])

운영:

fab test title="hello world"

μ‚°μΆœ:

ctx: ...
title type: <class 'str'>
title: title=hello world
title value: hello world

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰