2017-10-19 44 views
10

के लिए निर्माण मौजूद है तो गिट के साथ संयोजन में टीमसिटी का उपयोग करना।
वर्तमान में, टीमसिटी डिफ़ॉल्ट शाखा के रूप में "master" के साथ स्थापित है।टीम के लिए तेजी से आगे बढ़ने पर टीमसिटी बिल्डिंग को रोकें यदि SHA1

आमतौर पर, विकास एक और शाखा (उदाहरण के लिए "dev") पर होता है - टीमसिटी "dev" पर परिवर्तनों के लिए देखने के लिए सेट है और स्वचालित रूप से निर्माण करता है।

हैं DEADBEEF-SOME-SHA बनाया गया है & "dev" पर निर्माण 1.2.3.4 के रूप में TeamCity द्वारा टैग और हम तेजी से आगे मर्ज कि SHA1 git करने के लिए "master", TeamCity अभी भी एक का निर्माण करता है - तो हम DEADBEEF-SOME-SHA अंत में चिह्नित किया जा रहा 1.2.3.4 और 1.2.3.5 दोनों के रूप में।

जैसा कि मैं इसे समझता हूं, "dev" डिफ़ॉल्ट शाखा इसे रोक देगा।
क्या टीमसिटी एक निर्माण करने से रोकने का एक और तरीका है यदि कोई निर्माण पहले से ही उसी SHA1 के लिए सफल हो गया है?

नोट करें कि हम सीधे master पर धक्का देते हैं (और यह कि SHA1 अन्य शाखाओं पर मौजूद नहीं है/नहीं बनाया गया है) मैं अभी भी एक बिल्ड देखना चाहता हूं।

यदि संभव हो तो मैं पूरी तरह से टीमसिटी में इसे प्राप्त करना चाहता हूं - कोई अतिरिक्त स्क्रिप्ट/फाइलों आदि का लेखन आदि

+0

मैं टीमसिटी के भीतर यह सब करना चाहता हूं - आदर्श रूप से सभी ट्रिगर कॉन्फ़िगरेशन अनुभाग के भीतर। – eddiewould

उत्तर

1

यदि आप बस शाखाओं को प्रतिबंधित करना चाहते हैं जिसके लिए बिल्ड स्वचालित रूप से ट्रिगर होते हैं, तो VCS ट्रिगर के लिए एक शाखा फ़िल्टर सेट करें:

प्रोजेक्ट सेटिंग्स => ट्रिगर्स => वीसीएस ट्रिगर (संपादित करें) => शाखा फ़िल्टर

सेट

+:dev 

तो (भले ही "मास्टर" डिफ़ॉल्ट शाखा है) करने के लिए शाखा फिल्टर केवल स्वचालित रूप से देव पर ट्रिगर किया जाएगा बनाता है। अन्य शाखाओं पर विज्ञापन-निर्माण करना अभी भी संभव है (मान लें कि वीसीएस रूट इसे अनुमति देता है)

+0

दिलचस्प। मेरे उत्तर से अधिक सटीक। +1 – VonC

5

आप किसी विशेष SHA1 के लिए निर्माण क्वेरी कर सकते हैं ... लेकिन आप have to know your previous buildID for that

तो मैं क्या कर सकता है: एक समर्पित फ़ोल्डर में

  • लिखने (सभी एजेंटों द्वारा सुलभ) SHA1 हर ​​काम के अंत में बनाया
  • केवल एक नया काम चलाता है, तो यह है कि SHA1 फाइल है पहले से मौजूद नहीं है
+0

सुझाव के लिए धन्यवाद, लेकिन अधिक चलने वाले हिस्सों (फाइलों के लेखन) से बचने की कोशिश कर रहे हैं – eddiewould

2

शायद मैं कुछ छूट गया:

वचन देता करता नए निर्माण शुरू करने से पहले अपने रेपो में टैग कर रहे हैं, आप यह जांच सकते सिर प्रतिबद्ध यदि पहले से ही टैग नहीं किया गया:

# if you use exclusively lightweigth tags : 
git show-refs --tags | grep $(git rev-parse HEAD) 
# also check that the tag looks like a build tag, e.g : refs/tags/1.2.3.4 
    | grep "refs/tags/[1-9.]*$" 

# if you use annotated tags : 
git show-refs --tags --dereference | grep $(git rev-parse HEAD) 
# the grepped line may look like : refs/tags/1.2.3.4^{} 
    | grep -E "refs/tags/[1-9.]*(\^\{\})?$" 
+0

क्या आप इसे कहां विस्तारित कर सकते हैं? वीसीएस ट्रिगर नियम अनुभाग में? – eddiewould

संबंधित मुद्दे