Ответ
В GitLab CI/CD артефакты — это набор файлов или директорий, которые создаются в процессе выполнения job (задачи) в пайплайне и сохраняются для последующего использования. Они не являются часть исходного кода репозитория.
Типичные примеры артефактов:
- Скомпилированные бинарные файлы или пакеты (
.jar,.exe,.deb). - Результаты выполнения тестов (логи, отчеты в JUnit XML, Allure, Cobertura форматах).
- Документация, сгенерированная из кода.
- Файлы конфигурации для деплоя.
Ключевые возможности и синтаксис:
Артефакты определяются в .gitlab-ci.yml с помощью ключа artifacts.
build_job:
stage: build
script:
- mvn clean package # Сборка Java-проекта
artifacts:
paths:
- target/*.jar # Сохраняем все JAR-файлы из target/
expire_in: 1 week # Артефакты удалятся через неделю
test_job:
stage: test
script:
- mvn test
- pytest --junitxml=report.xml # Запуск Python-тестов
artifacts:
paths:
- target/surefire-reports/ # Отчеты Maven Surefire
- report.xml # Отчет pytest
reports:
junit: report.xml # Специальный отчет для GitLab, отображается в UI
when: always # Сохранять артефакты даже если job упал
deploy_job:
stage: deploy
script:
- scp target/*.jar user@server:/app/ # Копируем артефакт с билд-джобы
dependencies:
- build_job # Указываем, что этой джобе нужны артефакты от build_job
Важные аспекты:
- Хранение: Артефакты хранятся на GitLab-сервере и доступны для скачивания через веб-интерфейс (вкладка "Job") или API. По умолчанию хранятся 30 дней (
expire_in). - Передача между джобами: Джобы в последующих стадиях (
stages) могут использовать артефакты из предыдущих джоб, если указать их вdependencies. Без этого каждая джоба начинается с чистого состояния. - Отчеты (reports): Специальные ключи, такие как
reports:junit, позволяют GitLab парсить результаты тестов и отображать статистику, графики с историей падений и т.д. в Merge Request. - Кэширование vs Артефакты: Кэш (
cache) используется для ускорения повторных сборок (например, зависимостиnode_modules/), а артефакты — для передачи результатов работы пайплайна.