ขั้นตอนการทำงานของเซิร์ฟเวอร์ Git production / staging


108

ขณะนี้เว็บไซต์ของฉัน (เซิร์ฟเวอร์ที่ใช้งานจริง) มีโค้ดจำนวนมากอยู่แล้ว ตอนนี้ฉันต้องการเริ่มใช้ Git สำหรับโปรเจ็กต์ของฉันและตั้งค่าเซิร์ฟเวอร์การแสดงละครสำหรับทีมของฉัน มีใครให้คำแนะนำได้ไหม

นี่คือภาพในใจของฉัน:

        Production        - Production server which already have codes
            ↑             
         Staging          - New staging server, will install Trac too
         ↗↙ ↖↘          
  Developer1  Developer2  - Local development 

คำถามของฉันคือฉันควรเริ่มต้นอย่างไร?

นี่คือขั้นตอนบางอย่างในใจของฉัน:

  1. ทำgit initในเซิร์ฟเวอร์ที่ใช้งานจริง (ปลอดภัยหรือไม่?)
  2. clone repo จากการผลิตไปยังเซิร์ฟเวอร์การจัดเตรียม
  3. นักพัฒนาclonerepo จากการจัดเตรียมไปยังเครื่องท้องถิ่นของตน
  4. push ไฟล์ไปยังเซิร์ฟเวอร์การจัดเตรียมหลังจากเสร็จสิ้นการเปลี่ยน
  5. เมื่อการจัดเตรียมพร้อมpushทุกอย่างในการผลิต

ขั้นตอนการทำงานนี้สมเหตุสมผลหรือมีวิธีที่ดีกว่านี้หรือไม่

จะเป็นอย่างไรหากฉันต้องการเปลี่ยนไฟล์เพียงไฟล์เดียว

ต้นกำเนิด / ต้นแบบมีส่วนเกี่ยวข้องกับกระบวนการนี้หรือไม่ ?? ที่มาคือใคร? ฉันจะมีหลายต้นกำเนิดหรือไม่?

นอกจากนี้นักพัฒนาควรใช้เมื่อใดbranchในกรณีนี้

คำตอบ:


59

ควรใช้สาขาหลักสำหรับสาขาการผลิตและการพัฒนาสำหรับการจัดเตรียมเท่านั้น นักพัฒนาแต่ละคนควรสร้างสาขาในท้องถิ่นเพื่อเพิ่มคุณสมบัติใหม่จากนั้นรวมเข้ากับสาขาการพัฒนา หากคุณเพิ่งเริ่มใช้คอมไพล์ลองใช้ - http://github.com/nvie/gitflowนอกจากนี้ยังมีภาพที่ดีที่อธิบายถึงโมเดลการแยกคอมไพล์ - http://nvie.com/posts/a-successful-git- แบบจำลอง /


นี่คือคำตอบที่ดีกว่า ฉันไม่ค่อยคุ้นเคยกับแนวคิดของ Git branching
kayue

@bUg. คุณมีลิงค์ไปยังแหล่งข้อมูลบางส่วนที่อธิบายสาขาการพัฒนา -> ผลักไปที่ระบบการจัดเตรียมและสาขาหลัก -> ส่งไปยังเซิร์ฟเวอร์ที่ใช้งานจริงโดยละเอียดหรือไม่? บทความที่ยอดเยี่ยมแบบจำลองการแยกส่วน Git ที่ประสบความสำเร็จไม่ได้กล่าวถึงส่วนนั้นแม้ว่าจะกล่าวถึงแนวคิดที่ดีมากในการแยกสาขาและการกำหนดเวอร์ชันก็ตาม
Edgar Alloro

19

คำแนะนำของคุณดูโอเค แต่ฉันจะไม่ยอมให้นักพัฒนาส่งไปยังเซิร์ฟเวอร์การแสดงละครโดยตรง แต่ผู้รวมควรตรวจสอบสาขาอย่างรอบคอบและรวมเข้ากับสาขาหลัก (หรือสาขาการพัฒนาหากคุณใช้โมเดลการไหลของคอมไพล์ตามที่แนะนำโดย bUg) * บุคคลเดียวกันจะส่งไปยังเซิร์ฟเวอร์การจัดเตรียม

* ผู้รวมระบบ : " บุคคลที่เป็นศูนย์กลางที่ทำหน้าที่เป็นผู้รวมระบบในโครงการกลุ่มได้รับการเปลี่ยนแปลงที่เกิดขึ้นโดยผู้อื่นตรวจสอบและรวมเข้าด้วยกันและเผยแพร่ผลลัพธ์เพื่อให้ผู้อื่นใช้ ... "


1. เริ่มคอมไพล์ในเซิร์ฟเวอร์ที่ใช้งานจริง (ปลอดภัยหรือไม่)

ใช่ปลอดภัย แต่แน่นอนว่าคุณต้องตั้งค่าการอนุญาตที่เข้มงวดมากใน repo นี้ ฉันอาจจะเริ่มต้นด้วยcurlการนำเว็บไซต์ทั้งหมดไปยังดิสก์ในเครื่องถ้าฉันยังไม่มี

2. โคลน repo จากการผลิตไปยังเซิร์ฟเวอร์การจัดเตรียม

คุณควรมี repo "ส่วนกลาง" แยกจากทั้งการผลิตและเซิร์ฟเวอร์การจัดเตรียม สิ่งนั้นสามารถโคลนและผลักดันได้ตามต้องการ

3. นักพัฒนาทำการโคลน repo จากการจัดเตรียมไปยังเครื่องท้องถิ่นของตน

4. พุชไฟล์ไปยังเซิร์ฟเวอร์การจัดเตรียมหลังจากเสร็จสิ้นการเปลี่ยน

5. เมื่อการจัดเตรียมพร้อมแล้วให้ส่งทุกอย่างไปที่การผลิต

แทนที่ "staging" ด้วย "central" และฉันคิดว่าคุณโอเค แต่ปัญหาที่ใหญ่กว่าคือวิธีที่คุณจะทำงานกับสาขาและการรวมกันดังที่ bUg ชี้ให้เห็น


10
1: เพื่อให้ Git repo ปลอดภัยในการใช้งานจริงตรวจสอบให้แน่ใจว่าได้เพิ่มไฟล์. htaccess ที่มีคำว่า "Deny All" อยู่ข้างใน
kayue

2
2: repo "Central" ของ Felixyz หมายถึง repo เปล่า ใช้คำสั่ง --bare เพื่อสร้าง bare repo
kayue

1
@keyue 1: ยิ่งไปกว่านั้นให้เพิ่ม. htaccessRedirectMatch 404 /\.gitการผลิตของคุณเพื่อป้องกันโฟลเดอร์. gitignore , .gitattributesและ. git ของคุณ
ลีโอ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.