วิธีการจัดการเว็บไซต์อย่างมีประสิทธิภาพด้วย Drush ทำอย่างไร


คำตอบ:


29

"สร้างไฟล์" ในบริบท Drush และ Drupal กำหนดชุดของโมดูลธีมและไลบรารีที่ประกอบขึ้นเป็นไซต์ ในขณะที่หนึ่งสามารถติดทั้งไดเรกทอรีไซต์ / ทั้งหมด / โมดูลลงในคอมไพล์ทำให้ไฟล์เป็นเร็วกว่ามากในการจัดการทั้งสำหรับคอมไพล์และนักพัฒนา ด้านล่างเป็นไฟล์สร้างจากโครงการจริงของฉัน ฉันตัดออกไปมากเพราะไฟล์ทั้งหมดนั้นมีหลายร้อยบรรทัด แต่ฉันเก็บไว้พอที่จะแสดงฟังก์ชั่นทั้งหมดที่ฉันใช้

; API
api = 2

; Core
core = 7.x
projects[drupal][version] = 7.14

; Contrib modules
projects[date][version] = 2.0-alpha4
projects[email][version] = 1.0

; Media and file_entity go hand in hand - please make sure they work together.
projects[media][version] = 2.0-unstable5
projects[file_entity][version] = 2.0-unstable5

; Cron modules
projects[ultimate_cron][version] = 1.6
projects[background_process][version] = 1.12

; Performance modules
projects[expire][version] = 1.0-alpha2
projects[cache_actions][version] = 2.0-alpha3

; Unstable modules
projects[menu_node_views][type] = module
projects[menu_node_views][download][type] = git
projects[menu_node_views][download][url] = http://git.drupal.org/project/menu_node_views.git
projects[menu_node_views][download][revision] = f46dd41eb8c4e693a6642a6c461afa57d99a6f1b

projects[filefield_sources_plupload][type] = module
projects[filefield_sources_plupload][download][type] = git
projects[filefield_sources_plupload][download][url] = http://git.drupal.org/project/filefield_sources_plupload.git
projects[filefield_sources_plupload][download][revision] = da374770b80fcbc0dab17158d38c8436ef29caca

projects[menu_token][type] = module
projects[menu_token][download][type] = git
projects[menu_token][download][url] = http://git.drupal.org/project/menu_token.git
projects[menu_token][download][revision] = 8c18fbb

; Libraries
libraries[mediaelement][download][type] = "file"
libraries[mediaelement][download][url] = "https://github.com/johndyer/mediaelement/zipball/2.7.0"

; Patches

; #1491150: node_load in menu_node_menu_link_insert is not safe - http://drupal.org/node/1491150
projects[menu_node][patch][] = http://drupal.org/files/menu_node-node_load-in-menu_node_menu_link_insert-1491150-1.patch

; Fix rendering of relation endpoints
projects[relation][patch][] = http://drupal.org/files/relation_table_endpoints_break.patch
projects[relation][patch][] = http://drupal.org/files/relation_bundle_permissions.patch

libraries[jquery-json-min][download][type] = "file"
libraries[jquery-json-min][download][url] = "http://jquery-json.googlecode.com/files/jquery.json-2.3.min.js"
libraries[jquery-json-min][download][sha1] = "2a4615b93c65dd50f92117c570121035a0327fee"
libraries[jquery-json-min][destination] = "libraries/jquery-json"

บรรทัด api จะกำหนดว่า Drush จะใช้ API ใดในการใช้ไฟล์ที่เหลือ สิ่งสำคัญสิ่งหนึ่งที่ควรสังเกตเกี่ยวกับไฟล์คือโมดูลทั้งหมดมีรุ่นเฉพาะหรือชี้ไปที่ git ที่เจาะจง เราไม่เคยมีรุ่น -dev ในไฟล์ของเรา เมื่อเราปรากฏตัวขึ้นที่การประชุมลูกค้าหรือมอบไฟล์ให้กับเซิร์ฟเวอร์เจนกินส์จะต้องไม่มีความประหลาดใจใด ๆ เวอร์ชันที่แน่นอนที่รวมอยู่ในไฟล์ควรได้รับการทดสอบและคาดว่าจะผ่านการทดสอบทุกประเภท นี่เป็นสิ่งสำคัญที่จะสามารถส่งมอบสิ่งที่มีคุณภาพสูง

ใน บริษัท ของฉันข้อตกลงทั่วไปคือทุกทีมมี shell-script ชื่อ "build" ในรูทของที่เก็บซึ่งรับผิดชอบการตั้งค่าไซต์เพื่อให้การทดสอบอัตโนมัติสามารถทำงานโดย cross-team เดียวกัน การตั้งค่า CI

การอัพเดตโมดูลสามารถทำได้อย่างรวดเร็วโดยตรงบนไซต์เพื่อทำการทดสอบ แต่เป็นทางการโดยการอัพเดตไฟล์ make และสร้างไซต์ขึ้นใหม่

ทีมของฉันใช้สคริปต์สร้างชุดนี้ ฉันกำลังทำงานเพื่อย้ายฟังก์ชั่นส่วนใหญ่ไปเป็นส่วนขยายที่ควรใช้อย่างมาก Aegir รุ่น CLI ถ้าคุณต้องการ


1
อัจฉริยภาพ ขอบคุณที่สละเวลาเขียนสิ่งนี้มันมีประโยชน์มาก
ไคลฟ์

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

1
เล่นกับสิ่งที่ทำให้เมา ฉันเข้าใจเหตุผลทั้งหมดในการใส่หมายเลขรุ่นตายตัวในนั้น อย่างไรก็ตามคุณจะอัพเดทได้อย่างไร มี drush ที่เทียบเท่ากับ drush หรือไม่? ในบางจุดคุณต้องอัปเดตเวอร์ชันของคุณเป็นเวอร์ชันล่าสุด (โดยเฉพาะการอัปเดตความปลอดภัย) การทำเช่นนั้นด้วยตนเองด้วยโมดูลจำนวนมากดูเหมือนจะค่อนข้างน่าเบื่อ ...
7654

1
คำถาม Moar: คุณมีไฟล์. gitignore หรือไม่คุณหลีกเลี่ยงการรับไฟล์ "maked" ถ้าเป็นเช่นนั้นจะมีลักษณะอย่างไร พยายามที่จะทำสิ่งที่แฟนซีด้วยสัญลักษณ์แทนและ! แต่นั่นไม่ได้ผลกับไดเรกทอรี
Berdir

1
ฉันไม่เห็นด้วยจริงๆ การขาด -dev คือสิ่งที่ทำให้มั่นใจได้ถึงความมั่นคงไม่ใช่วิธีอื่น ๆ เป็นความรับผิดชอบของนักพัฒนาแต่ละคนในการตรวจสอบให้แน่ใจว่ามีการใช้แพตช์ซึ่งอาจหมายถึงการอ้างถึงการแก้ไขคอมไพล์แทนรีลีสที่เสถียร แต่ไม่เคยคาดเดาไม่ได้ - เดฟ
Letharion
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.