কীভাবে আমি অন্য পর্যায়ে শিল্পকর্মগুলি পাস করতে পারি?


118

আমি পৃথক স্ক্রিপ্টগুলির সাথে বিভিন্ন ধাপ চালানোর জন্য .gitlab-ci.yml ফাইলের সাথে গিটল্যাব সিআই ব্যবহার করতে চাই। প্রথম পর্যায়ে একটি সরঞ্জাম তৈরি করা হয় যা পরীক্ষার জন্য পরবর্তী পর্যায়ে অবশ্যই ব্যবহার করা উচিত। আমি উত্পাদিত সরঞ্জামকে আর্টিফ্যাক্ট হিসাবে ঘোষণা করেছি।

এখন আমি কীভাবে পরবর্তী সরঞ্জামে সেই সরঞ্জামটি কার্যকর করতে পারি? সঠিক পথটি কী এবং এর চারপাশে কী ফাইল থাকবে?

উদাহরণস্বরূপ, প্রথম পর্যায়ে নিদর্শনগুলি / বিন / টেস্টটুল / টেস্টটুল.এক্সই তৈরি করে এবং সেই ডিরেক্টরিতে অন্যান্য প্রয়োজনীয় ফাইল (ডিএলএল এবং অন্যান্য) থাকে। আমার .gitlab-ci.yml ফাইলটি দেখতে এমন দেখাচ্ছে:

releasebuild:
  script:
    - chcp 65001
    - build.cmd
  stage: build
  artifacts:
    paths:
      - artifacts/bin/TestTool/

systemtests:
  script:
    - chcp 65001
    - WHAT TO WRITE HERE?
  stage: test

প্রাসঙ্গিক হলে উইন্ডোতে বিল্ড এবং টেস্টগুলি চালিত হয়।

উত্তর:


109

ব্যবহার dependencies। এই কনফিগারেশনের মাধ্যমে পরীক্ষার পর্যায়টি বিল্ড স্টেজ চলাকালীন তৈরি হওয়া তালিকাভুক্ত ফাইলগুলি ডাউনলোড করবে:

build:
  stage: build
  artifacts:
    untracked: true
  script:
    - ./Build.ps1

test:
  stage: test
  dependencies: 
    - build
  script:
    - ./Test.ps1

9
অবশেষে কাজ করতে পেয়েছি! এখানে মূল বিষয় হ'ল নির্ভরশীলতাগুলির সাথে নিদর্শনগুলি ব্যবহার করা উচিত। কেবল অন্তর্ভুক্ত থাকা শিল্পকর্মগুলি পরবর্তী পর্যায়ে ভোগের জন্য উপলব্ধ ছিল। বলা বাহুল্য, আপলোড হচ্ছে তা নিয়ে রক্ষণশীল হোন। আমি বলবো এক্সপায়ার_ইন ব্যবহার করুন। অন্যথায় আমরা প্রচুর স্টোরেজ নষ্ট করতে পারি। এই নিদর্শনগুলি বিল্ড জব / স্টেজ / ধাপে গিটল্যাবে আপলোড হয় এবং পরীক্ষায় ডাউনলোড হয়।
রবিকান্ত

22
আপনার কি সত্যিই নির্ভরতা ব্যবহার করতে হবে? গিটল্যাব ডকুমেন্টেশন স্টেটস Note that artifacts from all previous stages are passed by default.। প্রশ্নটি কখন আপনার নির্ভরতা ব্যবহার করা দরকার is

4
ডকুমেন্টেশন এটিকে বেশ ভালভাবে পরিষ্কার করে দেয়: ডকসস.ইইটিলব.এইই
সিআই

4
পূর্ববর্তী সমস্ত স্তর থেকে @ জোসেফ নিদর্শনগুলি পূর্বনির্ধারিতভাবে উত্তীর্ণ হয় (পূর্ববর্তী কাজগুলি থেকে নয়)
বিবেক

4
ডকুমেন্টেশন বিভ্রান্তিকর - এর অর্থ কী যে "সমস্ত পূর্ববর্তী পর্যায়ে" এর নিদর্শনগুলি পাস করা হচ্ছে? যদি আমি এটি সঠিকভাবে বুঝতে পারি, যদি সমস্ত পূর্ববর্তী স্তরগুলি সর্বদা পাস করা হয় তবে সমস্ত কাজ থেকে সমস্ত ডেটা পাওয়া যাবে এবং আমার "নির্ভরতা" ট্যাগটি ব্যবহার করার দরকার নেই। কেবলমাত্র আমি ভাবতে পারি যদি আমি সেই আচরণটি না চাই এবং কেবলমাত্র একটি বা নির্বাচিত কয়েকটি কাজ থেকে শিল্পকর্মগুলি পাস করি।
স্কফগার

64

যেহেতু পূর্ববর্তী সমস্ত স্তরের নিদর্শনগুলি ডিফল্ট দ্বারা উত্তীর্ণ হয়, তাই আমাদের কেবল সঠিক ক্রমে স্তরগুলি সংজ্ঞায়িত করতে হবে। নীচের উদাহরণটি চেষ্টা করুন, যা বুঝতে সাহায্য করতে পারে।

image: ubuntu:18.04

stages:
  - build_stage
  - test_stage
  - deploy_stage

build:
  stage: build_stage
  script:
    - echo "building..." >> ./build_result.txt
  artifacts:
    paths:
    - build_result.txt
    expire_in: 1 week

unit_test:
  stage: test_stage
  script:
    - ls
    - cat build_result.txt
    - cp build_result.txt unittest_result.txt
    - echo "unit testing..." >> ./unittest_result.txt
  artifacts:
    paths:
    - unittest_result.txt
    expire_in: 1 week

integration_test:
  stage: test_stage
  script:
    - ls
    - cat build_result.txt
    - cp build_result.txt integration_test_result.txt
    - echo "integration testing..." >> ./integration_test_result.txt
  artifacts:
    paths:
    - integration_test_result.txt
    expire_in: 1 week

deploy:
  stage: deploy_stage
  script:
    - ls
    - cat build_result.txt
    - cat unittest_result.txt
    - cat integration_test_result.txt

এখানে চিত্র বর্ণনা লিখুন

এবং কেস বিভিন্ন পর্যায়ে কাজ মধ্যে নিদর্শন পাস, আমরা ব্যবহার করতে পারেন নির্ভরতা একসাথে নিদর্শন নিদর্শন থেকে বর্ণিত পাস ডকুমেন্ট

এবং আরও একটি সহজ উদাহরণ:

image: ubuntu:18.04

build:
  stage: build
  script:
    - echo "building..." >> ./result.txt
  artifacts:
    paths:
    - result.txt
    expire_in: 1 week

unit_test:
  stage: test
  script:
    - ls
    - cat result.txt
    - echo "unit testing..." >> ./result.txt
  artifacts:
    paths:
    - result.txt
    expire_in: 1 week

deploy:
  stage: deploy
  script:
    - ls
    - cat result.txt

খুব স্পষ্ট ব্যাখ্যা, আপনাকে ধন্যবাদ। কোনও মঞ্চ যদি কোনও পূর্ববর্তী পর্যায় থেকে একটি শৈল্পিক হিসাবে একই নামে একটি শৈল্পিকের নাম রাখে, তবে কী মূল শৈল্পিকটি ওভাররাইট হয়ে যায়?
মাইকেল ওসোফস্কি

4
@ মিশেলঅওসফস্কি আপনি এই শিল্পকলাটির নাম একই নাম দিয়ে রাখতে পারেন, আসল আর্টিক্টটি একই নামের সাথে পরবর্তী স্তর থেকে একটিতে ওভাররাইট করা যাবে না। পরবর্তী পর্যায়ে কেবল পূর্ববর্তী স্তর থেকে নিদর্শনগুলি ডাউনলোড করা হয়, এটি এর অনুলিপি। আমি উদাহরণগুলিতে তাদের আলাদাভাবে নাম রাখি মূলত ইউনিট পরীক্ষার কারণে এবং ইন্টিগ্রেশন সমান্তরালে কার্যকর করা হবে। যদি আমরা .eg ইন্টিগ্রেশন পরীক্ষার চাকরীটি সরিয়ে ফেলি, সমস্ত কাজ ক্রম অনুসারে কার্যকর হবে, তবে আমরা কোনও বিভ্রান্তি ছাড়াই সমস্ত শিল্পকর্মের জন্য একই নামটি ব্যবহার করতে পারি। এফওয়াইআই, আমি আরও একটি উদাহরণ দিয়ে উত্তর আপডেট করছি।
চুয়ান

আপনার উদাহরণে আমি দেখতে পাচ্ছি যে আপনি রেজাল্ট টেক্সট-এ যুক্ত হচ্ছেন। আপনি যদি ইউনিট টেস্টে রেজাল্ট.এসটিএসটি ওভাররোট করে থাকেন তবে আমি ধরে নিই যে চাকরি মোতায়েন করাতে কখনই জব বিল্ড থেকে ফলাফল.txt এর বিষয়বস্তুতে অ্যাক্সেস থাকবে না। আমি কেবল আমার স্ক্রিপ্টগুলিতে এই ধরণের ত্রুটি সৃষ্টি না করার বিষয়টি নিশ্চিত করতে বলছি।
মাইকেল ওসোফস্কি 21

4
লগ অনুসারে, মোতায়েনের স্তরটি বিল্ড এবং পরীক্ষার স্তরগুলি থেকে ফলাফল.txt উভয়ই ডাউনলোড করবে, তবে পরবর্তীটি পূর্বেরটিকে ওভাররাইট করবে।
চুয়ান

4
বিটিডাব্লু, মূল নিদর্শনটি স্পর্শ করা হয়নি এবং সিআই / সিডি -> পাইপলাইনগুলি থেকে ডাউনলোডের জন্য সর্বদা উপলব্ধ থাকে, তারপরে ডানদিকে নিদর্শনগুলির জন্য ড্রপডাউন বোতামটি ক্লিক করুন, আপনি সমস্ত স্তরের সমস্ত শৈল্পিকাগুলি খুঁজে পাবেন।
চুয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.