ฉันต้องนำไซต์ไปควบคุมเวอร์ชันและตั้งค่าสภาพแวดล้อมการรวมอย่างต่อเนื่อง


41

ฉันเป็นผู้ประกอบการที่มีโครงการ Drupal 6x ที่เริ่มมีขนาดเล็กพอที่จะไม่ต้องการการควบคุมเวอร์ชัน (ต่อผู้พัฒนา) แต่ตอนนี้ฉันมั่นใจแล้วว่าไม่มีทางที่จะทำได้ มีเอกสารมากมายเกี่ยวกับ JIRA พร้อมเรื่องราวผู้ใช้ที่เขียนอย่างดีครอบคลุมทุกสิ่ง ฉันอ่านเกี่ยวกับวิธีการนี้สามารถทำได้และมาพร้อมกับแผนต่อไปนี้ -

  1. แยกรหัสไซต์ออกจากฐานข้อมูลโดยใช้โมดูล
    1. บริบท
    2. คุณสมบัติ
    3. แขนที่แข็งแรง
    4. Profiler
  2. วางรหัสในที่เก็บ SVN และสร้างไซต์การแสดงละคร
  3. สร้างมิรเรอร์ของเซิร์ฟเวอร์ staging บนเซิร์ฟเวอร์การผลิต EC2
  4. สร้างการทดสอบซีลีเนียมและรันบนคลาวด์โดยใช้Saucelabs
  5. สร้างเวิร์กโฟลว์การสร้างใน JIRA Studio โดยใช้ Elastic Bamboo เพื่อเรียกใช้การอัปเดตอัตโนมัติ
  6. อัพเดตและติดตั้งโปรไฟล์โดยใช้Drush Make
  7. เรียกใช้การอัปเดตบนเซิร์ฟเวอร์ที่ใช้งานจริง (ฉันไม่แน่ใจ)

ในการเริ่มต้นฉันได้ทำรายการ "คุณลักษณะ" ประมาณ 50 รายการโดยแต่ละรายการมีองค์ประกอบ (มุมมองประเภทเนื้อหาโมดูล ฯลฯ ) ไม่ต้องสงสัยเลยว่าสิ่งนี้จะท้าทายเนื่องจากไซต์ประกอบด้วยโมดูลและบริการเว็บที่กำหนดเองเกี่ยวกับโหลไม่ต้องพูดถึง "แอปพลิเคชัน" ประเภทเนื้อหาที่มีรหัสที่กำหนดเองอีกโหลที่มีรหัสที่กำหนดเอง (ซึ่งส่วนใหญ่ฉันต้องการ . สิ่งที่ดีคือเว็บไซต์ยังไม่ได้ทำการผลิตดังนั้นความเสี่ยงยังมี จำกัด

ใครบ้างมีประสบการณ์ในการทำสิ่งที่คล้ายกัน? สิ่งที่ฉันควรคาดหวังจากข้อผิดพลาดและข้อ จำกัด ? ฉันขอขอบคุณคำแนะนำใด ๆ สำหรับการปรับปรุง / แก้ไขแผนข้างต้นหรือข้อมูลเชิงลึกหรือคำแนะนำใด ๆ ที่ผู้เชี่ยวชาญของคุณอาจมีสำหรับฉัน


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

3
คำถามที่น่าสนใจอย่างแน่นอน แต่ก็ยากที่จะตอบ คุณกำลังถามคำถามหลายข้อดังนั้นจึงเป็นเรื่องยากที่จะให้คำตอบที่สมบูรณ์ / ดีที่สุด เพียงคำใบ้เดียว: IMHO ไม่มีโปรเจ็กต์ใดที่เล็กเกินไปสำหรับการควบคุมเวอร์ชัน โดยเฉพาะอย่างยิ่งตอนนี้ด้วย VCS แบบกระจายเช่น git ใช้เวลาเหมือน 5s ที่จะนำโค้ดของคุณไปไว้ในที่เก็บในเครื่อง ดูเพิ่มเติมที่drupal.stackexchange.com/questions/316/…
Berdir

ในการหวนกลับแน่นอนไม่มีโครงการใดที่เล็กเกินไปสำหรับการควบคุมเวอร์ชัน (ถ้าฉันรู้เพียงเท่านั้น) ฉันผ่านการเชื่อมโยงนั้นและมันก็ปรากฏขึ้นอีกคำถามที่สำคัญ ถ้าเราจะดึงแกน Drupal จากที่เก็บ git ของตัวเองเราควรใช้ git สำหรับโครงการ Drupal แทน SVN หรือไม่? เหตุผลที่เราใช้ SVN นั้นเป็นเพราะมีการสนับสนุนดั้งเดิมใน JIRA Studio ซึ่งเป็นสิ่งสำคัญสำหรับเราเนื่องจากเราต้องการใช้คุณลักษณะการสร้างอัตโนมัติของ JIRA (Elastic Bamboo) ขออภัยสำหรับคำถามหลายข้อ :-(
druflex

UPDATE: หลังจากตรวจสอบรหัสแล้วมีการพิจารณาว่ามีรหัสที่กำหนดเองจำนวนมากในโครงการซึ่งจะเป็นการยากที่จะส่งออกโดยใช้คุณสมบัติ ตัวเลือกต่อหน้าเราคือ - (1) เสร็จสิ้นและเผยแพร่ตามที่เป็นอยู่และเริ่มการพัฒนาแบบขนานใน D7 โดยใช้การควบคุมเวอร์ชันที่เหมาะสม ซึ่งหมายถึงการถกฐานข้อมูลในภายหลัง น่ากลัว (2) ทำซ้ำฟีเจอร์ที่จำเป็นใน D6 ปล่อยแล้วทำการรวมต่อเนื่อง (3) ทำซ้ำฟีเจอร์ที่จำเป็นใน D7 ปล่อยแล้วทำการรวมอย่างต่อเนื่อง คำถามหลักคือตัวเลือกเหล่านี้จะใช้เวลานานเท่าใด ถ้าคุณเป็นฉันคุณจะลงคะแนนให้อะไร
druflex

คำตอบ:


23

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

  1. ดังที่ฉันได้กล่าวไปแล้วในความคิดเห็นไม่มีโครงการใดที่เล็กเกินไปสำหรับการควบคุมเวอร์ชัน ฉันแนะนำ Git เป็นการส่วนตัว เหตุผลคือความเร็วที่ยอดเยี่ยมที่สุดของมัน (เวลารอเป็น git วัดเป็นมิลลิวินาทีไม่ใช่วินาที) และฟีเจอร์มากมาย มันอาจจะเป็นบิตยากที่จะหยิบขึ้นมาเพราะชื่อแปลกและข้อโต้แย้ง แต่เอกสารต่อไปนี้อธิบายมากของพวกเขาจริงๆดีhttp://www.eecs.harvard.edu/~cduan/technical/git/ อีกเหตุผลก็คือตอนนี้ drupal.org ใช้งานแล้วดังนั้นการรู้ git จะช่วยคุณได้เมื่อคุณต้องการมีส่วนร่วมในการช่วยเหลือ

  2. ที่กล่าวว่าหากคุณต้องการใช้ SVN ด้วยเหตุผลบางประการ (เช่นการรวมเข้ากับบริการที่คุณวางแผนจะใช้) ให้ลองทำเช่นนั้น SVN ทำงานได้ดีเช่นกันและดีกว่าไม่มีการควบคุมแหล่งที่มา (เว้นแต่คุณจะขอ Linus Torvalds .. ) นอกจากนี้ยังมีหลายวิธีในการโยกย้ายจาก VCS หนึ่งไปยังอีกหากคุณเปลี่ยนใจ SVN -> Git ทำงานได้ดีเช่น

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

  4. การเปลี่ยนจาก Drupal 6 เป็น Drupal 7 ไม่ใช่เรื่องเล็กน้อย โดยเฉพาะอย่างยิ่งกับรหัสที่กำหนดเองจำนวนมาก หมายเหตุมีเพียงการเปลี่ยนแปลง API จำนวนมากและแนวคิดใหม่ (เช่นระบบนิติบุคคล / ฟิลด์) นอกจากนี้ยังมีจุดที่โมดูลที่มีส่วนร่วมจำนวนมากยังไม่พร้อม

  5. การจัดการการปรับใช้เป็นหนึ่งในจุดอ่อนของ Drupal ที่ยังไม่เปลี่ยนแปลงมากนักใน Drupal 7 เราตระหนักถึงปัญหาและผู้คนกำลังทำงานอย่างหนักเพื่อแก้ไขปัญหานี้สำหรับ Drupal 8: http://groups.drupal.org / คุณสมบัติอื่น ๆ ช่วยได้ แต่มันไม่ได้เป็น bullet เงิน ไม่ใช่ทุกสิ่งที่สามารถส่งออกเป็นคุณลักษณะได้

  6. นอกจากนี้ยังมีตัวเลือก Drupal-specifc สองสามตัวสำหรับการปรับใช้ไซต์การแสดงละคร / การผลิต Pantheon (ยังอยู่ในช่วงเบต้า) และAcquia Dev Cloudอาจคุ้มค่าที่จะเช็คเอาท์

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

ดังนั้นนี่คือคำแนะนำของฉันสำหรับคำถามที่ปรับปรุงแล้วในความคิดเห็น:

เสร็จสิ้นและปล่อยตามที่เป็นอยู่แต่เริ่มใช้ VCS (ระบบควบคุมเวอร์ชัน) สำหรับ Drupal 6 ทันที สร้างสภาพแวดล้อมการจัดเตรียมสำหรับไซต์ของคุณ ดูโมดูล (ส่วนที่สนับสนุน) ที่คุณใช้และตรวจสอบว่าพอร์ตไปยัง Drupal 7 เป็นไปได้ที่จุดนั้นหรือไม่ อย่าดูถูกดูแคลนเวลาที่จะใช้ เริ่มปรับปรุงกระบวนการทดสอบ / การปรับใช้เริ่มต้นด้วยสิ่งที่คุณคิดว่าจะก่อให้เกิดประโยชน์ / ต้นทุนมากที่สุด

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


ขอบคุณมากสำหรับคำตอบที่ครอบคลุมมาก ฉันค่อนข้างจะตัดสินใจในสิ่งที่คุณแนะนำ รวมถึง Git จริงๆ ฉันจะย้าย JIRA จากโฮสต์ไปเป็นแบบสแตนด์อโลนดังนั้นฉันจึงสามารถใช้ปลั๊กอิน Git ได้ ดังนั้น D6 มันคือ ปล่อยเวอร์ชันปัจจุบันทันทีและเริ่มสร้างสำเนาแนวปฏิบัติที่เหมาะสมขึ้นใหม่ในแบบขนานโดยใช้รหัสที่มีอยู่ให้มากที่สุด ขอบคุณอีกครั้งสำหรับการสนับสนุน ไชโย!
druflex

+1 คำแนะนำที่ดีครอบคลุมสตรีมไปสู่โลกจริงและจริง คุณกำลังพูดจากประสบการณ์ ขอบคุณ
therobyouknow
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.