← Назад к вопросам

Что такое артефакты в GitLab?

1.8 Middle🔥 131 комментариев
#CI/CD и автоматизация#Git и системы контроля версий

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое артефакты в GitLab

В контексте GitLab CI/CD, артефакты (artifacts) — это файлы или набор файлов, которые создаются в процессе выполнения заданий (jobs) в pipeline и сохраняются для дальнейшего использования. Они являются одним из ключевых механизмов для передачи данных между этапами CI/CD и для предоставления результатов работы (например, отчетов тестирования или готовых бинарных файлов) для загрузки пользователями.

Основные цели и использование артефактов

  • Передача данных между заданиями в pipeline. Например, задание build компилирует проект и создает артефакт (бинарный файл), который затем используется заданием test для проведения проверок.
  • Сохранение результатов для последующего анализа. Это могут быть отчеты о тестировании (JUnit, HTML), метрики покрытия кода (Coverage), логи сборки или результаты статического анализа (SAST).
  • Предоставление готовых продуктов для скачивания. Самый распространенный пример — сохранение собранного приложения (например, .jar, .exe, .tar.gz) в качестве артефакта, который затем можно загрузить из интерфейса GitLab.
  • Кэширование промежуточных результатов для оптимизации. В некоторых случаях артефакты могут использоваться для сохранения состояния (например, зависимостей), чтобы ускорить следующие выполнения pipeline (хотя для этой задачи чаще используется отдельный механизм cache).

Как артефакты определяются и работают

Артефакты задаются в файле .gitlab-ci.yml с помощью ключа artifacts в определении задания. Можно указать:

  • paths: список путей к файлам или директориям, которые нужно сохранить.
  • exclude: шаблоны для исключения файлов из артефакта.
  • expire_in: срок жизни артефакта (например, 7 days). По истечении этого времени артефакт удаляется.
  • name: имя артефакта (можно использовать переменные).
  • when: условие сохранения (on_success, on_failure, always).
  • reports: специальные ключи для сохранения отчетов, которые GitLab может интерпретировать и отображать в UI (например, junit, cobertura).

Пример определения артефактов в .gitlab-ci.yml:

build:
  stage: build
  script:
    - mvn clean package
  artifacts:
    paths:
      - target/my-app.jar
    expire_in: 1 week
    name: "my-app-$CI_COMMIT_SHORT_SHA"

test:
  stage: test
  script:
    - mvn test
  artifacts:
    paths:
      - target/surefire-reports/
    reports:
      junit: target/surefire-reports/TEST-*.xml

deploy:
  stage: deploy
  script:
    - cp target/my-app.jar /deployment/
  dependencies:
    - build # Это задание получит артефакт из задания 'build'

В этом примере:

  1. Задание build создает артефакт — файл my-app.jar, который будет доступен для скачивания и для других заданий.
  2. Задание test сохраняет отчеты тестирования как артефакты и, благодаря ключу reports: junit, GitLab автоматически распарсит эти XML-файлы и отобразит результаты в разделе CI/CD > Jobs и на графике pipeline.
  3. Задание deploy использует ключ dependencies для указания, что ему нужен артефакт из задания build. GitLab автоматически загрузит артефакт my-app.jar в контейнер задания deploy перед выполнением его скриптов.

Типы артефактов и отчеты (reports)

GitLab выделяет особую категорию артефактов — отчеты (reports). Они не только сохраняются как файлы, но их содержимое анализируется системой для улучшения визуализации процесса CI/CD.

Ключевые типы отчетов, поддерживаемые GitLab:

  • junit: Отчеты о результатах тестирования в формате JUnit XML. GitLab показывает количество успешных/неуспешных тестов и время выполнения.
  • cobertura: Отчеты о покрытии кода (code coverage) в формате Cobertura XML. GitLab вычисляет процент покрытия и отображает его в pipeline.
  • terraform: План выполнения Terraform (tfplan). GitLab предоставляет специальный интерфейс для его просмотра.
  • codequality, sast, secret_detection: Отчеты различных сканеров безопасности. GitLab агрегирует их и показывает в разделе Security проекта.

Взаимодействие с артефактами через UI и API

  • Интерфейс GitLab: Для каждого выполненного задания, если были созданы артефакты, в его детальном view появляется кнопка Download artifacts. Также в разделе CI/CD > Jobs есть фильтр для показа только заданий с артефактами.
  • API GitLab: Можно получить список артефактов задания или скачать их через REST API. Например, endpoint GET /projects/:id/jobs/:job_id/artifacts.

Отличие артефактов от кэша (cache)

Это важный момент для понимания оптимизации pipeline.

  • Артефакты создаются в одном задании и предназначены для использования в последующих заданиях того же pipeline или для скачивания. Они обычно уникальны для каждого pipeline (связываются с коммитом).
  • Кэш предназначен для повторного использования данных между разными выполнениями pipeline (например, между pipeline разных коммитов или веток). Чаще всего кэшируют зависимости (пакеты npm, библиотеки Maven/Gradle), чтобы не загружать их каждый раз. Кэш может быть общим для нескольких pipeline и заданий.

Итог: Артефакты в GitLab — это мощный и гибкий механизм для сохранения выходных данных CI/CD процессов, обеспечения передачи состояния между этапами и предоставления удобного доступа к результатам работы (бинарным файлам, отчетам) для разработчиков и автоматизированных систем. Правильное их использование значительно повышает эффективность и информативность pipeline.

Что такое артефакты в GitLab? | PrepBro