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