मैं इसे माध्यम से लागू किया जा सकता लगता है 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: