क्या कई गीतालाब पाइपलाइनों के पार नौकरियों के "ताला" समूह के लिए संभव है


11

मेरे पास एक ही बाहरी संसाधन (सर्वर) के साथ कई काम हैं। पहली नौकरी पर्यावरण के लिए एप्लिकेशन को तैनात करती है, दूसरी इस माहौल में परीक्षण निष्पादित करती है, तीसरी इस वातावरण में एकीकरण परीक्षणों को निष्पादित करती है।

मुझे पता है कि संसाधन समूह विकल्प है। लेकिन यह केवल नौकरियों पर ताला लगाता है। मैं पर अमल करने की जरूरत है दो पाइपलाइनों समवर्ती चलाते हैं job1, job2, job3दूसरी पाइपलाइन शुरू कर सकते हैं - पहले पाइप लाइन और केवल जब पहले पाइप लाइन रिलीज संसाधन से jobs1-3। क्या इसको हासिल करने के लिए कोई रास्ता है? पाइपलाइन में अन्य नौकरियां हैं - उन्हें समवर्ती रूप से काम करना चाहिए।

जवाबों:


1

Jobs1-3 के लिए एक समर्पित रनर सेट करें।

  1. एक नए टैग को एक अनूठे टैग के साथ सेट करेंconcurrent1 जैसे 'जॉब-1-2-3' और विकल्प को सेट करें

  2. प्रश्न में नौकरियों के लिए अद्वितीय टैग जैसे 'जॉब-1-2-3' जोड़ें।

    job1:
      tags:
        - jobs-1-2-3
    job2:
      tags:
        - jobs-1-2-3
    job3:
      tags:
        - jobs-1-2-3
    

IMHO यह कम प्रयास और अधिक विश्वसनीय है।


यकीन नहीं है कि यह काम करेगा। संभावित परिदृश्य: पाइपलाइन 1 (पी 1) जॉब 1 (जे 1), फिर पाइपलाइन 2 (पी 2) रन जॉब 1 (जे 1), फिर पाइपलाइन 1 स्टार्ट जॉब 2। मुझे p1 रन j1, j2, j3 की आवश्यकता है, तो P2 रन j1, j2, j3। लगता है कि संसाधन समूह ऐसा ही करेंगे
ज़ुफर मुहम्मदेव

चूंकि नया धावक एक समय में केवल एक नौकरी की प्रक्रिया करेगा और अनूठे टैग के कारण कोई अन्य धावक नौकरियों को नहीं लेगा, यह सुनिश्चित किया जाता है कि पी 1 के खत्म होने तक पी 2 का इंतजार किया जाए। इसके अलावा डॉक्स.जीतलाब.com
ee/

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

हां, रनर पी 2 में नौकरियों को प्रसंस्करण से पहले समाप्त करेगा।
रिवाई

यह दृष्टिकोण अब तक काम करता है
ज़ुफ़र मुहम्मदेव

0

मैं इसे माध्यम से लागू किया जा सकता लगता है needsऔर resource_groupकीवर्ड्स और gitlab एपीआई।

हर काम पाइपलाइन आईडी को प्राप्त करता है, जिसका यह एक है predefined-variable। यदि आप गिटलैब एपी का उपयोग करते हैं, तो आप पाइपलाइन में अन्य नौकरियों की स्थिति देख सकते हैं। यदि आप इस स्थिति needsऔर resource_groupकीवर्ड का उपयोग कर सकते हैं, तो मुझे लगता है कि आप अपने इच्छित उद्देश्य को प्राप्त कर सकते हैं। अधिक विवरण के लिए नीचे दिए गए कोड का विवरण और इसकी टिप्पणियां देखें।

stages:
  - ready
  - build

job1:
  stage: build
  needs: [starting_signal]
  script: 
    - sleep 10 && echo "job1"
job2:
  stage: build
  needs: [starting_signal]
  script:
    - sleep 20 && echo "job2"
job3:
  stage: build
  needs: [starting_signal]
  script:
    - sleep 30 && echo "job3"

starting_signal:
  stage: ready
  script:
    - # TODO: You need to implement it using the GitLab API.
    - # The starting condition for "job1-3" is
    - # that this `starting_signal` job finished successfully.
    - # And the condition that ends with the success of this job
    - # is that `traffic_light` becomes running.

traffic_light: 
  stage: ready
  resource_group: traffic_light
  script:
    - # TODO: You need to implement it using the GitLab API.
    - # The end condition for `traffic_light` is
    - # the end of job1-3 execution.
    - # In other words, this job must be checked and waited
    - # through gitlab api until job 1,2,3 is finished.
    - # Since this job locks the execution of a `traffic_light` job
    - # in another pipeline, the `starting_signal` job in another 
    - # pipeline does not succeed.

(मैंने खुद इसका परीक्षण नहीं किया, इसलिए इस पद्धति की समीक्षा की आवश्यकता है।)

Referenecs:


आपके उत्तर के लिए धन्यवाद। अगर मुझे traffic_lightनौकरी में सही समझ है, तो मुझे समवर्ती पाइपलाइन में job1-3 के निष्पादन के लिए इंतजार करना चाहिए। मुझे इस दृष्टिकोण में क्या पसंद नहीं है - समवर्ती पाइपलाइन की स्थिति की जांच करने पर आपके सीआई मिनट बर्बाद हो जाएंगे।
जुफर मुहम्मदेव

यदि आप ci मिनट के बारे में चिंतित हैं, तो आप कीवर्ड traffic_lightका उपयोग करने के लिए स्व-होस्ट किए गए गिटलैब-रनर का उपयोग कर tagsसकते हैं। कई क्लाउड विक्रेता आज मुफ्त टियर इंस्टेंसेस प्रदान करते हैं, जो कि सरल प्रतीक्षा नौकरियों को चलाने के लिए पर्याप्त हैं traffic_light
aluc

आत्मप्रकाशित धावकों पर भी गिटलैब मिनटों की तरह दिखता है। मैं नौकरी पाने की कोशिश कर रहा हूं जो स्व-होस्ट किए गए धावक के लिए टैग है - लेकिन यह लॉन्च नहीं करता है और पाइपलाइन मिनट सीमा से अधिक के बारे में संदेश दिखाता है: i.imgur.com/vBftxmk.png
Zufar Muhamadeev

1
यदि यह इस ( gitlab.com/gitlab-org/gitlab-foss/issues/58942 ) मुद्दे से संबंधित है , तो ऐसा लगता है कि कोटा खत्म होने के बाद विशिष्ट धावक काम नहीं करता है। मुझे यकीन नहीं है कि यह स्पष्ट है, लेकिन यह सीधे आपके मूल प्रश्न से संबंधित नहीं है, इसलिए मैं यहां या गीतालाब पर एक अलग प्रश्न पोस्ट करने का सुझाव दूंगा।
aluc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.