Может ли Nexus или Artifactory хранить простые артефакты tar.gz?
У меня есть облачные серверы, расположенные в отдельных центрах обработки данных по всему миру. Каждый центр обработки данных отделен от других.
Я ищу простой способ развернуть артефакты на отдельные кластеры серверов (которые могут работать с различными версиями программного обеспечения, например, dev, test и производственного кластера) в каждом из этих регионов с легкостью и согласованностью. Мне кажется, что сервер артефактов - это то, что мне нужно, потому что я могу выполнить установку script на облачном сервере, которая вытаскивает правильный артефакт программного обеспечения.
Теперь я работаю на стороне операций. Я не забочусь о создании сборок или управлении зависимостями сборки программного обеспечения. Мне просто нужен сервер артефактов, где я могу хранить все различные версии моих пакетов для доступа позднее. Кикер, что у меня есть несколько различных типов артефактов для хранения.
- Сценарии оболочки
- Скрипты Python
- Кукольные манифесты
- Файлы Debian (часто поставляются в виде файла tar.gz из нескольких debian)
Может ли Nexus или Artifactory управлять всеми этими типами пакетов, или я должен смотреть в другом направлении? Я не против добавления файлов make в мои оболочки script проектов, которые просто генерируют файлы tar.gz. Я просто не хочу идти по пути создания репозитория артефактов, когда, в конечном счете, небольшой скрипт, wget и сервер Apache будут работать нормально.
Ответы
Ответ 1
Оба Artifactory и Nexus могут обрабатывать файлы любого типа, так как оба они "Менеджеры двоичных репозиториев" .
Несмотря на это, Nexus может технически хранить любой файл, но не имеет поддержки двоичных файлов, которые не соответствуют макету хранилища Maven. Например, такие файлы не будут индексироваться и не могут быть найдены в результатах поиска; Кроме того, если артефакты, отличные от Maven, обременят информацию о модуле по их пути, то в настоящее время Artifactory является единственным репозиторием, который может использовать это и разрешать операции на основе артефактов (например, загружать последнюю версию)
Несмотря на то, что оба этих средства начались, решая проблему в Maven мире, потребность в интеллектуальном двоичном управлении была признанный во многих других областях, операции включены.
Для бинарников нужен специализированный менеджер, и хотя сетевые ресурсы/серверы SCM/файловые серверы кажутся жизнеспособным вариантом в начале; они просто не масштабируются.
Также см. мой ответ на аналогичный вопрос для некоторых преимуществ менеджера по сравнению с другими ad-hoc решениями.
Ответ 2
Да, вы можете загружать файлы, не содержащие jar. Например:
mvn deploy:deploy-file -DgroupId=org.group.id -DartifactId=artifact-id -Dversion=0.0.0.1-SNAPSHOT -Dpackaging=tar.gz -DrepositoryId=repository-id -Durl=http://url -Dfile=localfile-0.0.0.1-SNAPSHOT.tar.gz
Новые версии Nexus будут обрабатывать определенные файлы, такие как tar, swf и другие, путем проверки правильности их формирования. Это может привести к неожиданному или нежелательному поведению.
Это лучший способ пойти... только вы можете сказать, основываясь на ваших случаях использования. Факторы, как часто изменения артефактов, сетевая латентность и другие могут сделать или нарушить стратегию.
refs:
fooobar.com/questions/260358/...
http://betterlogic.com/roger/2012/04/mavennexus-upload-tgztar-gz-file/
Ответ 3
Если вы хотите сделать это с помощью curl, попробуйте этот подход: https://support.sonatype.com/entries/22189106-How-can-I-programatically-upload-an-artifact-into-Nexus-
Ответ 4
Вы можете (см. другие ответы). Вы также можете ссылаться на них, например, так (хотя пример будет приятным):
Вы можете ссылаться на/использовать их как этот плагин:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.apache</groupId>
<artifactId>activemq-distro</artifactId>
<version>5.7.0</version>
<type>gz</type>
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}</outputDirectory>
</artifactItem>
</artifactItems>
<!-- other configurations here -->
</configuration>
</execution>
</executions>
</plugin>