การตั้งค่าพารามิเตอร์บิลด์จากไฟล์ภายนอกใน TeamCity

ขณะนี้ฉันกำลังตั้งค่าเวอร์ชันแอสเซมบลีบนแอสเซมบลี C# ทั้งหมดของฉันโดยใช้ TeamCity AssemblyInfo Patcher รูปแบบเวอร์ชันที่ฉันเลือกคือ 'Major.Minor.%build.number%.0' วิธีนี้ใช้ได้ผลดีเมื่อฉันกำหนดหมายเลขหลักและหมายเลขรองใน TeamCity แต่ตามหลักการแล้ว ฉันต้องการให้กำหนดหมายเลขเหล่านั้นไว้ในไฟล์ AssemblyInfo.cs ของฉัน และให้ TeamCity ตั้งค่าเฉพาะหมายเลขบิลด์เท่านั้น เป็นไปได้ไหม?

ทางออกหนึ่งที่ฉันเห็นคือการละทิ้งการใช้ AssemblyInfo Patcher และใช้สคริปต์อัปเดตเวอร์ชันของฉันเอง แต่ดูเหมือนว่าจะใช้งานหนัก


person Bruno Denuit-Wojcik    schedule 04.01.2016    source แหล่งที่มา


คำตอบ (1)


คุณสามารถกำหนดไฟล์พารามิเตอร์ ซึ่งคุณตรวจสอบในการควบคุมเวอร์ชัน จากนั้นอัปเดตโครงร่างเป็น %system.major_version%.%system.minor_version%.%build_number%.0 จากนั้นคุณสามารถใช้ AssemblyInfo Patcher ต่อไปได้ แต่แก้ไขทุกอย่างตามค่าในไฟล์อุปกรณ์ประกอบฉาก

เพียงใส่สิ่งต่อไปนี้ในไฟล์ชื่อ teamcity.default.properties ในรูทโปรเจ็กต์ของคุณ:

 system.major_version=3
 system.minor_version=15

ซึ่งจะส่งผลให้มีหมายเลขบิลด์ 3.15.1234.0 สำหรับบิลด์ #1234

person Tomas Aschan    schedule 04.01.2016
comment
ฉันไม่สามารถทำงานนี้ได้ TeamCity บ่นว่าฉันไม่มี Agent ที่เข้ากันได้ในการรันบิลด์ของฉัน เนื่องจาก major_version และ minor_version ไม่ได้ถูกกำหนดไว้ ฉันยังลองกำหนดพารามิเตอร์ล่วงหน้า จากนั้นบังคับให้ซิงค์กับรูท GitHub ของฉัน แต่ก็ไม่มีประโยชน์ ฉันต้องสร้างเอเจนต์ที่ปรับแต่งให้เหมาะกับรูท vcs นั้นหรือไม่ - person Bruno Denuit-Wojcik; 04.01.2016
comment
ไฟล์ของคุณชื่อ teamcity.default.properties หรือไม่? - person sferencik; 04.01.2016
comment
ฉันได้รับมันไปทำงาน! โดยการกำหนดพารามิเตอร์ของฉันเป็นพารามิเตอร์ระบบ (นำหน้าชื่อพารามิเตอร์ด้วย 'ระบบ' ทุกที่ที่มีการอ้างอิง) ก่อนหน้านี้ฉันไม่ได้ทำแบบนั้น และ TeamCity ต้องการพารามิเตอร์การกำหนดค่า - person Bruno Denuit-Wojcik; 04.01.2016
comment
@BrunoDenuit-Wojcik: ดีใจที่คุณทำให้มันได้ผล! :) ฉันอัปเดตคำตอบเพื่อสะท้อนถึงสิ่งที่คุณทำ (ฉันคิดว่า) เพื่อดึงมันทั้งหมดเข้าด้วยกัน - คำตอบเวอร์ชันปัจจุบันสะท้อนถึงวิธีแก้ปัญหาของคุณหรือไม่? ถ้าไม่ โปรดแก้ไขคำตอบเพื่อแก้ไข เพื่อให้ผู้ดูในอนาคตได้รับสิ่งที่ได้ผลตั้งแต่ครั้งแรก :) - person Tomas Aschan; 05.01.2016
comment
@TomasLycken ฉันทำการแก้ไขเพิ่มเติมหนึ่งครั้ง (เพิ่ม 'ระบบ' ให้กับการประกาศพารามิเตอร์ในไฟล์ด้วย) - person Bruno Denuit-Wojcik; 06.01.2016
comment
สวัสดี ฉันพบว่าเมื่อทำตามคำตอบนี้ teamcity ไม่สามารถจัดสรร build agent ได้จนกว่าฉันจะเพิ่มพารามิเตอร์ให้กับการกำหนดค่า build อย่างชัดเจน คุณต้องทำเช่นนี้? เมื่อผมทำเสร็จแล้ว ตัวแก้ไขข้อมูลแอสเซมบลีก็แค่ใช้ค่าเริ่มต้นที่ว่างเปล่า แทนที่จะหยิบมันขึ้นมาจากไฟล์ 'teamcity.default.properties' ค่าที่ถูกต้องน่ารำคาญปรากฏขึ้นในส่วน 'พารามิเตอร์' ของบันทึกการสร้างโดยบอกว่าฉันเกือบจะถูกต้องแล้ว อย่างไรก็ตาม Teamcity v9.1.5 คำแนะนำใด ๆ ที่ซาบซึ้งมาก - person OlduwanSteve; 04.02.2016
comment
ดังที่ OlduwanSteve ระบุไว้ การเพิ่มพารามิเตอร์ระบบจะทำให้เอเจนต์พอใจ แต่ดูเหมือนจะไม่อ่านไฟล์คุณสมบัติของฉัน ข้อมูลอ้างอิงนี้บนเว็บไซต์ JetBrains ( confluence.jetbrains.com /display/TCD9/ ) ระบุการตั้งค่ากฎการชำระเงินเพื่อให้แน่ใจว่าไฟล์นั้นรวมอยู่ในไดเร็กทอรีการทำงานของ build แต่ฉันไม่สามารถค้นหาตัวอย่างของกฎที่ควรจะเป็นได้ ขณะนี้ฉันไม่มีกฎการชำระเงินและไม่ได้ระบุไดเร็กทอรีการทำงานของบิลด์ที่เฉพาะเจาะจง ดังนั้นฉันคาดหวังว่าไฟล์ในรูทของโซลูชันของฉันควรปรากฏในตำแหน่งที่ถูกต้อง - person Thierry; 05.10.2016
comment
มีใครได้รับสิ่งนี้ไปทำงานหรือยัง? ฉันได้สร้างไฟล์ teamcity.default.properties แล้ว และไฟล์นี้มีอยู่ในรูทซอร์สโค้ด อย่างไรก็ตาม ตัวแปร 'release_number' ที่กำหนดเป็น release_number=3.3.0 ในไฟล์ไม่ได้รับการอ่าน เช่นเดียวกับคนอื่นๆ ฉันต้องสร้างพารามิเตอร์ในข้อกำหนดบิลด์ด้วยตนเอง ไม่เช่นนั้นมันจะเข้ากันไม่ได้กับเอเจนต์ อย่างไรก็ตาม ค่านี้จะไม่มีวันถูกแทนที่ด้วย ค่าในไฟล์ teamcity.default.properties - person Juzzbott; 03.05.2017