2017-10-09 8 views
11

मैं गिटवर्सन के साथ टीमसिटी 2017.1.4 का उपयोग कर रहा हूं।टीमसिटी ट्रिगर नई शाखा पर बिना किसी नई प्रतिबद्धता के निर्माण

टीमसिटी प्रोजेक्ट में कई बिल्ड कॉन्फ़िगरेशन होते हैं जिनमें से पहला गिटवर्सन चलाने के लिए होता है और फिर बाद के चरणों में इस चरण पर स्नैपशॉट निर्भरता होती है और संस्करण को इसके पैरामीटर से खींचें।

अधिकांश परिदृश्यों में यह बहुत अच्छा काम करता है, हालांकि अगर हम एक नई शाखा बनाते हैं।/रिलीज-फू और इसे दबाएं, टीमसिटी बिल्ड को ट्रिगर नहीं करेगी क्योंकि इससे पहले ही पहले ही प्रतिबद्धता शिया बनाई गई है, दुर्भाग्यवश हमें इसे फिर से ट्रिगर करने की आवश्यकता है, भले ही प्रतिबद्धता नई शाखा में नहीं बदली है, इसका मतलब है कि यह एक अलग होगा गिटवर्सन नंबर।

मैंने गिटवर्सन बिल्ड कॉन्फ़िगरेशन पर स्नैपशॉट निर्भरताओं को हमेशा पुनर्निर्मित करने की कोशिश की है, लेकिन यह अन्य सभी परिदृश्यों के प्रकार के रूप में बदसूरत लगता है जहां यह कोई समस्या नहीं है। मुझे यह भी पता है कि मैं इसे सभी निर्भरताओं के पुनर्निर्माण के लिए मैन्युअल रूप से निर्माण को ट्रिगर कर सकता हूं और यह काम करेगा, हालांकि अगर मैं शाखा में प्रतिबद्धता के निर्माण को स्वचालित रूप से ट्रिगर करने के लिए टीमसिटी प्राप्त करने के लिए एक अच्छा तरीका है तो मुझे उत्सुकता है यदि वह शाखा नहीं थी पहले मौजूद है, या वास्तव में किसी भी अन्य तरीके से मैं इसे संपर्क कर सकता हूं।

+0

मैं इस कथन से सहमत नहीं हूं "भले ही प्रतिबद्धता एक नई शाखा में नहीं बदला गया है, इसका मतलब है कि इसे एक अलग गिटवर्सन नंबर मिलेगा"। यदि आप एक निश्चित प्रतिबद्धता पर गिट में एक नई शाखा बना रहे हैं, तो नई शाखा पुराने कमिट # का उपयोग करेगी और एक नया नहीं होगा। गिट के बारे में यह जानने का यही एकमात्र तरीका है कि एक विशेष शाखा कहाँ आधारित थी। – Nishit

+0

मैं गिट प्रतिबद्ध शा को संदर्भित नहीं कर रहा था, लेकिन गीटवर्सन एप्लिकेशन –

+0

द्वारा उत्पन्न गिटवर्सन नंबर थोड़ा और शोध के बाद ऐसा लगता है कि यह टीमसिटी में कम से कम या किसी भी तरह से सेटिंग्स teamcity.buildRevisions.detectUnknownCommitMerge = सच teamcity.vcsTrigger.runBuildOnSameRevisionInEveryBranch = true –

उत्तर

1

आप शाखा में नाम और संभवतः version tags सहित निर्माण में अलग/अधिक GitVersion version variables शामिल करने के लिए टीमसिटी को कॉन्फ़िगर करने का प्रयास कर सकते हैं। यह आपकी बिल्ड प्रक्रिया को विभिन्न शाखाओं पर एक ही प्रतिबद्धता के बीच अंतर करने का एक तरीका प्रदान करेगा।

देखें कदम this CD post के 1-5, साथ ही कैसे TeamCity में अतिरिक्त जानकारी उपयोग करने पर कुछ उदाहरण के लिए इस detailed blog post on using GitVersionTask

+0

हम पहले से ही ऐसा करते हैं, समस्या यह है कि टीमसिटी केवल शा को मानती है और चूंकि इसे पहले से ही बनाया गया है, यह इसे एक नया संस्करण संख्या –

+0

@DanielPowell Hmmm उत्पन्न करने के लिए पुनर्निर्माण नहीं करेगा ... शायद आप इसका उपयोग कर सकते हैं रीस्ट एपीआई [एक विशिष्ट परिवर्तन से ट्रिगर] (https://teamcity-support.jetbrains.com/hc/en-us/community/posts/206166489-How-do-I-trigger-a-build-for- एक-विशिष्ट-गिट-प्रतिबद्ध-माध्यम-टीमसिटी-आरईएसटी-एपीआई-) (एक विशिष्ट प्रतिबद्ध बनाम)? – brichins

1

आप इसे गिट हुक से निर्माण को ट्रिगर करके प्राप्त कर सकते हैं।

के रूप में समझाया here, आप धक्का दिया शाखाओं की पहचान के लिए (तब भी जब कई एक भी आपरेशन में धकेल दिया जाता है) एक update हुक का उपयोग कर सकते हैं और प्रत्येक शाखा के लिए (यह मानते हुए इसे अपने ट्रिगर नियम गुजरता है) REST API का उपयोग कर एक TeamCity निर्माण को गति प्रदान।

1

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

+1

किसी प्रतिबद्धता में संशोधन करने के लिए इतिहास को फिर से लिखना आवश्यक है, और उस अपस्ट्रीम को दबाकर असुरक्षित शाखाओं की आवश्यकता होती है।मैं ** दृढ़ता से ** – Amit

+0

ऐसा करने से बचने की सलाह देता हूं हाँ, मुझे यह पसंद नहीं है, और इसे सभी को यह जानने की आवश्यकता है और इसे याद रखना –

+0

@ स्वीकार करें, यह एक नई शाखा के बारे में था, बुराई इतिहास फिर से लिखना नहीं था। –

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