การตั้งค่าวงจรการปรับใช้ / สร้าง / CI สำหรับโครงการ PHP


200

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

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

"วงจรการสร้าง" ฉันจินตนาการว่าจะทำสิ่งต่อไปนี้:

  • เซ็ตการแก้ไขจะถูกตรวจสอบใน SVN หลังจากผ่านการทดสอบในเครื่องแล้ว

  • ฉันเริ่มกระบวนการสร้าง การแก้ไข SVN HEAD ได้รับการตรวจสอบแก้ไขหากจำเป็นและพร้อมสำหรับการอัปโหลด

  • เอกสาร API ได้รับการสร้างขึ้นโดยอัตโนมัติ - หากฉันยังไม่ได้ตั้งรายละเอียดโดยใช้เทมเพลตเริ่มต้นให้สแกนฐานรหัสทั้งหมด

  • การแก้ไขใหม่ถูกปรับใช้กับตำแหน่งระยะไกลผ่าน FTP (รวมถึงการเปลี่ยนชื่อไดเรกทอรีบางส่วน chmodding การนำเข้าฐานข้อมูลและไลค์) นี่เป็นสิ่งที่ฉันชอบphingมาก แต่ฉันเปิดรับทางเลือกแน่นอน

  • การทดสอบหน่วยที่อยู่ในสถานที่ที่กำหนดไว้ล่วงหน้าจะถูกเรียกใช้ ฉันได้รับแจ้งเกี่ยวกับความล้มเหลวหรือความสำเร็จของพวกเขาโดยใช้ E-Mail, RSS หรือ (ควร) เอาท์พุท HTML ที่ฉันสามารถคว้าและใส่ลงในหน้าเว็บ

  • (เป็นทางเลือก) ไฟล์ข้อความ "changelog" ผู้ใช้ปลายทางในตำแหน่งที่กำหนดไว้ล่วงหน้าจะได้รับการอัปเดตด้วยส่วนที่กำหนดไว้ล่วงหน้าของข้อความยืนยัน ("ตอนนี้สามารถกรองทั้ง" foo "และ" bar "ได้ในเวลาเดียวกัน เวลา) ข้อความนี้ไม่จำเป็นต้องเหมือนกับข้อความยืนยัน SVN ซึ่งอาจมีข้อมูลภายในมากขึ้น

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

ฉันกำลังมองหา

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

  • โดยเฉพาะอย่างยิ่งการสอนทีละขั้นตอนที่ดีและคำแนะนำในการตั้งค่านี้

  • โซลูชันที่ให้การทำงานอัตโนมัติมากที่สุดเท่าที่จะเป็นไปได้ตัวอย่างเช่นโดยการสร้าง Skeleton API กรณีทดสอบและอื่น ๆ สำหรับแต่ละโครงการใหม่

และนอกจากนี้ยังมี

  • แนะนำผลิตภัณฑ์ สิ่งที่ฉันรู้คือphing / ant สำหรับการสร้างและphpUnderControlหรือHudsonสำหรับส่วนการรายงาน ฉันชอบพวกเขาทั้งหมดเท่าที่ฉันจะเห็น แต่แน่นอนว่าฉันไม่มีประสบการณ์โดยละเอียดกับพวกเขา

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

การตั้งค่าของฉัน

ฉันกำลังทำงานบน Windows ในพื้นที่ (7 เป็นที่แน่นอน) และโครงการไคลเอนต์ส่วนใหญ่จะทำงานใน LAMP stack ซึ่งมักจะเป็นพื้นที่สาธารณะที่ใช้ร่วมกัน (= ไม่มี SSH ระยะไกล) ฉันกำลังมองหาวิธีแก้ไขปัญหาที่ฉันสามารถเรียกใช้ในสภาพแวดล้อมของฉันเอง ฉันพร้อมที่จะตั้งค่า Linux VM สำหรับสิ่งนี้แล้วไม่มีปัญหา โซลูชันโฮสต์นั้นน่าสนใจสำหรับฉันหากพวกเขามีทุกด้านที่อธิบายไว้หรือมีความยืดหยุ่นเพียงพอที่จะโต้ตอบกับส่วนอื่น ๆ ของกระบวนการ

เงินรางวัล ฉันยอมรับคำตอบที่ฉันรู้สึกว่าจะให้ระยะทางมากที่สุด มีอินพุตที่ยอดเยี่ยมมากมายที่นี่ฉันหวังว่าฉันจะยอมรับมากกว่าหนึ่งคำตอบ ขอบคุณทุกคน!

คำตอบ:


76

ฉันเคยผ่านbuildbot , CruiseControl.net , CruiseControlและฮัดสัน แม้ว่าฉันจะชอบ CruiseControl * จริง ๆ แล้วมันเป็นเรื่องยุ่งยากมากเกินไปสำหรับกรณีการพึ่งพาที่ซับซ้อนจริงๆ buildbot ไม่ใช่เรื่องง่ายในการตั้งค่า แต่มันมีออร่าที่ดี (ฉันชอบหลามเลยนั่นคือทั้งหมด) แต่ฮัดสันชนะเหนือสามคนก่อนเพราะ:

  1. มันง่ายที่จะตั้งค่า
  2. ง่ายต่อการปรับแต่ง
  3. มันดูดีและมีฟังก์ชั่นภาพรวมที่ดี
  4. มันมีการอัพเดตแบบจุดและคลิกสำหรับตัวเองและปลั๊กอินที่ติดตั้งทั้งหมด นี่เป็นคุณสมบัติที่ดีจริงๆที่ฉันชอบมากขึ้นเรื่อย ๆ

Caveat: ฉันเคยใช้ linux เป็นพื้นฐานสำหรับการสร้างเซิร์ฟเวอร์ที่กล่าวถึงข้างต้น (CC.net ทำงานบนระบบโมโน ) แต่พวกเขาควรทั้งหมด - ตามเอกสาร - รันข้ามแพลตฟอร์ม

การตั้งค่าเซิร์ฟเวอร์ฮัดสัน

วิชาบังคับก่อน:

  • Java (1.5 จะให้บริการคุณได้ดี)
  • สิทธิ์ในการอ่านเพื่อเข้าถึงเซิร์ฟเวอร์การโค่นล้ม (ฉันมีบัญชีแยกต่างหากสำหรับผู้ใช้ฮัดสัน)

จากที่นี่มันเป็นเพียง:

java -jar hudson.war

สิ่งนี้จะเรียกใช้อินสแตนซ์ของเซิร์ฟเวอร์ขนาดเล็กทันทีที่คอนโซลของคุณและคุณควรจะสามารถเรียกดูการติดตั้งของคุณhttp://localhost:8080ได้หากคุณไม่มีสิ่งอื่นใดทำงานบนพอร์ตนั้นล่วงหน้า (คุณสามารถระบุพอร์ตอื่นได้โดยส่ง--httpPort=ANOTHER_HTTP_PORTตัวเลือกไปที่ คำสั่งข้างต้น) และทุกอย่างเป็นไปด้วยดีในกระบวนการ 'ติดตั้ง'

หากคุณไปที่ไดเรกทอรีปลั๊กอินที่มีอยู่ ( http://localhost:8080/pluginManager/available) คุณจะพบปลั๊กอินสำหรับสนับสนุนงานที่กล่าวถึงข้างต้น (ติดตั้งการสนับสนุนการโค่นล้มตามค่าเริ่มต้น)

ถ้าเกิดว่ามีลับอยากอาหารของคุณคุณควรติดตั้งแอพพลิเคชันเซิร์ฟเวอร์ Java เช่นTomcatหรือท่าเทียบเรือ คำแนะนำการติดตั้งพร้อมใช้งานสำหรับเซิร์ฟเวอร์แอปพลิเคชันหลักทั้งหมด

ปรับปรุง : Kohsuke Kawaguchiได้สร้างตัวติดตั้งบริการ windowsสำหรับฮัดสัน

การตั้งค่าโครงการในฮัดสัน

ลิงค์ใน walk-through ต่อไปนี้จะถือว่าอินสแตนซ์ของ hudson อยู่ที่ http://localhost:8080

  1. เลือกงานใหม่ ( http://localhost:8080/view/All/newJob) จากเมนูทางด้านซ้าย
  2. ตั้งชื่อให้กับงานและทำเครื่องหมายBuild a free-style software projectในรายการ
  3. การกด 'ตกลง' จะนำคุณไปยังหน้าการกำหนดค่าของงาน ตัวเลือกทั้งหมดมีเครื่องหมายคำถามเล็ก ๆ น้อย ๆ อยู่ข้างๆ การกดปุ่มนี้จะเป็นการแสดงข้อความช่วยเหลือเกี่ยวกับตัวเลือก
  4. ภายใต้กลุ่มตัวเลือก 'การจัดการรหัสที่มา' คุณจะใช้การโค่นล้ม ฮัดสันยอมรับทั้งการเข้าถึง url และการเข้าถึงโมดูลท้องถิ่น
  5. ภายใต้กลุ่มตัวเลือก 'สร้างทริกเกอร์' คุณจะใช้ 'แบบสำรวจ SCM' ไวยากรณ์ที่ใช้ในที่นี้คือ cron ดังนั้นการสำรวจพื้นที่เก็บข้อมูลการโค่นล้มทุกๆ 5 นาทีจะเป็น*/5 * * * *
  6. กระบวนการสร้างโครงการระบุไว้ภายใต้กลุ่มตัวเลือก 'สร้าง' หากคุณมีไฟล์สร้างมดที่มีเป้าหมายทั้งหมดที่คุณต้องการคุณจะโชคดี เพียงเลือก 'เรียกใช้มด' และเขียนชื่อของเป้าหมาย กลุ่มตัวเลือกรองรับคำสั่ง maven และ shell เช่นกัน แต่ก็ยังมีปลั๊กอินสำหรับ phingด้วย
  7. ทำเครื่องหมายการกระทำบิลด์เพิ่มเติมใน 'โพสต์การกระทำบิลด์' เช่นการแจ้งเตือนทางอีเมลหรือการเก็บถาวรสิ่งประดิษฐ์บิลด์

สำหรับการตั้งค่ากระบวนการที่ฮัดสันไม่มีปลั๊กอินคุณสามารถเรียกมันโดยตรงผ่านเชลล์สคริปต์จากภายในการตั้งค่าการสร้างหรือคุณสามารถเขียนปลั๊กอินของคุณเอง

ผิดพลาด:

  • หากคุณมีมันสร้างสิ่งประดิษฐ์จำไว้ว่าให้ฮัดสันทำความสะอาดหลังจากตัวเองในช่วงเวลาปกติ
  • หากคุณมีการตั้งค่ามากกว่า 20 โครงการให้พิจารณาไม่แสดงสถานะการสร้างเป็นหน้าหลักเริ่มต้นบนฮัดสัน

โชคดี!


2
ฉันคิดว่ามีข้อผิดพลาดกับไวยากรณ์ cron ของคุณ ที่จะทำงานในนาทีที่ห้าของทุก ๆ ชั่วโมง หากคุณต้องการโพล repo ทุกๆ 5 นาทีคุณจะต้องใช้ * / 5
Brian Wigginton

2
@BrianWigginton: คุณพูดถูก และฉันก็พยายามที่จะแก้ไขการโพสต์ แต่ฉันไม่สามารถบันทึกได้เพราะฉันมี "อ้างอิงถึงชื่อโฮสต์ที่ไม่ถูกต้อง" คือ 'localhost' ฉันหวังว่าผู้คนจะดูการแก้ไขที่นี่
Steen

22

คำที่คุณกำลังมองหาคือ "บูรณาการอย่างต่อเนื่อง"

นี่คือตัวอย่างของคนที่ใช้ GIT + phpundercontrol: http://maff.ailoo.net/2009/09/continuous-integration-phpundercontrol-git/

CruiseControl (ซึ่งเป็นเซิร์ฟเวอร์ CI) สามารถใช้ Hosted SVN / GIT เป็นแหล่งข้อมูลได้ ดังนั้นคุณสามารถใช้กับ GitHub หรือ Beanstalk หรืออย่างอื่น

จากนั้นคุณสามารถรวมเข้ากับซอฟต์แวร์ประเภทต่อไปนี้:

  • PHPUnit
  • PHP-codesniffer
  • phpdocumentor
  • PHP Gcov
  • PHPXref
  • Yasca
  • เป็นต้น

คุณสามารถลองใช้โฮสต์ CI นี้: http://www.php-ci.net/hosting/create-project

โปรดทราบว่าเครื่องมือเหล่านั้นต้องการการสนับสนุนที่กำหนดเองหากคุณรวมเข้าด้วยกัน

คุณเคยคิดถึงการจัดการโครงการและการจัดการแพทช์บ้างไหม?

คุณสามารถใช้ Redmine เพื่อการจัดการโครงการ มันได้รวมการสนับสนุนการรวมอย่างต่อเนื่อง แต่เป็นฝั่งไคลเอ็นต์ (ไม่ใช่เซิร์ฟเวอร์ CI)

ลองใช้โฮสต์ SVN / GIT / etc โซลูชันเนื่องจากครอบคลุมการสำรองข้อมูลของคุณและทำให้เซิร์ฟเวอร์ทำงานต่อไปดังนั้นคุณสามารถมุ่งเน้นการพัฒนาได้

สำหรับบทช่วยสอนเกี่ยวกับวิธีตั้งค่าฮัดสันโปรดดู: http://toptopic.wordpress.com/2009/02/26/php-and-hudson/


2
ขอบคุณสำหรับลิงค์ ผลิตภัณฑ์ที่ฉันคุ้นเคยสิ่งที่ฉันหวังไว้คือคำแนะนำแบบฝึกหัดในแบบที่คุณให้มา
Pekka

สวัสดี ณ เดือนตุลาคม 2555 php-ci.net ลงหรือถูกดึงออกจากบริการแล้วหรือยัง ฉันไม่สามารถเชื่อมต่อกับที่อยู่นั้นไม่สามารถหาข้อมูลใหม่จากปีที่ผ่านมาได้
Ryan

@ ไรอันฉันไม่รู้ว่าเกิดอะไรขึ้น ฉันรู้ว่าคุณสามารถลองคนอื่นได้ บางทีคุณอาจลอง: CircleCI หรือคุณสามารถตรวจสอบหัวข้อนี้: โฮสต์การรวมอย่างต่อเนื่องสำหรับ PHP?
Michiel

@ ไรอันไม่ไม่ลงฉันใช้มันมาระยะหนึ่งแล้ว พวกเขาย้ายไปที่ phptesting.org
omrakhur

6

ฉันใช้เซิร์ฟเวอร์การรวมอย่างต่อเนื่องของBambooของ Atlassian สำหรับโครงการ PHP หลักของฉัน (พร้อมกับผลิตภัณฑ์อื่น ๆ ของพวกเขาเช่นfisheye (การเรียกดูที่เก็บ), jira (ตัวติดตามปัญหา) และโคลเวอร์ (การครอบคลุมรหัส))

รองรับ SVN และตอนนี้รองรับ Git และมีส่วนต่อประสานผู้ใช้ที่ยอดเยี่ยม มันสามารถใช้งานได้กับ linux, windows และ mac และสามารถเรียกใช้แบบสแตนด์อโลนบนเซิร์ฟเวอร์ Tomcat ของตัวเองซึ่งเหมาะสำหรับคน (เช่นฉัน) ที่ไม่ต้องการใช้เวลาหลายวันในการตั้งค่าเครื่องมือของพวกเขา) แม้ว่ามันอาจดูแพง แต่การเป็นนักพัฒนาโดด ๆ ฉันซื้อใบอนุญาตชุดเริ่มต้นราคา 10 $ (10 $ โดยซอฟต์แวร์) นี่เป็นสิ่งที่ยอดเยี่ยมสำหรับทีมขนาดเล็กและมันก็คุ้มค่ากับการมอง


คุณสามารถกำหนดค่าไผ่เพื่อสนับสนุนการ phing ได้อย่างไร? ฉันใช้มดอยู่ในขณะนี้ แต่ดูเหมือนว่า phing จะเป็นสิ่งที่น่าพึงพอใจมากกว่าที่จะใช้สำหรับ php depooyment ขอบคุณ
Vincent

5

PHPTesting PHPCIนี่คือเซิร์ฟเวอร์รวมที่ดีอย่างต่อเนื่องที่สร้างขึ้นใน PHP

นอกจากนี้ยังเป็นโอเพนซอร์สและฟรี :)

มันมีจำนวนปลั๊กอิน ..

PHPCI มีปลั๊กอินการรวมสำหรับ:

  • Atoum
  • Behat
  • แคมป์ไฟ
  • Codeception
  • นักแต่งเพลง
  • อีเมล์
  • เสี้ยงฮึดฮัดแสดงความไม่พอใจ
  • ไออาร์ซี
  • PHP
  • ผ้าสำลี
  • MySQL
  • PDepend
  • PostgreSQL
  • PHP ดมกลิ่นรหัส
  • PHP Copy / Paste Detector
  • สเป็ค PHP
  • หน่วย PHP
  • คำสั่งของเชลล์
  • น้ำมันดิน / Zip

แม้ว่าฉันชอบ PHPCI ฉันไม่แนะนำ มันเป็นรถที่ไม่น่าเชื่อและไม่น่าเชื่อถือ เป็นเรื่องน่าเศร้าที่ฟังก์ชั่นพื้นฐานทั่วไปไม่ได้รับการทดสอบหน่วยอย่างถูกต้องดังนั้นสิ่งพื้นฐานเช่นการเพิ่ม URL ของโครงการจึงเป็นเรื่องยากโดยไม่ทำให้เกิดความวุ่นวาย
เท

@Tek กลยุทธ์ CI สำหรับ PHP ของคุณคืออะไร?
omrakhur

1
@ amrakhur ฉันติดอยู่กับ PHPCI โชคไม่ดี ซอฟต์แวร์อื่นทั้งหมดมีขนาดใหญ่กว่ามากและใช้เวลาในการตั้งค่านานมาก ทุกอย่างมีข้อดีและข้อเสีย คุณต้องไปกับสิ่งที่ดีที่สุดสำหรับคุณ
Tek

3

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

หากคุณต้องการทดลองใช้งานทั้งหมดที่คุณต้องการคือกล่อง Debian / Ubuntu และการเข้าถึงเชลล์

http://yauh.de/articles/379/setting-up-a-ci-environment-for-php-projects-using-jenkins-ci

อัปเดตหากต้องการเพิ่มเนื้อหาลงในคำตอบของฉัน:

คุณสามารถตั้งค่าเจนกินส์ CI สำหรับ PHP โดยใช้ Ansible เนื่องจาก v1.4 รองรับบทบาทที่คุณสามารถดาวน์โหลดได้จากไซต์ชุมชน galaxy.ansibleworks.com ของพวกเขาและมันจะช่วยยกระดับคุณ มันถูกเรียกว่าเจนกินส์-PHP


3

ฉันขอแนะนำให้ใช้ Jenkins http://jenkins-ci.org/ฟรีและเป็นโอเพ่นซอร์ส

มันค่อนข้างตรงไปตรงมาที่จะติดตั้งทำงานบนหลาย ๆ แพลตฟอร์มและรวมเข้ากับเครื่องมือรวมอื่น ๆ อย่างต่อเนื่องเช่น SonarQube (+ SQUALE) เพื่อวัดหนี้ทางเทคนิคและ Thucydides สำหรับทดสอบระบบอัตโนมัติ

ฉันขอแนะนำอย่างยิ่งให้ใช้ GIT หรือ GIT Hub สำหรับการควบคุมเวอร์ชันแทน SVN จากมุมมองของฉันเป็นเพียงระบบควบคุมเวอร์ชันที่ดีกว่าที่จะช่วยให้คุณพัฒนาความพยายามในการพัฒนาในภายหลัง

เนื่องจากคุณทำงานกับโครงการ PHP เป็นส่วนใหญ่มีเครื่องมืออื่นที่คุณสามารถใช้ได้

PHPUnit - สำหรับการทดสอบหน่วย

PHP CodeSniffer - ตรวจสอบมาตรฐานการเข้ารหัส

PHP Depend - แสดงการพึ่งพาโค้ด PHP ของคุณ

XDEBUG - สำหรับการทดสอบประสิทธิภาพ

เครื่องมือเหล่านี้ทั้งหมดและถูกเรียกใช้กับงาน Jenkins และช่วยในเรื่องคุณภาพและประสิทธิภาพของรหัสของคุณ

ขอให้โชคดีและสนุก!


3

ฉันไม่ได้ใช้ผลิตภัณฑ์หลายชนิดหรือแม้แต่ผลิตภัณฑ์ที่คุณใช้ แต่ฉันจะให้ประสบการณ์กับฉัน

ฉันใช้สภาพแวดล้อมการทดสอบแบบขนานกับสภาพแวดล้อม PROD ของฉัน ฉันไม่มีการทดสอบในท้องถิ่น ถ้ามันยากเกินไปที่จะทำให้สิ่งต่าง ๆ เข้าสู่สภาพแวดล้อมการทดสอบจริงฉันจะแก้ไขกระบวนการสร้างของฉัน ฉันไม่เห็นประเด็นในการทดสอบในพื้นที่เนื่องจากสภาพแวดล้อมแตกต่างกัน อัปเดต: สิ่งเดียวที่ฉันทำในเครื่องคือเรียกใช้ "php -l" ก่อนที่ฉันจะอัปโหลดอะไรก็ได้ หยุดความผิดพลาดโง่ ๆ

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

ส่วนหนึ่งของกระบวนการสร้างของฉัน (คล้ายกับของคุณ) สร้างไฟล์ META สองไฟล์ หนึ่งประกอบด้วยการเปลี่ยนแปลงล่าสุด (ปกติ) 100 ครั้งและยังให้หมายเลขการเปลี่ยนแปลงปัจจุบันให้ฉันด้วย แสดงให้ฉันเห็นสิ่งที่มีการติดตั้งการเปลี่ยนแปลง อีกอันประกอบด้วย CLIENTSPEC (ในคำศัพท์บังคับ) ซึ่งแสดงให้ฉันเห็นว่าสาขาใดที่ใช้ในงานสร้างนี้ เมื่อรวมกันแล้วสิ่งเหล่านี้ทำให้ฉันได้งานสร้างซ้ำ

ฉันไม่ได้สร้างสภาพแวดล้อมเป้าหมายโดยตรง แต่ไปยังพื้นที่จัดเตรียมบนเซิร์ฟเวอร์ ฉันใช้ SSH เพื่อให้เหมาะสม มันทำให้ฉันได้เปรียบเล็กน้อย ที่สำคัญที่สุดคือหลีกเลี่ยงการเสียชีวิตครึ่งทางผ่านการอัปโหลดขนาดใหญ่ มันทำให้ฉันมีสถานที่สำหรับเก็บไฟล์ META และไฟล์บิลด์ทั้งหมดจะถูกเก็บถาวรโดยอัตโนมัติ สคริปต์ยังบันทึกการอัปเดต (ดังนั้นจึงมีรายการในสตรีมบันทึกและฉันสามารถเห็นก่อนและหลัง) และเตะ daemons ทั้งหมด (ฉันใช้ daemontools ดังนั้น "svc -t") สิ่งเหล่านี้ดีกว่าบนเครื่องเป้าหมาย

อีกปัญหาหนึ่งคือการเปลี่ยนแปลงฐานข้อมูล ฉันเก็บสคริปต์หลักของ DB schema ซึ่งฉันอัปเดตทุกครั้งที่สคีมาเปลี่ยนแปลง การเปลี่ยนแปลงแต่ละรายการจะไปที่สคริปต์ changes.sql ซึ่งอัปโหลดพร้อมกับบิลด์ไปยังพื้นที่จัดเตรียม สคริปต์ทำงานเป็นส่วนหนึ่งของสคริปต์การติดตั้ง


ขอบคุณสำหรับอินพุตของคุณ Phil นี่คือการตั้งค่าที่น่าสนใจมากและฉันคิดว่าฉันสามารถใช้ส่วนนี้ได้ ในกรณีของฉันฉันมักจะไม่สามารถเข้าถึง SSH ไปยังจุดปลายทางระยะไกลได้บ่อยครั้งดังนั้นฉันจึงต้องใช้ "ความฉลาด" ในพื้นที่ซึ่งเป็นสาเหตุที่ฉันคิดว่าฉันต้องการผลิตภัณฑ์ CI เช่นฮัดสัน
Pekka

2

ฉันเพิ่งเริ่มกระบวนการชนิดเดียวกันและกำลังใช้Beanstalkสำหรับ svn โฮสติ้ง

มีคุณสมบัติที่ดีสองอย่างในบัญชีที่ชำระเงิน (เริ่มต้นที่ $ 15pm ฉันคิดว่า):

  • การปรับใช้ช่วยให้ผู้ใช้สามารถสร้างเป้าหมาย ftp สำหรับเซิร์ฟเวอร์ staging และเซิร์ฟเวอร์การผลิตซึ่งสามารถนำไปใช้งานได้ด้วยการคลิกปุ่ม (inc ระบุการแก้ไขและสาขา)
  • webhooks อนุญาตให้ผู้ใช้ตั้งค่า url ที่เรียกใช้ในแต่ละการกระทำ / การปรับใช้ผ่านสิ่งต่าง ๆ เช่นหมายเลขการแก้ไขคำอธิบายและผู้ใช้ สามารถใช้เพื่ออัปเดตเอกสารเรียกใช้การทดสอบหน่วยและอัปเดตการเปลี่ยนแปลง

ฉันแน่ใจว่ามีเซิร์ฟเวอร์ svn ที่โฮสต์หรือโฮสต์ด้วยตนเองอื่น ๆ ด้วยคุณสมบัติทั้งสองนี้ แต่ฝักถั่วเป็นสิ่งที่ฉันมีประสบการณ์และมันทำงานได้ดีมาก

นอกจากนี้ยังมี API ซึ่งฉันคิดว่าสามารถใช้เพื่อรวมการปรับใช้เพิ่มเติมเข้ากับกระบวนการของคุณ


ไชโย @adam ฉันกำลังมองหาบริการโฮสต์สำหรับสิ่งนี้ไม่มากนักเนื่องจากฉันกลัวว่าบริการเหล่านี้จะถูก จำกัด สำหรับสิ่งที่ฉันต้องการเสมอ แต่สิ่งที่คุณพูดฟังดูน่าสนใจและ API อาจเป็นจุดเชื่อมต่อสำหรับส่วนที่เหลือ ฉันจะดูที่นี้
Pekka

ไม่ต้องกังวลคิดว่าคุณอาจพูดแบบนั้น มันเหมาะกับฉันในตอนนี้เนื่องจากฉันไม่ได้เป็นหัวหน้าของฉันรอบ svn (และฉันเป็นทีมคนเดียว) รวมทั้งพวกเขาเสนอการส่งออก repo เต็มรูปแบบหากคุณต้องการย้าย
Adam Hopkinson

2

พิจารณาfazend.comซึ่งเป็นแพลตฟอร์ม CI ที่ให้บริการฟรีซึ่งทำหน้าที่กำหนดค่าและติดตั้งโดยอัตโนมัติ คุณไม่จำเป็นต้องตั้งค่าการควบคุมเวอร์ชันการติดตามบั๊กเซิร์ฟเวอร์ CI สภาพแวดล้อมการทดสอบและอื่น ๆ ทุกอย่างเป็นไปตามความต้องการ


อืมมันดูน่าสนใจมาก! แต่พวกเขาจะอยู่รอดได้อย่างไร เห็นว่าฟรีทุกอย่างหรือ พวกเขาชำระเงินสำหรับเซิร์ฟเวอร์และค่าธรรมเนียม E3 อย่างไร
Pekka

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