44 lines
6.4 KiB
Markdown
44 lines
6.4 KiB
Markdown
|
---
|
|||
|
aliases:
|
|||
|
- SNAPSHOT-версии
|
|||
|
tags:
|
|||
|
- maturity/🌱
|
|||
|
date: 2024-10-02
|
|||
|
zero-link:
|
|||
|
parents:
|
|||
|
linked:
|
|||
|
---
|
|||
|
**SNAPSHOT-версии** — это специальные версии артефактов, которые используются на этапе разработки. Они представляют собой временные или нестабильные сборки, часто изменяющиеся и обновляющиеся.
|
|||
|
|
|||
|
Основные особенности SNAPSHOT-версий:
|
|||
|
- **Временный характер**: SNAPSHOT добавляется к номеру версии артефакта (например, 1.0.0-SNAPSHOT), чтобы указать, что это не финальная версия. Это означает, что код находится в активной разработке и может изменяться до выпуска стабильной версии.
|
|||
|
- **Частые обновления**: Версии с суффиксом SNAPSHOT могут изменяться с каждой новой сборкой, даже если формально версия остаётся той же. Например, артефакт с версией 1.0.0-SNAPSHOT будет пересобираться с новыми изменениями, пока не выйдет финальная версия 1.0.0.
|
|||
|
- **Автоматическое обновление**: В [[../../../../knowledge/dev/Система сборки|системах сборки]] SNAPSHOT-версии автоматически проверяются на наличие обновлений при каждом запуске сборочного процесса. Это упрощает интеграцию с другими компонентами и сервисами, которые тоже находятся в разработке.
|
|||
|
- **Релизная версия**: Когда функциональность стабилизирована и протестирована, артефакт становится релизной версией, и суффикс SNAPSHOT убирается (например, 1.0.0 вместо 1.0.0-SNAPSHOT).
|
|||
|
|
|||
|
Несмотря на полезность SNAPSHOT-версий в управлении зависимостями и непрерывной интеграции, они имеют несколько недостатков и потенциальных проблем, которые важно учитывать:
|
|||
|
- **Неожиданные изменения в SNAPSHOT могут сломать зависимость**. Поскольку SNAPSHOT-версии могут обновляться без изменения номера версии, приложения, которые их используют, могут внезапно перестать собираться. Например, если один разработчик обновил артефакт, другие пользователи этой зависимости могут столкнуться с неожиданными изменениями или ошибками.
|
|||
|
- **Проблемы с кэшированием**. Системы сборки кэшируют SNAPSHOT-версии на определённый срок. Если новая версия SNAPSHOT не обновляется в репозитории, но в локальном кэше всё ещё хранится устаревшая версия, это может привести к сборке с ошибочной версией артефакта. Разработчики могут случайно использовать старую версию SNAPSHOT, не осознавая этого, что создаёт трудноуловимые ошибки.
|
|||
|
|
|||
|
Ошибки при работе со SNAPSHOT версиями:
|
|||
|
- **Использование SNAPSHOT в продакшене**. ==Одна из ключевых ошибок — это применение SNAPSHOT-версий в продакшн-системах.== Это может привести к нестабильной работе приложения, так как такие версии не гарантируют стабильности и могут содержать временные или недоработанные изменения.
|
|||
|
- **Игнорирование политики очистки репозиториев**. Из-за частых обновлений SNAPSHOT-версии могут накапливаться в репозиториях, что приводит к захламлению и затрудняет управление артефактами. Это может вызвать проблемы с дисковым пространством или усложнить поиск нужных версий.
|
|||
|
|
|||
|
**Как минимизировать риски при использовании SNAPSHOT-версий**:
|
|||
|
- **Используйте SNAPSHOT только на этапах разработки**. Это основное правило. Как только функциональность готова для релиза, переходите на стабильные версии.
|
|||
|
- **Настройте правильное управление кэшированием**. Убедитесь, что локальный кэш обновляется корректно, чтобы избежать использования устаревших версий SNAPSHOT.
|
|||
|
- **Регулярно очищайте репозитории от старых SNAPSHOT-версий**. Настройте автоматическую очистку репозиториев, чтобы предотвратить накопление лишних артефактов и поддерживать порядок.
|
|||
|
- [[../devops/Очистка Nexus Sonatype|Очистка Nexus Sonatype]]
|
|||
|
***
|
|||
|
## Мета информация
|
|||
|
**Область**:: [[../../meta/zero/00 Разработка|00 Разработка]]
|
|||
|
**Родитель**:: [[Версионирование ПО|Версионирование ПО]]
|
|||
|
**Источник**::
|
|||
|
**Создана**:: [[2024-10-02]]
|
|||
|
**Автор**::
|
|||
|
### Дополнительные материалы
|
|||
|
-
|
|||
|
|
|||
|
### Дочерние заметки
|
|||
|
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|