भले ही मैंने System.Debug=True सेट किया हो, मुझे "नौकरी छोड़ दी गई" के अलावा कोई अन्य जानकारी नहीं मिलती है। सचमुच ये चार शब्द।

मैंने Azure Devops पर एक YAML-रिलीज़ पाइपलाइन बनाई जो मूल रूप से नौकरियां चलाती है:

  • नौकरी: बिल्ड_रिलीज
  • कार्य: परिनियोजन: परिनियोजन_टेस्ट
  • नौकरियां: परिनियोजन: परिनियोजन_स्टेज

व्यवहार का परीक्षण करने के लिए मैंने पहले केवल पहली दो नौकरियां चलाईं और परीक्षण में तैनात किया। अब मैं STAGE पर तैनात करना चाहता हूं लेकिन ऐसा लगता है कि पाइपलाइन केवल तभी काम कर रही है जब मैं शुरुआत से शुरू करता/एक नई रिलीज बनाता हूं। लेकिन मैं अभी जो करना चाहता हूं वह पहले से मौजूद रिलीज को टेस्ट से स्टेज पर तैनात करना है। जब मैं पाइपलाइन को फिर से चलाकर ऐसा करने का प्रयास करता हूं तो Azure बस सभी चरणों को छोड़ देता है। ऐसा क्यों हो रहा है? मैं इससे कैसे बच सकता हूं और पाइपलाइन को फिर से चला सकता हूं? मैंने कोई शर्त नहीं रखी।

अतिरिक्त जानकारी के साथ संपादित करें:

पाइपलाइन की संरचना


trigger:
    - release/*

variables:
     ...

resources:
    -   repo: self


pool:
    vmImage: $(vmImageName)

stages:
    -   stage: build_release
        displayName: 'awesome build'
        condition: contains(variables['Build.SourceBranchName'], 'release/')
        jobs:
            -   job: build_release
                steps:
                    ...

    -   stage: deploy_test
        displayName: 'awesome test deploy'
        jobs:
            -   deployment: deploy_test
                environment: 'test'
                strategy:
                    runOnce:
                        deploy:
                            steps:
                               ...

    -   stage: deploy_stage
        displayName: 'awesome stage deploy'
        jobs:
            -   deployment: deploy_stage
                environment: 'stage'
                strategy:
                    runOnce:
                        deploy:
                            steps:
                               ...

मैंने इसे दो अलग-अलग तरीकों से ट्रिगर करने की कोशिश की, जिसका एक ही परिणाम था (सब कुछ छोड़ दिया गया था): ए। मैंने एक नई रिलीज़ बनाई जो पहले से तैनात रिलीज़ की एक प्रति थी। B. मैंने रन पाइपलाइन पर क्लिक किया।

2
MajinBoo 14 पद 2020, 15:39

2 जवाब

सबसे बढ़िया उत्तर

समस्या condition: contains(variables['Build.SourceBranchName'], 'release/') की स्थिति के कारण है, जिसे आपने चरण build_release के लिए निर्दिष्ट किया था।

जब ट्रिगर - release/* पर सेट हो। वेरिएबल variables['Build.SourceBranchName'] का मूल्यांकन / के बाद शाखा के नाम पर किया जाएगा।

उदाहरण के लिए:

यदि आपने अपनी पाइपलाइन को शाखा release/release1.0 से चालू किया है। variables['Build.SourceBranchName'] का मान release/release1.0 के बजाय release1.0 होगा। तो स्थिति contains(variables['Build.SourceBranchName'], 'release/') हमेशा झूठी होगी, जिसके कारण चरण build_release को छोड़ दिया गया।

enter image description here

और, यदि आपने चरण deploy_test और चरण deploy_stage के लिए निर्भरता निर्दिष्ट नहीं की है, तो अगला चरण डिफ़ॉल्ट रूप से पिछले चरण पर निर्भर करेगा। तो ये दो चरण भी छूट गए, क्योंकि चरण build_release छोड़ दिया गया है। यही कारण है कि आपने देखा कि सभी चरणों को छोड़ दिया गया था।

enter image description here

समाधान:

चर Build.SourceBranch स्थिति में है।

नीचे की तरह स्थिति बदलें: (रिलीज़ शाखाओं में yaml फ़ाइल को भी नीचे की तरह बदला जाना चाहिए)

- stage: build_release
  displayName: 'awesome build'
  condition: contains(variables['Build.SourceBranch'], 'release/') #use Build.SourceBranch

प्रख्यात: यदि आपने अपनी पाइपलाइन को मैन्युअल रूप से ट्रिगर किया है। कृपया सुनिश्चित करें कि आपका चयन रिलीज शाखाओं से पाइपलाइन को ट्रिगर करने के लिए है। या पाइपलाइन डिफ़ॉल्ट रूप से मुख्य शाखा से चालू हो जाएगी।

enter image description here

5
Levi Lu-MSFT 15 पद 2020, 06:35

यहां मुद्दा यह है कि जब पाइपलाइन का रन बनाया गया था तो ऐसा लगता है कि तैनाती चरण का चयन नहीं किया गया था। जैसे कि पाइपलाइन के संकलन के समय मंच को छोड़ दिया गया था क्योंकि इसे उस रन के भीतर छोड़े जाने के रूप में परिभाषित किया गया था।

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

0
DreadedFrost 14 पद 2020, 19:34