Порівняння GitLab Cache та GitLab Artifacts
GitLab є потужним інструментом для управління репозиторіями та організації CI/CD-процесів. У його функціоналі є два важливі елементи — GitLab Cache та GitLab Artifacts. Хоча вони можуть здатися схожими, їх призначення, спосіб використання та механізми роботи мають суттєві відмінності. У цій статті ми детально розглянемо, що таке GitLab Cache і GitLab Artifacts, у чому їхня різниця та як ефективно їх використовувати у ваших CI/CD-проектах.
Що таке GitLab Cache?
GitLab Cache (кеш) — це механізм тимчасового зберігання даних між різними джобами або пайплайнами. Кеш призначений для прискорення виконання джобів, зберігаючи залежності або тимчасові файли, які повторно використовуються в межах одного проекту.
Основні характеристики GitLab Cache
- Призначення: Прискорення процесу виконання CI/CD джобів за рахунок повторного використання даних.
- Приклади використання:
- Зберігання залежностей (наприклад, файлів
node_modules
для Node.js чиvendor
для PHP). - Кешування результатів компіляції для зменшення часу збірки.
- Зберігання залежностей (наприклад, файлів
- Час зберігання: Конфігурація кешу дозволяє налаштувати час його існування (
expire_in
), після чого кеш буде автоматично видалено. - Місце зберігання: Кеш зберігається на виконавчому середовищі (runner).
Конфігурація GitLab Cache
Для налаштування кешу використовується ключ cache
у файлі .gitlab-ci.yml
.
Приклад:
cache:
key: "node_modules"
paths:
- node_modules/
policy: pull-push
expire_in: 1 week
key
: Унікальний ключ для кешу.paths
: Шляхи до файлів або папок, які потрібно закешувати.policy
: Політика використання кешу (pull
,push
,pull-push
).expire_in
: Тривалість зберігання кешу.
Що таке GitLab Artifacts?
GitLab Artifacts (артефакти) — це результат виконання джобу, який передається для подальшого використання в інших джобах або для аналізу.
Основні характеристики GitLab Artifacts
- Призначення: Збереження результатів виконання джобів, таких як зібрані файли, звіти про тести, артефакти збірки.
- Приклади використання:
- Передача файлів збірки між джобами.
- Зберігання логів тестів або звітів у форматі HTML.
- Розповсюдження зібраного коду для подальшого використання.
- Час зберігання: Артефакти можна зберігати тимчасово або постійно (за замовчуванням — 30 днів).
- Місце зберігання: Артефакти зберігаються на сервері GitLab.
Конфігурація GitLab Artifacts
Для налаштування артефактів використовується ключ artifacts
у файлі .gitlab-ci.yml
.
Приклад:
artifacts:
paths:
- dist/
expire_in: 1 week
reports:
junit: test-results.xml
paths
: Шляхи до файлів або папок, які слід зберегти як артефакти.expire_in
: Тривалість зберігання артефактів.reports
: Спеціалізовані звіти (наприклад, JUnit або Code Quality).
Основні відмінності між GitLab Cache та GitLab Artifacts
Характеристика | GitLab Cache | GitLab Artifacts |
---|---|---|
Призначення | Прискорення виконання джобів | Збереження та передача результатів виконання джобів |
Область використання | Залежності, тимчасові файли | Результати збірки, тести, логи |
Місце зберігання | Виконавче середовище (runner) | Сервер GitLab |
Час зберігання | Налаштовується через expire_in |
Налаштовується через expire_in |
Політика збереження | Тимчасове зберігання | Тимчасове або постійне зберігання |
Передача між джобами | Не призначений для передачі | Використовується для передачі між джобами |
Підтримка звітів | Ні | Так (JUnit, Code Quality, Security Reports) |
Як вибрати між GitLab Cache та GitLab Artifacts
Використовуйте GitLab Cache, якщо:
- Ви хочете прискорити процес збірки за рахунок повторного використання залежностей.
- Потрібно кешувати файли, які не є результатом кінцевої збірки.
- Дані будуть використовуватися лише в рамках поточного проекту.
Приклад: Кешування залежностей у Node.js проекті:
cache:
paths:
- node_modules/
Використовуйте GitLab Artifacts, якщо:
- Ви хочете передати результати виконання джобів для використання іншими джобами.
- Потрібно зберегти зібрані файли, тести або логи для аналізу.
- Потрібен доступ до результатів через вебінтерфейс GitLab.
Приклад: Передача зібраного коду для наступної джоби:
artifacts:
paths:
- dist/
Як поєднати GitLab Cache та GitLab Artifacts
У складних CI/CD-пайплайнах можна одночасно використовувати GitLab Cache і GitLab Artifacts для досягнення оптимальних результатів.
Приклад:
stages:
- install
- build
- test
install:
stage: install
script:
- npm install
cache:
paths:
- node_modules/
build:
stage: build
script:
- npm run build
artifacts:
paths:
- dist/
test:
stage: test
script:
- npm test
artifacts:
reports:
junit: test-results.xml
У цьому прикладі:
- Кеш використовується для збереження залежностей.
- Артефакти зберігають результати збірки та звіти тестів.
Висновок
GitLab Cache і GitLab Artifacts виконують різні ролі в CI/CD-процесах. Cache забезпечує повторне використання даних для пришвидшення джобів, тоді як Artifacts дозволяє передавати результати виконання між джобами та зберігати їх для подальшого аналізу. Розуміння їхніх особливостей та правильне використання допоможе вам створити ефективні та оптимізовані CI/CD-пайплайни у ваших проектах.