Sobes.tech
Middle

რა განსხვავებები არსებობს GitLab CI-ში სამუშაო (job) ატრიბუტებად არტეფაქტებისა და კეშის შორის?

sobes.tech AI

პასუხი AI-სგან

GitLab CI-ში არტეფაქტები და კეში სერვისია მშენებლობისა და ტესტირების სიჩქარის გასაზრდელად, მაგრამ ისინი სხვადასხვა ფუნქციებს ასრულებენ და სხვადასხვა დანიშნულება აქვთ.

არტეფაქტები (artifacts):

  • მიზანი: სამუშაოს (შენახვა, ტესტები, დოკუმენტაცია და ა.შ.) შედეგების შენახვა შემდგომი გამოყენებისთვის ან ნახვისთვის. ისინი შეიძლება ხელით ჩამოტვირთოს ან ვებ ინტერფეისის მეშვეობით იყოს ხელმისაწვდომი.
  • ცხოვრების ხანგრძლივობა: განსაზღვრულია .gitlab-ci.yml კონფიგურაციით. შეიძლება წაიშალოს გარკვეული დროის შემდეგ ან შენახული იყოს.
  • ზომა: ჩვეულებრივ უფრო დიდი, ვიდრე კეში, რადგან შეიცავს მზადყოფნაში არსებული შემადგენლობას, ანგარიშებს და სხვა შედეგებს.
  • გამოყენება: შედეგების გადაცემა სხვადასხვა ეტაპზე ან მომხმარებლებსთვის ხელმისაწვდომობისთვის.

კონფიგურაციის მაგალითი:

artifacts:
  paths: # ფაილების და დირექტორიების გზები, რომლებიც არტეფაქტებად იქცევიან
    - build/
    - test-results.xml
  expire_in: 1 კვირა # არტეფაქტების სიცოცხლის ხანგრძლივობა

კეში (cache):

  • მიზანი: პროექტის დამოკიდებულებების ან შუამავლობითი შედეგების შენახვა, რათა გაშვების სიჩქარე გაიზარდოს. კეში დაკავშირებულია კონკრეტულ ფილიალთან ან ტეგთან (შესაძლებელია კონფიგურაცია).
  • ცხოვრების ხანგრძლივობა: ავტომატურად მართავს GitLab-ი. ძველი ჩანაწერები წაიშლება, როდესაც კვოტა გადაჭარბდება ან ვადა ამოიწურება. კეში შეიძლება ავტომატურად აღდგეს ან შექმნას ახალი ახალი გაშვების დროს.
  • ზომა: ჩვეულებრივ პატარა, ვიდრე არტეფაქტები, რადგან შეიცავს დამოკიდებულებებს, როგორიცაა Maven რეპოზიტორები, npm პაკეტები და ა.შ.
  • გამოყენება: დამოკიდებულებების ინსტალაციის სიჩქარის გაზრდა და მშენებლობის დროის შემცირება.

კონფიგურაციის მაგალითი:

cache:
  paths: # გზები დირექტორიებისთვის, რომლებიც კეშდება
    - node_modules/
    - ~/.m2/repository/
  key: # კეშის გასაღები, შეიძლება გამოიყენოს წინასწარ განსაზღვრული ცვლადები
    files:
      - package-lock.json # კეში განახლდება ამ ფაილის ცვლილებისას
    prefix: ${CI_COMMIT_REF_SLUG} # წინაფიქსის დამატება ფილიალის/ტეგის სახელით

ძირითადი განსხვავებები:

მახასიათებელი არტეფაქტები (artifacts) კეში (cache)
მიზანი სამუშაოს შედეგების შენახვა დამოკიდებულებების შენახვა სიჩქარის გასაზრდელად
გამოყენება ჩამოტვირთვა, გადაცემა სამუშაოებს შორის (განსხვავებული ფაზები) ავტომატური აღდგენა/შექმნა
ცხოვრების ხანგრძლივობა ნათლად განსაზღვრული .gitlab-ci.yml-ში მართავს GitLab-ი, ავტომატური წაშლა
წვდომა ვებ ინტერფეისის, API-ის მეშვეობით ავტომატურად იყენებს Runner-ი
შეხება ფილიალთან პირდაპირი კავშირი არა (თუ არ არის მითითებული) ჩვეულებრივ დაკავშირებულია ფილიალთან გამიჯვნისთვის

ამიტომ, არტეფაქტები — ეს არის მშენებლობის შედეგები, ხოლო კეში — ეს არის მეორადი კომპონენტები მშენებლობის სიჩქარის გასაზრდელად.

job_example:
  stage: build
  script:
    - echo "Building and testing..."
    - mkdir build
    - echo "Build result" > build/result.txt
    - echo "dependency installation"
  cache:
    paths:
      - dependency_dir/ # დამოკიდებულებების ფოლდერი, რომელიც კეშდება
  artifacts:
    paths:
      - build/ # მშენებლობის ფოლდერი გახდება არტეფაქტი