Артефакт сборки
Артефакт сборки — это неизменяемый набор файлов, генерируемый системой автоматизации после успешной компиляции исходного кода. Он представляет собой готовый к развертыванию продукт: исполняемый бинарник, Docker-образ или статический Веб-Кэш. Этот объект служит единственной достоверной версией приложения для всех последующих стадий CI/CD-пайплайна.
Главное
- Артефакт — это результат работы билд-системы (Jenkins, GitHub Actions), а не ручной процесс разработчика.
- Объект обладает свойством неизменяемости: его нельзя редактировать, можно только заменять новой версией.
- Хранится в специализированных репозиториях (Nexus, Artifactory) с привязкой к хешу коммита Git.
- Гарантирует идентичность окружений: то, что прошло тесты, будет запущено на продакшене.
Как работает Артефакт сборки
Процесс создания начинается с триггера в системе контроля версий, например, при пуше в ветку main. CI/CD-Сервер клонирует Репозиторий и запускает Скрипт сборки. На этом этапе происходит установка зависимостей, линтинг кода и выполнение юнит-тестов. Если все проверки пройдены успешно, система упаковывает итоговые файлы в архив или образ. Затем создается уникальный идентификатор версии, часто включающий номер коммита и метку времени. Полученный пакет загружается в централизованное хранилище артефактов, откуда он может быть извлечен на следующих этапах пайплайна для деплоя или тестирования.
Зачем нужен Артефакт сборки
Основная цель использования заключается в обеспечении воспроизводимости и безопасности релизов. Без единого артефакта команда рискует столкнуться с проблемой «работает на моей машине», когда локальная Среда разработчика отличается от боевой. Объект сборки выступает как точка аудита: каждая версия жестко привязана к конкретному состоянию исходного кода. Это позволяет мгновенно откатиться к предыдущей стабильной версии при обнаружении критической ошибки. Кроме того, использование промежуточных артефактов ускоряет работу пайплайна, исключая необходимость повторной компиляции кода на каждом шаге.
Формат объекта зависит от целевой платформы и используемого стека технологий. В экосистеме Java популярны JAR и WAR-файлы, содержащие скомпилированный Байт-код и ресурсы. Для микросервисов стандартом де-факто стали Docker-образы, упакованные в слои. Фронтенд-приложения обычно генерируют статические HTML, CSS и JS-файлы, которые затем публикуются на CDN. Также существуют промежуточные артефакты: отчеты о покрытии кода, логи тестов или профили производительности, которые не разворачиваются, но важны для анализа качества продукта.
Где используется Артефакт сборки
Ключевая область применения — системы непрерывной доставки (CI/CD). Здесь объект передается между джобами: от стадии тестирования до стадии развертывания в облачные провайдеры (AWS, Azure, GCP). В контейнерных оркестраторах Kubernetes артефакт (образ) загружается в реестр и скачивается подами для запуска. В мобильной разработке APK и IPA-файлы используются для распространения приложений через магазины или внутренние системы дистрибуции. Инфраструктура как код (Terraform) также может использовать артефакты конфигураций для применения изменений в реальном мире.
Рассмотрим типичный сценарий в GitHub Actions, где результат сборки сохраняется для следующего шага. Ниже показан фрагмент YAML-конфигурации, демонстрирующий Сохранение статических файлов фронтенда.
name: Build and Deploy
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm ci && npm run build
- uses: actions/upload-artifact@v3
with:
name: frontend-build
path: dist/
В данном примере команда upload-artifact упаковывает папку dist в архив. Следующий шаг пайплайна может загрузить этот файл командой download-artifact, чтобы развернуть его на сервере без повторной сборки проекта.
Часто задаваемые вопросы
Можно ли изменять существующий артефакт?
Нет, это нарушает принцип неизменяемости. Если найдена Ошибка, необходимо создать новую сборку с исправленным кодом и новым номером версии. Старый артефакт остается в истории для аудита и возможности отката.
Чем артефакт отличается от образа контейнера?
Docker-образ — это частный случай артефакта, упакованный по специфическому формату OCI. Обычный артефакт может быть просто ZIP-архивом или бинарным файлом, который не требует контейнеризации для запуска.
Сколько хранятся артефакты в CI/CD?
Это зависит от политики хранения. В некоторых системах они удаляются автоматически после определенного срока или количества версий. В корпоративных репозиториях (Artifactory) их могут хранить годами для соответствия регуляторным требованиям.
Что делать, если сборка упала?
Если этап компиляции завершился ошибкой, артефакт не создается. Команда должна исправить код, запушить изменения и запустить пайплайн заново. Логи падения сохраняются отдельно для диагностики проблемы.
Итоги
Артефакт сборки является фундаментальным элементом современной разработки, обеспечивающим Надежность и скорость выпуска программного обеспечения.
- Он гарантирует, что Приложение собирается один раз и проходит все проверки до попадания в продакшен.
- Неизменяемость объекта защищает от несанкционированных изменений и ошибок конфигурации.
- Централизованное хранение позволяет командам работать параллельно над разными фичами.
- Поддержка различных форматов делает его универсальным инструментом для любых технологических стеков.
- Интеграция с системами мониторинга позволяет отслеживать Статус каждой выпущенной версии.