เรียกใช้ TeamCity Agents หลายตัวบนคอมพิวเตอร์เครื่องเดียวกันหรือไม่


87

เรามีเครื่องสร้างหลายเครื่องแต่ละเครื่องใช้งานตัวแทนการสร้าง TeamCity เดียว แต่ละเครื่องมีความแข็งแกร่งมากและเราต้องการเรียกใช้ build agent หลายตัวในเครื่องเดียวกัน

นี้เป็นไปได้โดยไม่ต้องใช้การทำงานแบบเสมือน ? มีทางเลือกอื่นที่มีคุณภาพสำหรับ TeamCity ที่รองรับสิ่งนี้หรือไม่?

คำตอบ:


133

ใช่เป็นไปได้ :

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

  • เอเจนต์ถูกติดตั้งในไดเร็กทอรีแยกต่างหาก
  • พวกเขามีไดเรกทอรีงานและชั่วคราวที่โดดเด่น
  • buildAgent.properties ถูกกำหนดค่าให้มีค่าที่แตกต่างกันสำหรับคุณสมบัติ name และ ownPort

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

ภายใต้ Windows หากต้องการติดตั้งเอเจนต์เพิ่มเติมเป็นเซอร์วิสให้แก้ไข[agent dir] \ launcher \ conf \ wrapper.conf เพื่อเปลี่ยนคุณสมบัติให้มีชื่อที่แตกต่างกันภายในคอมพิวเตอร์:

  • wrapper.console.title
  • wrapper.ntservice.name
  • wrapper.ntservice.displayname
  • wrapper.ntservice.description

เป็นเพียงข้อสังเกต แต่โปรดทราบว่าการทำเช่นนี้มีประโยชน์เพียงเล็กน้อยหากเครื่องตัวแทนของคุณไม่มีทรัพยากรที่จำเป็น ตัวอย่างเช่น VM แบบ single-core จะไม่ทำงานผ่านคิวการสร้างที่มีเอเจนต์สามตัวเร็วกว่าที่จะใช้กับหนึ่ง
bopapa_1979

13
หากคุณได้ติดตั้งและติดตั้งเอเจนต์ของคุณโดยไม่ทราบข้อมูลข้างต้น (เช่นเดียวกับที่ฉันทำ) ให้เรียกใช้ "service.uninstall.bat" บน Build Agent ที่ติดตั้งในไดเร็กทอรี / bin จากนั้นทำตามที่คำตอบด้านบนระบุสำหรับแต่ละเอเจนต์ หลังจากนั้นเรียกใช้ "service.start.bat" บนแต่ละตัวแทน
Brandon

2
ยอดเยี่ยม. แต่แปลกที่วิซาร์ดการติดตั้งไม่รองรับการติดตั้งหลายตัวแทน
Jesper Mygind

ขอแนะนำว่าคุณอาจมีปัญหากับเอเจนต์ใหม่หลังจากติดตั้งแล้วเกิดข้อผิดพลาดเช่น "Teamcity agent in disconnected state (Agent has unregistered (will upgrade))" สิ่งนี้สามารถแก้ไขได้เพื่อหยุดเอเจนต์ fisrt (หรือเอเจนต์อื่นที่ติดตั้ง) และรีสตาร์ทใหม่จากเซอร์วิส (บน Windows / Windows Server) สิ่งนี้จะตั้งตัวแทนใหม่ของคุณจาก Disconnected to Connected
Santiago Rebella

ข้อควรสนใจ: " หากคุณใช้ตัวติดตั้ง Windows เพื่อติดตั้งเอเจนต์เพิ่มเติมและต้องการรันเอเจนต์เป็นบริการคุณจะต้องดำเนินการตามขั้นตอนด้วยตนเองเนื่องจากการติดตั้งเอเจนต์ที่สองเป็นเซอร์วิสบนเครื่องเดียวกันนั้นไม่รองรับโดยตัวติดตั้ง: บริการที่มีอยู่ ถูกเขียนทับ ". ดูconfluence.jetbrains.com/display/TCD10//… \
rsenna

30

คุณสามารถดูโพสต์บล็อกนี้เพื่อดูคำแนะนำทีละขั้นตอน

http://handcraftsman.wordpress.com/2010/07/20/multiple-teamcity-build-agents-on-one-server/


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

3

คำตอบด้านบนคือวิธีการที่ถูกต้อง แต่ถ้าคุณต้องการทำสิ่งนี้ให้ง่ายขึ้นคุณสามารถใช้แพ็คเกจ TeamCityAgent Chocolateyและระบุชื่อตัวแทนโฟลเดอร์ตัวแทนและพอร์ต--paramsและจะจัดการการตั้งค่าไฟล์ config รวมถึงการดึง ในเวอร์ชันที่ต้องการของ Java ผ่านserver-jreแพ็คเกจ

ข้อแม้ประการหนึ่งคือคุณต้องใช้--forceกับการติดตั้งใด ๆ หลังจากที่ตัวแทนแรกเนื่องจาก Chocolatey ไม่เข้าใจในการติดตั้งแอปพลิเคชันเดียวกันโดยมีการกำหนดค่าที่แตกต่างกันเป็นการติดตั้ง "ใหม่"

คุณจะต้องใช้--version 2.0.1-beta-05เนื่องจากยังอยู่ในขั้นตอนการทดสอบ แต่ควรจะออกจากเบต้าในไม่ช้า

ตัวอย่างการติดตั้งแบบเต็มสำหรับเอเจนต์ที่สอง: choco install teamcityagent --force -y --params 'serverUrl=http://teamcity.local:8111 agentName=AgentUno agentDir=C:\buildAgentUno ownPort=9091' --version 2.0.1-beta-05

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