Middle
Kādi ir atšķirības starp artefaktiem un kešatmiņu GitLab CI kā uzdevuma (job) atribūtiem?
sobes.tech AI
Atbilde no AI
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