Jenkins เพื่อทำการปรับใช้แอพพลิเคชัน ASP.NET โดยอัตโนมัติ


13

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

แก้ไข ขณะนี้เรากำลังใช้ไฟล์ค้างคาวเพื่อ xcopy / กำหนดค่าแอพพูล / sql cmd ฯลฯ เพื่อปรับใช้แอปพลิเคชัน แต่เพื่อให้ทำงานได้ทีมสนับสนุนการผลิตจำเป็นต้องดาวน์โหลดซอร์สโค้ดสร้างโครงการและเรียกใช้ไฟล์แบ็ตเพื่อปรับใช้แอปพลิเคชัน

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

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


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

อัปเดตคำถามของฉันโปรดแจ้งให้เราทราบหากฉันต้องการให้ข้อมูลเพิ่มเติมใด ๆ
Sunny

คำตอบ:


11

ฉันจะแบ่งปันสิ่งที่เราใช้และที่ที่เราวางแผนจะไปบางทีมันอาจช่วยให้คุณมีความคิดที่ดีขึ้น

  • ขณะนี้เราใช้เจนกิ้นส์และกีธูบด้วยกัน - เมื่อมีอะไรบางอย่างรวมเข้าด้วยกันแล้วแกรีบบอกเจนกินส์และมันเริ่มก่อตัวขึ้น
  • เราใช้สคริปต์ Nant ในเจนกินส์เพื่อสร้างโครงการรันการทดสอบหน่วยและหากทุกอย่างดูดีมันจะเริ่มต้นอีกหนึ่งโครงการเจนกินส์ สคริปต์ Nant ยังแยกไดเรกทอรีที่มีโค้ดที่คอมไพล์แล้ว / ย่อเล็กสุด CSS / JS ฯลฯ
  • โครงการเจนกินส์รองนำเอาท์พุทจากบิลด์และส่งกลับไปยัง Github บนที่เก็บแยกต่างหาก
  • ไฟล์. BAT จะทำงานทุก 5 นาทีบนเว็บเซิร์ฟเวอร์ staging และตรวจสอบการอัปเดตของที่เก็บนั้นโดยทั่วไป หากพบการอัปเดตเราจะดาวน์โหลดบิลด์ล่าสุดสำรองไฟล์สเตจของเราจากนั้นปรับใช้บิลด์ใหม่ล่าสุดไปยังโฟลเดอร์การจัดเตรียม
  • ในการถ่ายทอดสดเรามีไฟล์. BAT ที่จัดการการสำรองไฟล์สดและคัดลอกไฟล์ที่เก็บข้อมูลไปยังไฟล์สด มันทำงานด้วยตนเอง ไม่รองรับการอัปเดต SQL (เราดำเนินการด้วยตนเอง)

ตอนนี้เห็นได้ชัดว่ามันไม่เหมาะอย่างสมบูรณ์ แต่มันใช้ได้สำหรับเรา เราต้องการขยายสิ่งนี้ในอนาคตเพื่อ:

  • ใช้Web Deployเพื่อส่งไฟล์จาก Jenkins ตรงไปยัง IIS และทำตามคำสั่งอื่น ๆ ที่เราต้องใช้
  • ใช้การโอนย้ายอัตโนมัติ (คุณลักษณะของ Entity Framework) เพื่อจัดการการอัปเดต SQL ทั้งหมดซึ่งเป็นส่วนหนึ่งของการถ่ายทอดสด

มันเกือบจะเหมือนกับสิ่งที่เรากำลังติดตาม แต่ฉันสงสัยว่า Web Deploy สามารถติดตั้ง windows services และอื่น ๆ ทั้งหมดที่จำเป็นสำหรับเว็บแอปพลิเคชันที่ซับซ้อนได้หรือไม่ ขณะนี้เรากำลังใช้เครื่องมือ ps และทำงานได้ดี สำหรับฐานข้อมูลเราวางแผนที่จะใช้เครื่องมือ DeployDB
Sunny

คุณจัดการกับสถานการณ์อย่างไรเมื่อ IIS ล็อคไฟล์? คุณจัดการกับสถานการณ์อย่างไรเมื่อมีคนทำงานกับแอปของคุณ คุณมีหลายโหนดหรือเพียงแค่แบ่งแอปพลิเคชันสำหรับผู้ใช้ที่ทำงานในเวลาที่เผยแพร่?
Piotr Perak

1
@Peri - ฉันลืมที่จะพูดถึงในคำตอบเดิมของฉัน แต่เรากำลังวางแผนที่จะมีเซิร์ฟเวอร์ที่ใช้งานจริงสองเครื่องและเปิดระหว่างเซิร์ฟเวอร์เมื่อจำเป็น (โดยใช้ IIS หรือ nginx) สิ่งนี้จะทำให้เรา "อุ่น" เซิร์ฟเวอร์สดอื่น ๆ เมื่อมีการปรับใช้เกิดขึ้นแล้วสลับไปที่เซิร์ฟเวอร์ดังนั้นจึงไม่ควรหยุดทำงาน
นิโคลัส

4

ฉันใช้ Jenkins สำหรับ. Net apps และ TFS แล้ว

  1. เพิ่มการกำหนดค่าที่จำเป็นในโครงการของคุณและการแปลง & เช็คอินโค้ด
  2. รับล่าสุดจาก TFS (ใช้ TFS Plug-in)
  3. สร้างโครงการ (ใช้ MSBuild Plug-in) คุณสามารถเผยแพร่รหัสจาก Msbuild โดยใช้อาร์กิวเมนต์บรรทัดคำสั่ง
  4. ซิงค์รหัสจากประกาศตำแหน่งที่ตั้งไปยังปลายทางโดยใช้คำสั่ง msdeploy.exe (อยู่ที่ "C: \ Program Files (x86) \ IIS \ Microsoft Web Deploy V2 \ msdeploy.exe")
  5. คุณสามารถส่งอีเมลและทำการสำรองข้อมูลผ่าน Jenkins ด้วย

นอกจากนี้คุณยังสามารถใช้ MSTest.exe เพื่อดำเนินการทดสอบหน่วยและแสดงที่คอนโซล jenkin หรือเผยแพร่ผลการทดสอบด้วย

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