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/ # მშენებლობის ფოლდერი გახდება არტეფაქტი