2012-04-04 15 views
21

मैं एक निर्धारित ट्रिगर को कुछ विशिष्ट निर्माण पैरामीटर संलग्न करने का एक तरीका ढूंढ रहा हूं।विशिष्ट बिल्ड पैरामीटर सेट करने के लिए ट्रिगर विकल्प?

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

क्या यह हासिल करने का कोई तरीका है?

उत्तर

9

अभी नहीं, आप this issue का पालन कर सकते हैं।

5

करने के लिए अनुरोध जोड़ा दृष्टिकोण का उपयोग मैं एक "तैनात :: देव डी 1 :: सभी एकीकरण परीक्षण चलाने के लिए" का निर्माण बनाने के लिए है। मैं फिर प्रत्येक एकीकरण सेवा निर्माण पर एक निर्माण ट्रिगर बनाते हैं।

मैं एकीकरण सेवा निर्माण के लिए "env: OctopusEnvironment" नामक पैरामीटर बना देता हूं। मान को खाली होने के लिए सेट करें। मैं का उपयोग करना चाहते त्वरित और प्रदर्शन:

select display='prompt' label='OctopusEnvironment' data_13='Production' data_12='CI' data_11='Local - Hassan' data_10='Local - Mustafa' description='OctopusEnvironment' data_02='Test T1' data_01='Dev D1' data_04='Local - Taliesin' data_03='Continuous Deployment CI 1' data_06='Local - Paulius' data_05='Local - Ravi' data_08='Local - Venkata' data_07='Local - Marko' data_09='Local - Ivan' 

प्रत्येक एकीकरण सेवा का निर्माण मैं इस powershell कदम जोड़ने में:

$octopusEnvironment = ($env:OctopusEnvironment).Trim() 

Write-Host "Octopus environment = '$octopusEnvironment'" 
if ($octopusEnvironment.Length -lt 1) { 
    Write-Host "Auto detecting octopus environment" 
    $trigger = '%teamcity.build.triggeredBy%' -split '::' 
    if ($trigger.Length -gt 2){ 
     $environment = $trigger[1].Trim() 
     Write-Host "##teamcity[setParameter name='env.OctopusEnvironment' value='$environment']" 
    } 
} 

तो अब मैं एक ट्रिगर के माध्यम से एकीकरण परीक्षण चला सकते हैं और जब मैं यह सीधे चलाने यह मुझे संकेत देगा कि किस पर्यावरण के खिलाफ एकीकरण परीक्षण चलाने के लिए।

+4

अच्छी छोटी शक्तियां पर्याप्त हैं। लेकिन जेटब्रेन के लोगों के लिए टीमसीटी में यह सुविधा नहीं होने के कारण यह बहाना नहीं हो सकता है। –

2

मैं एक ही समस्या से फंस गया था और Evgeny द्वारा उल्लिखित मुद्दे के लिए मतदान किया था। एक समाधान जो हमने सोचा था, जैसा कि उल्लेख किया गया है Sergiussergius, REST API का उपयोग कर कस्टम-बिल्ड पैरामीटर को पारित करके मैन्युअल रूप से अगले बिल्ड-कॉन्फ़िगरेशन को ट्रिगर करने के लिए बिल्ड-चरण अनुक्रम में एक अंतिम चरण जोड़ना था। लेकिन इस मामले में, हम बिल्ड-चेन की जानकारी खो रहे हैं। टीमसिटी 9 .x का उपयोग करके, आरईएसटी एपीआई पर कुछ सामानों की कोशिश कर रहा है, मैं एक समाधान को कार्यान्वित कर सकता हूं जो ट्रिगरिंग (पूर्वजों) के निर्माण और ट्रिगर (बच्चे) निर्माण से इसके पैरामीटर को पुनर्प्राप्त करना संभव बनाता है। पहली बात हम करते हैं वातावरण चर TeamCity द्वारा निर्धारित का उपयोग कर वर्तमान बिल्ड हो रही है:

https://<host>/httpAuth/app/rest/builds/number:<env.BUILD_NUMBER>,buildType:(name:<env.TEAMCITY_BUILDCONF_NAME>,project:<env.TEAMCITY_PROJECT_NAME>) 

बाकी एपीआई से कार्रवाई करते हुए हमने एक /निर्माण/ टैग जो ट्रिगर बारे में जानकारी शामिल शुरू हो रहा । ऐसा लगता है कि इस

<triggered type="unknown" details="##triggeredByBuildType='<triggering-build-configuration-internalId>' triggeredByBuild='<triggering-build-number>'" date="20160105T190642+0700"/> 

की तरह हमारे लिए btxxx दिखता लग रहा है। यह से, हम बाकी एपीआई के लिए निम्न अनुरोध का उपयोग कर ट्रिगर-निर्माण (पूर्वज) का उपयोग कर सकते हैं:

https://<host>/httpAuth/app/rest/builds/number:<triggering-build-number>'4,buildType:(internalId:<triggering-build-configuration-internalId>1,project:name:<env.TEAMCITY_PROJECT_NAME>) 

प्रतिक्रिया से, हम पूर्वज-निर्माण के मानकों मान प्राप्त कर सकते है, और वर्तमान में यह सेट का उपयोग करते हुए निर्माण:

echo "##teamcity[setParameter name='env.ENV_AAA' value='aaaaaaaaaa']") 

नोट्स:

  • इस पोस्ट संदर्भ TeamCity संस्करण 7.X. मैंने टीमसिटी संस्करण 9. एक्स का उपयोग करके ऐसा किया, और पिछले संस्करण के साथ इसे आजमाया नहीं जा सका। मुझे नहीं पता कि मेरी पोस्ट में उल्लिखित आरईएसटी एपीआई कॉल पिछले संस्करणों में समान हैं या नहीं।
  • इस समाधान में, पूर्वजों के निर्माण-कॉन्फ़िगरेशन (जो निर्माण को ट्रिगर करता है) और बच्चे के निर्माण-कॉन्फ़िगरेशन (एक ट्रिगर) एक ही प्रोजेक्ट में हैं। मैंने 2 अलग-अलग परियोजनाओं में बिल्ड-कॉन्फ़िगरेशन का उपयोग करके परीक्षण नहीं किया: मैं "ट्रिगर" टैग को पूर्वजों की परियोजना के बारे में जानकारी प्रदान करने की अपेक्षा करता हूं। यह अच्छा होगा अगर कोई परीक्षण कर सके।

मुझे आशा है कि यह समाधान मदद कर सकता है!

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