একাধিক গিটল্যাব পাইপলাইন জুড়ে কাজের গোষ্ঠীটি "লক" করা কি সম্ভব?


11

আমার একক বহিরাগত সংস্থান (সার্ভার) দিয়ে কাজ করার একাধিক কাজ রয়েছে। প্রথম কাজটি অ্যাপ্লিকেশনটিকে পরিবেশে মোতায়েন করে, দ্বিতীয় পরিবেশে এই পরিবেশে পরীক্ষা চালায়, তৃতীয়টি এই পরিবেশে ইন্টিগ্রেশন পরীক্ষা চালায়।

আমি জানি রিসোর্স গ্রুপ অপশন আছে। তবে এটি কেবল চাকরিগুলিকেই তালা দেয়। আমি চালানো প্রয়োজন দুই পাইপলাইনগুলি একই সময়ে চালানো তাহলে job1, job2, job3দ্বিতীয় পাইপলাইন চালু করতে পারে - প্রথম পাইপলাইন এবং শুধুমাত্র যখন প্রথম পাইপলাইন মুক্তি সম্পদ থেকে jobs1-3। এই অর্জন করার জন্য একটি উপায় আছে কি? পাইপলাইনে অন্যান্য কাজ রয়েছে - তাদের একযোগে কাজ করা উচিত।

উত্তর:


1

কাজের জন্য ডেডিকেটেড রানার সেটআপ করুন ১-৩।

  1. সেটআপ একটি নতুন রানার একটি অনন্য ট্যাগ যথা, 'কাজ-1-2-3' এবং বিকল্প সেট concurrentকরতে1

  2. প্রশ্নযুক্ত চাকরিতে অনন্য ট্যাগ যুক্ত করুন যেমন- 'চাকরি-1-2-2'।

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

আইএমএইচও এটি কম প্রচেষ্টা এবং আরও নির্ভরযোগ্য।


নিশ্চিত যে এটি কাজ করবে। সম্ভাব্য পরিস্থিতি: পাইপলাইন 1 (পি 1) রান জব 1 (জে 1), তারপরে পাইপলাইন 2 (পি 2) রান জব 1 (জে 1), তারপরে পাইপলাইন 1 জব 2 শুরু করুন। আমার পি 1 রান জে 1, জে 2, জে 3 দরকার পরে পি 2 রান জ 1, জে 2, জ 3 3 দরকার। দেখে মনে হচ্ছে রিসোর্স
গ্রুপও

যেহেতু নতুন রানার একবারে কেবল একটি কাজ প্রক্রিয়া করবে এবং অনন্য ট্যাগের কারণে অন্য কোনও রানার কাজগুলি বেছে নেবে না, এটি নিশ্চিত করা হয়েছে যে পি 2 শেষ হওয়ার জন্য পি 2 অপেক্ষা করে its এছাড়াও docs.gitlab.com/ee/user/project/piplines/… দেখুন
রিউ আমরা

আমি মুলতুবি পাইপলাইন বাতিল করতে চাই না। যেমনটি আমি বলেছিলাম অন্যান্য কাজ রয়েছে - তাদের একযোগে কাজ করা উচিত। সুতরাং আপনি যদি দুটি পাইপলাইন চলমান থাকে এবং সমবর্তী বিকল্পটি সেট করা থাকে তবে আপনি কী ভাগ করছেন - রানার সর্বদা প্রথম পাইপলাইন থেকে কাজ বেছে নেবেন?
যুফার মুহাদামেদেব

হ্যাঁ, রানার পি 2 থেকে কাজগুলি প্রসেস করার আগে পি 1 এ কাজ শেষ করবে।
রিউ আমরা

এই পদ্ধতির এখনও পর্যন্ত কাজ করে
জুফার মুহাদামেদেব

0

আমি এটা মাধ্যমে প্রয়োগ করা যেতে পারে মনে needsএবং resource_groupকীওয়ার্ড এবং gitlab API- টি।

প্রতিটি কাজ পাইপলাইন আইডিটি গ্রহণ করে যা এটি হিসাবে এটি 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চাকরিতে সঠিক বুঝতে পারি তবে আমার একযোগে পাইপলাইনে জব 1-1 শেষ হওয়ার শেষের অপেক্ষা করা উচিত। আমি এই পদ্ধতির মধ্যে যা পছন্দ করি না - আপনার সিআই মিনিটগুলি সমবর্তী পাইপলাইনের স্থিতি পরীক্ষা করতে নষ্ট হবে।
জুফার মুহাদামেদেব

আপনি CI মিনিট করার বিষয়ে উদ্বিগ্ন থাকেন, আপনার জন্য স্ব-হোস্ট করা gitlab চোরাচালানকারী ব্যবহার করতে পারেন traffic_lightব্যবহার tagsশব্দ। অনেক ক্লাউড বিক্রেতারাই আজ বিনামূল্যে স্তরের দৃষ্টান্ত সরবরাহ করে যা সাধারণ ওয়েট জব চালানোর জন্য যথেষ্ট traffic_light
aluc

দেখে মনে হচ্ছে গিটল্যাব এমনকি স্ব-হোস্টেড রানারদের কাছে মিনিট গুনেছে। আমি স্ব-হোস্টেড রানারদের
জুফার মুহামাদেদেব

1
যদি এটি ( gitlab.com/gitlab-org/gitlab-foss/issues/58942 ) সমস্যার সাথে সম্পর্কিত হয় তবে মনে হয় যে কোটা অতিক্রম করার পরে নির্দিষ্ট রানার কাজ করবে না। এটি পরিষ্কার কিনা আমি নিশ্চিত নই, তবে এটি সরাসরি আপনার মূল প্রশ্নের সাথে সম্পর্কিত নয়, তাই আমি এখানে বা গিটলবে একটি পৃথক প্রশ্ন পোস্ট করার পরামর্শ দেব।
aluc
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.