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/ # build թղթապանակը դառնում է արտեֆակտ