Middle
Millised on erinevused artefaktide ja vahemälu vahel GitLab CI-s töö (job) atribuudi osas?
sobes.tech AI
Vastus AI-lt
GitLab CI artefakti un kešs kalpo, lai paātrinātu būvniecību un testēšanu, taču tie pilda dažādas funkcijas un ir paredzēti dažādiem mērķiem.
Artefakti (artifacts):
- Mērķis: Saglabāt uzdevuma (būvniecības, testu, dokumentācijas utt.) rezultātus turpmākai izmantošanai vai pārskatīšanai. Tie var tikt lejupielādēti manuāli vai pieejami caur tīmekļa saskarni.
- Derīguma laiks: Nosaka
.gitlab-ci.ymlkonfigurācija. Var tikt dzēsti pēc noteikta laika vai saglabāti. - Izmērs: Parasti lielāki par kešiem, jo satur gatavas būves, pārskatus un citus rezultātus.
- Izmantošana: Rezultātu nodošanai starp uzdevumiem dažādās stadijās vai lietotājiem.
Konfigurācijas piemērs:
artifacts:
paths: # ceļi uz failiem un direktorijām, kas kļūs par artefaktiem
- build/
- test-results.xml
expire_in: 1 week # artefaktu derīguma laiks
Kešs (cache):
- Mērķis: Saglabāt projekta atkarības vai starpposma rezultātus, lai paātrinātu turpmākos izpildes gadījumus vienam un tam pašam uzdevumam. Kešs ir saistīts ar noteiktu zaru vai tagu (var konfigurēt).
- Derīguma laiks: Automātiski pārvalda GitLab. Vecās keša ieraksti tiek dzēsti, kad pārsniedz kvotu vai beidzas derīguma termiņš. Kešs var tikt automātiski atjaunots vai izveidots jauna izpildes laikā.
- Izmērs: Parasti mazāks par artefaktiem, jo satur atkarības, piemēram, Maven repozitorijus, npm pakotnes utt.
- Izmantošana: Atkarību instalēšanas paātrināšanai un būvniecības laika samazināšanai.
Konfigurācijas piemērs:
cache:
paths: # ceļi uz direktorijām, kas tiks kešētas
- node_modules/
- ~/.m2/repository/
key: # keša atslēga, var izmantot iepriekš definētas mainīgās
files:
- package-lock.json # kešs tiks atjaunināts, mainoties šim failam
prefix: ${CI_COMMIT_REF_SLUG} # pievieno prefiksu ar zara/taga nosaukumu
Galvenās atšķirības:
| Raksturlielums | Artefakti (artifacts) | Kešs (cache) |
|---|---|---|
| Mērķis | Saglabāt rezultātus no uzdevuma | Saglabāt atkarības paātrinājumam |
| Izmantošana | Lejupielāde, nodošana starp uzdevumiem (dažādās stadijās) | Automātiska atjaunošana/izveide |
| Derīguma laiks | Skaidri noteikts .gitlab-ci.yml konfigurācijā |
Pārvalda GitLab, automātiska dzēšana |
| Piekļuve | Caur tīmekļa saskarni, API | Automātiski izmanto Runneris |
| Saistība ar zaru | Nav tieša saistība (ja nav norādīts) | Parasti saistīts ar zaru izolācijai |
Tādējādi, artefakti ir būvniecības izejvadoti, bet kešs ir atkārtoti izmantoti komponenti būvniecības paātrināšanai.
job_example:
stage: build
script:
- echo "Būvēšana un testēšana..."
- mkdir build
- echo "Būves rezultāts" > build/result.txt
- echo "atkarību instalēšana"
cache:
paths:
- dependency_dir/ # atkarību mape, tiks kešēta
artifacts:
paths:
- build/ # būves mape kļūs par artefaktu