hostprofi.ru
Подобрать хостинг
Термин·буква А

Артефакт сборки

краткое определение

Артефакт сборки (build artifact) — результат процесса сборки: скомпилированный бинарный файл, JAR-архив, Docker-образ, npm-пакет, ZIP с дистрибутивом. Артефакты версионируются, хранятся в artifact registry и используются для деплоя. Обеспечивают воспроизводимость деплоя.

Build artifact — файл или набор файлов, являющийся результатом процесса CI/CD-сборки. Артефакт создаётся один раз на этапе build и используется в последующих этапах (test, staging, production). Это гарантирует: то, что деплоится в production, прошло все проверки.

Типы артефактов

  • Скомпилированный код — JAR/WAR (Java), .exe/.dll (C#), бинарник (Go, Rust).
  • Архив — ZIP/TAR с кодом и зависимостями для PHP/Python/Node.js.
  • Docker-образ — тегированный образ в Container Registry.
  • npm/pip-пакет — опубликованный пакет в реестре.
  • Helm chart — пакет для Kubernetes-деплоя.

Хранение артефактов

  • GitHub Actions — actions/upload-artifact, хранение до 90 дней.
  • GitLab CI — artifacts: keyword, хранение и передача между jobs.
  • JFrog Artifactory — enterprise artifact repository.
  • Nexus Repository — open-source artifact manager.
  • Docker Hub / GitHub Container Registry — для Docker-образов.

GitHub Actions: работа с артефактами

jobs:
  build:
    steps:
      - run: npm run build
      - uses: actions/upload-artifact@v4
        with:
          name: dist
          path: ./dist/
  
  deploy:
    needs: build
    steps:
      - uses: actions/download-artifact@v4
        with:
          name: dist
          path: ./dist/
      - run: rsync -avz ./dist/ user@server:/var/www/

История

Концепция build artifacts появилась с первыми системами автоматизации сборки: make (1976), ANT (2000), Maven (2004). JFrog Artifactory — 2008. Docker Hub как artifact registry — 2013. GitHub Packages (включая Container Registry) — 2019.

Связь с хостингом

При деплое на VDS артефакт (например, Docker-образ из GitHub Actions) скачивается с Container Registry и запускается на сервере. Это исключает пересборку на production. Хранение артефактов в реестре позволяет быстро откатиться: просто запустить предыдущий тег образа.

История управления артефактами сборки

Концепция артефактов сборки появилась с промышленными системами CI: CruiseControl (2001), Jenkins (2011). Maven Repository (Nexus, 2005; Artifactory, 2006) — первые специализированные хранилища артефактов Java. npm Registry (2010) — первый публичный реестр для Node.js-пакетов. Docker Hub (2013) — реестр Docker-образов. GitHub Packages (2019) объединил несколько типов реестров. Артефакт — неизменяемый результат сборки, привязанный к конкретному коммиту и версии.

Типы артефактов сборки

ТипФорматРеестр
JAR/WAR.jar, .warNexus, Artifactory
npm-пакет.tgznpm Registry, Verdaccio
Docker-образOCI/DockerDocker Hub, GHCR, Harbor
Python-пакет.whl, .tar.gzPyPI, Artifactory
deb/rpm-пакет.deb, .rpmAptly, Pulp

Хранение артефактов на хостинге

Для VPS-проектов артефакты хранятся в GitHub Packages, GitLab Container Registry или S3-бакете. Версионирование артефактов — SemVer (MAJOR.MINOR.PATCH) или git-хеш. Иммутабельность: раз загруженный артефакт нельзя изменить без смены версии — гарантия воспроизводимости деплоя. Retention policies очищают старые артефакты автоматически.

Версионирование артефактов: Docker-образы тегируются по git-хешу (myapp:abc1234) для воспроизводимости. Nginx может раздавать артефакты (статику) напрямую из S3-бакета через proxy_pass. Cleanup старых артефактов автоматизируется через GitHub Actions (actions/delete-package-versions).

Другие термины