ตัวเลือก Fabric -f ไม่ทำงาน

ฉันใช้ Fabric ประสบความสำเร็จจากเครื่องในพื้นที่ของฉันมาระยะหนึ่งแล้วและในที่สุดก็มีสคริปต์การปรับใช้ที่เหมาะสมซึ่งฉันต้องการเรียกใช้ระหว่างที่ขอคอมไพล์หลังการรับ เพื่อให้บรรลุผลนี้ ฉันมีโค้ดต่อไปนี้ ซึ่งทั้งหมดได้รับการตรวจสอบจนถึงคำสั่ง fab:

deploy=... # CODE TO DETERMINE IF YOU SHOULD DEPLOY

if [[ $deploy ]] ; then
  TMPFILE="/tmp/$(basename $0).$$.tmp"
  git cat-file blob release:fabfile.py > $TMPFILE
  fab -f $TMPFILE deploy:servername.mycompany.com
  rm $TMPFILE
fi

ฉันได้ตรวจสอบแต่ละขั้นตอนแล้ว และมั่นใจว่า TMPFILE กำลังถูกสร้างขึ้นอย่างถูกต้อง (ซึ่งมีไฟล์ fabfile ของฉันอยู่) การรันขั้นตอนข้างต้นด้วยตนเองด้วยไฟล์ที่สร้างขึ้นใน /tmp/ ทำให้เกิดพฤติกรรมเดียวกัน

ส่วนที่แย่ที่สุดคือมัน "เตือน" ฉันว่าฉันสามารถใช้ -f เพื่อระบุ fabfile...ซึ่งฉันเป็น


person Chris Pfohl    schedule 31.07.2013    source แหล่งที่มา
comment
ดูเหมือนว่าคุณอยากจะพูด $TMPFILE แทน $TFILE ใช่ไหม   -  person devnull    schedule 31.07.2013
comment
ขออภัย คุณพูดถูก แต่สคริปต์ของฉันก็เช่นกัน... ขอบคุณสำหรับสายตาที่เฉียบคม   -  person Chris Pfohl    schedule 31.07.2013


คำตอบ (1)


เนื่องจากต้องการไฟล์ที่มี .py ต่อท้าย เปลี่ยนไฟล์ชั่วคราวของคุณเพื่อใช้นามสกุลไฟล์นี้และมันจะใช้งานได้ มันเป็นสิ่งประดิษฐ์ที่มีแนวโน้มมากที่สุดที่ fab ต้องการอนุญาตให้ผู้คนใช้คลาสไดเร็กทอรีสไตล์หลามเช่น fabfile/__init__.py จะถูกเลือกด้วย -f fabfile

ตัวอย่างของพฤติกรรมนี้ที่นี่:

╭─mgoose@Macintosh  ~
╰─$ fab -f tmp.py test
[localhost] local: whoami
mgoose

Done.
╭─mgoose@Macintosh  ~
╰─$ mv tmp.py tmp.py.tmp
╭─mgoose@Macintosh  ~
╰─$ fab -f tmp.py.tmp test

Fatal error: Couldn't find any fabfiles!

Remember that -f can be used to specify fabfile path, and use -h for help.

Aborting.
╭─mgoose@Macintosh  ~
╰─$ cat tmp.py.tmp                                                                                                                                                                                                                        1 ↵
from fabric.api import local, task

@task
def test():
    local("whoami")
person Morgan    schedule 01.08.2013
comment
ขอบคุณครับ ผมจะลองดูและแจ้งผลให้ทราบครับ - person Chris Pfohl; 01.08.2013
comment
หมายเหตุด้านข้าง: เอกสารนี้มีบันทึกไว้ที่ไหนสักแห่งหรือฉันควรปรับแต่งเอกสารหรือไม่ - person Chris Pfohl; 01.08.2013
comment
ตอนนี้มันกำลังทำงานอยู่ แต่มันไม่ชอบชื่อไฟล์ (ฉันคิดว่า): No module named post-receive.12345 +1 ยอมรับ พยายามโดยไม่มี dot ซึ่งมีความหมายพิเศษในหลาม - person Chris Pfohl; 01.08.2013
comment
นั่นทำให้มันได้ผล ขอบคุณสำหรับความช่วยเหลือของคุณ. เห็นได้ชัดว่า Fabric ไม่สามารถจัดการอักขระพิเศษใดๆ ในชื่อไฟล์ได้ และจำเป็นต้องมีไฟล์ .py - person Chris Pfohl; 01.08.2013
comment
อาจเป็นการดีหากเพิ่มบันทึกย่อในส่วนเอกสารสำหรับแฟล็กไฟล์และการค้นพบ แม้ว่า โปรดทราบที่นี่ หลังจากที่ข้อเท็จจริงเกี่ยวข้องกับ นี้ แต่คุณควรเพิ่มตัวอย่างชื่อที่ดีและไม่ดีให้ชัดเจนยิ่งขึ้น - person Morgan; 01.08.2013
comment
มันชัดเจนมากสำหรับการใช้งานโดยไม่มีตัวเลือก -f สิ่งนี้ยังไม่ชัดเจน: ชื่อเฉพาะที่จะค้นหาอาจถูกแทนที่ในบรรทัดคำสั่งด้วยตัวเลือก -f ... ตัวอย่างเช่น หากคุณต้องการตั้งชื่อ fabfile fab_tasks.py ของคุณ คุณสามารถสร้างไฟล์ดังกล่าวได้ จากนั้นเรียก fab -f fab_tasks.py ‹task name› ... หากชื่อ fabfile ที่กำหนดมีองค์ประกอบเส้นทางอื่นที่ไม่ใช่ชื่อไฟล์ (เช่น ../fabfile.py หรือ /dir1/dir2/custom_fabfile) จะถือว่าเป็น เส้นทางของไฟล์และตรวจสอบการมีอยู่โดยตรงโดยไม่ต้องค้นหาใดๆ ดูเหมือนว่าคุณควรจะสามารถใช้ชื่ออะไรก็ได้เลย - person Chris Pfohl; 02.08.2013
comment
ขอบคุณมากสำหรับความช่วยเหลือของคุณในคำถามผ้าทั้งสองของฉัน - person Chris Pfohl; 02.08.2013