คุณสามารถสร้างบิลด์ในขั้นตอนเดียวได้หรือไม่?


14

จากการทดสอบ joel :

คุณสามารถสร้างบิลด์ในขั้นตอนเดียวได้หรือไม่?

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


3
มันขึ้นอยู่กับว่ารายการในรายการคืออะไร? เป็นการดีใช่คุณควรจะสามารถโดยอัตโนมัติ
ไม่มีใครเลย

4
en.wikipedia.org/wiki/Build_automation BTW: บางคนอยู่ในขั้นตอนเดียวคือหนึ่งขั้นตอนมากเกินไป :)
Mchl

ทุกประเภท - ย้ายไฟล์วางสคริปต์ออกขั้นตอนการจัดเก็บ ฯลฯ - มี 14 ขั้นตอน!
billy.bob

2
จากมุมที่แตกต่างคุณมีรายการอะไรที่คิดว่าคุณไม่สามารถทำให้เป็นอัตโนมัติได้?
Tyanna

1
คำถามเกี่ยวกับวิธีสร้างบิลด์อัตโนมัติไม่ใช่เรื่องส่วนตัวและควรถามใน Stack Overflow คำถามควรมีข้อมูลเพิ่มเติมเกี่ยวกับงานที่จำเป็นเพื่อให้ได้คำตอบที่มีประโยชน์
David Thornley

คำตอบ:


10

ทำให้สามารถสร้างกระบวนการสร้างให้เป็นอัตโนมัติได้ในขั้นตอนเดียว ทำให้สามารถทำในสิ่งที่คุณต้องการ ฉันไม่แน่ใจว่าทำไม sapporo คิดว่า Make ใช้กับ C / C ++ เท่านั้น คุณสามารถใช้ make เพื่อรันคำสั่งชนิดใดก็ได้ มันไม่ได้เชื่อมโยงกับการเขียนโปรแกรมแม้ว่าจะเป็นสิ่งที่มันมักจะใช้สำหรับ


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

1
เนื่องจากมีการติดตั้ง 'แอพ / ระบบ nix จำนวนมาก' ./configure; ทำให้; ทำให้การติดตั้ง 'ฉันคิดว่าทำขึ้นเป็นสองเท่าเป็นเครื่องมือติดตั้ง ถ้ามันสามารถทำเช่นนั้นได้ฉันก็มั่นใจว่ามันสามารถแก้ปัญหาเรื่องความไม่สงบของ OP ได้
JBRWilkinson

ทำ แต่ไวยากรณ์ค่อนข้างคลุมเครือ ถึงวันที่ฉันได้พบ 2 ทางเลือก: SCons (ง่ายกว่า Make + makedepend) และเครื่องมือในการสร้าง Makefile โดยอัตโนมัติ (เป็นกรรมสิทธิ์)
Matthieu M.

@JbRWilkinson ... เหมือนที่ฉันบอกว่าสามารถทำได้ทุกอย่างที่คุณต้องการ;)
Pemdas

3

คุณอาจต้องการดู Make (C / C ++), Ant / Maven (Java), Gradle (Groovy) - นั่นคือสิ่งที่ฉันคุ้นเคย โอกาสสูงมีวิธีแก้ปัญหายอดนิยมสำหรับสภาพแวดล้อมของคุณ


มันเป็นสภาพแวดล้อม ASP.NET / SQL
billy.bob

@ m.edmondson - แล้วcruisecontrol.sourceforge.netน่าจะเป็นวิธีการของคุณที่จะไป
bobah

สภาพแวดล้อมการรวมที่ดีอย่างต่อเนื่องสำหรับ ASP.NET คือ TeamCity ฉันใช้งานโดย CruiseControl และ TeamCity และฉันพบว่า TeamCity นั้นใช้งานง่ายขึ้นเล็กน้อยและมีประสิทธิภาพมากกว่า แต่นั่นอาจไม่เป็นเช่นนั้นอีกต่อไป
RationalGeek

NANT เป็น. NET ANT รุ่นที่เราใช้เป็นส่วนประกอบในการควบคุมการใช้งานซึ่งฉันจะไม่ใช้ในการสร้างรหัสสำหรับการปรับใช้ซึ่งคุณมักจะต้องการสิ่งเพิ่มเติมรวม / tweaked / พารามิเตอร์ที่ตั้งค่าและเปลี่ยนแปลงและอื่น ๆ . นั่นคือสิ่งที่ ANT / NANT ทำได้ดี
Jon Hopkins

ฉันขอแนะนำ @Jon Hopkinds สอง - nant เป็นการจับคู่ที่ยอดเยี่ยมสำหรับสภาพแวดล้อมของคุณ
JBRWilkinson

3

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

มันเป็นเครื่องมือที่ดีมากและเพิ่งได้รับรางวัล Dr. Dobbs Jolt Award สำหรับเครื่องมือการจัดการการเปลี่ยนแปลงและการกำหนดค่า


0

แน่นอนว่ามีวิธีการนี้โดยอัตโนมัติ ด้วยเครื่องมืออย่างChefการติดตั้งเซิร์ฟเวอร์ใหม่ล่าสุดที่ติดตั้งใหม่นั้นง่ายเหมือน:

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

ในกรณีของฉันบางขั้นตอนดำเนินการโดยคำสั่งเดียวที่:

  • ติดตั้งไลบรารีโปรแกรมและโมดูล Python ที่จำเป็น
  • สร้างผู้ใช้ใหม่ด้วยสิทธิ์การเข้าถึงที่ระบุ
  • สร้างฐานข้อมูลใหม่โหลดสคีมาที่ต้องการตั้งค่าความเป็นเจ้าของและสิทธิ์การเข้าถึง
  • ดาวน์โหลดและกำหนดรหัสโปรเจคแล้วเขียนข้อมูลการกำหนดค่า
  • นำทุกอย่างเข้าสู่โหมดการผลิตโดยการเปิดตัวเซิร์ฟเวอร์ฐานข้อมูลการตั้งค่างาน cron เป็นต้น

ฉันไม่แน่ใจว่า Chef จะทำงานอย่างไรในสภาพแวดล้อมของคุณเนื่องจากการสนับสนุนของ Windows แสดงเป็น "ข้อมูลเบื้องต้น" แต่สำหรับระบบที่ใช้ระบบปฏิบัติการ UNIX เป็นหัวเข่าของผึ้ง

Puppetเป็นระบบที่คล้ายกันซึ่งเก่ากว่าเชฟเล็กน้อยและอาจให้การสนับสนุน Windows ที่ดีกว่า


0

ตรงไปตรงมากับ Maven ในโลก Java

mvn clean deploy

ในการกำหนดค่าของเราสิ่งนี้จะสร้างสิ่งที่จำเป็นทั้งหมดของไฟล์ WAR (ดึงในการพึ่งพา JAR ตามต้องการ) การปรับใช้ไปยังเว็บเซิร์ฟเวอร์ dev และการสร้างข้อมูลทดสอบกระป๋องบนฐานข้อมูล dev เมื่ออยู่ในสถานที่ Maven จัดการทดสอบการทำงานที่ครอบคลุมผ่าน SeleniumRC เพื่อตรวจสอบการใช้งาน

คำสั่งเดียวนี้ทำให้แอปพลิเคชันได้รับการปรับใช้อย่างเต็มที่กับกลุ่มเซิร์ฟเวอร์ dev ดังนั้นจึงพร้อมใช้งานสำหรับนักพัฒนารายอื่นที่จะทำงานได้ทันที (สมมติว่าผ่านการทดสอบ) มันผิดปกติสำหรับการปรับใช้ dev ที่จะล้มเหลวเนื่องจากนักพัฒนาตรวจสอบแล้วว่ามันทำงานได้ในmvn clean installเครื่อง

จากนั้นสแน็ปช็อต Artifact (WAR) จะถูกคัดลอกไปยังที่เก็บ Maven เพื่อแชร์กับนักพัฒนาอื่น ๆ (ตามdeployพฤติกรรมMaven มาตรฐาน)

ตกลง แต่คุณเพิ่งปรับใช้สแนปชอตไปยัง dev สิ่งที่เกี่ยวกับการทดสอบและการผลิต

การแจกจ่ายไปยังการทดสอบและเซิร์ฟเวอร์การผลิต (หลังจากนั้น) นั้นได้รับการจัดการผ่านกระบวนการปล่อย Maven ซึ่งเราต้องการจัดการด้วยตนเองเพื่อให้แน่ใจว่ามีคนคอยดูผลลัพธ์ที่น่าสงสัย ผู้ทดสอบใช้งานได้กับสิ่งประดิษฐ์ที่นำออกใช้เท่านั้นไม่ใช่ภาพรวม

เมื่อปล่อยแล้วสคริปต์บิลด์แบบง่ายจะใช้กับ SFTP ไฟล์ WAR ไปยังคลัสเตอร์เซิร์ฟเวอร์ทดสอบอีกครั้งกับคนที่กำลังดูกระบวนการเพื่อให้แน่ใจว่าไม่มีอะไรผิดปกติ

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


0

ฉันคิดว่าฉันสามารถตรวจสอบได้จากการทดสอบ Joel ของเรา ...

ฉันทำสร้างเซิร์ฟเวอร์ในหลามอัตโนมัติโดยใช้pychron

รหัสได้รับการซิงค์กับ VSS จากบรรทัดคำสั่งสร้างด้วย borland make (IDEs ส่วนใหญ่จะสร้างไฟล์สำหรับคุณหรือไม่พวกเขาเรียกพวกเขาว่า Delphi เคยใช้ปั๊มทำไฟล์และเรียกไฟล์. BPG ตอนนี้พวกเขา ' ไฟล์ MSBuild XML อีกครั้งและคุณสามารถใช้ MSBuild) และข้อผิดพลาดถูกวางในไฟล์ XML ซึ่งฉันเพิ่งเพิ่มเข้าไป

ดังนั้น .. เพียงแค่เขียนไฟล์แบทช์และทำสิ่งเหล่านี้

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