web-dev-qa-db-fra.com

Nexus ou Artifactory peuvent-ils stocker de simples artefacts tar.gz?

J'ai des serveurs en nuage situés dans des centres de données distincts à travers le monde. Chaque centre de données est séparé des autres.

Je recherche un moyen simple de déployer des artefacts sur des grappes de serveurs individuelles (pouvant exécuter différentes versions de logiciels, à savoir une grappe de développement, de test et de production) dans chacune de ces régions de manière simple et cohérente. Il me semble qu'un serveur d'artefacts est ce dont j'ai besoin, car je peux exécuter un script d'installation sur le serveur de cloud, qui extrait l'artefact logiciel approprié.

Maintenant, je travaille du côté des opérations. Je me fiche de faire des builds, ou de gérer des dépendances de builds de logiciels. Je veux simplement un serveur d'artefacts sur lequel je peux stocker toutes les différentes versions de mes paquets pour y avoir accès ultérieurement. Le kicker, c'est que j'ai plusieurs types d'artefacts à stocker.

  • Scripts shell
  • Scripts python
  • Manifestes de marionnettes
  • Fichiers Debian (souvent livrés sous la forme d'un fichier tar.gz contenant plusieurs debian)

Est-ce que Nexus ou Artifactory peuvent gérer tous ces types de paquets, ou devrais-je regarder dans une direction différente? Je ne m'oppose pas à l'ajout de fichiers make à mes projets de script Shell générant simplement des fichiers tar.gz. Je ne veux tout simplement pas m'engager dans la configuration d'un référentiel d'artefacts, car au final, un peu de script, wget et un serveur Apache fonctionneraient parfaitement.

25
GregB

Artifactory et Nexus peuvent gérer tous les types de fichiers, car ils sont tous deux "Binary Repository Managers".

Bien que Nexus puisse techniquement stocker n'importe quel fichier, il ne prend pas en charge les fichiers binaires qui ne respectent pas la structure du référentiel Maven. Par exemple, ces fichiers ne seront pas indexés et ne pourront pas être récupérés lors de recherches; De plus, si des artefacts non-Maven encombrent les informations de module dans leur chemin, Artifactory est actuellement le seul référentiel qui peut l'utiliser et permettre des opérations basées sur la version sur des artefacts (par exemple, télécharger la dernière requête de version).

Bien que ces deux outils aient commencé par résoudre un problème du monde Maven , la nécessité d’une gestion intelligente des binaires a été reconnue dans de nombreux autres domaines, opérations incluses .

Les binaires ont besoin d’un gestionnaire spécialisé et bien que parts de réseau/SCM/serveurs de fichiers semblent être une option viable au début; ils ne font que ne pas mettre à l'échelle.

Voir également ma réponse à une question similaire pour quelques-uns des avantages d'un gestionnaire par rapport aux autres solutions ad hoc.

25
noamt

Oui, vous pouvez télécharger des fichiers non-jar. Par exemple:

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

Les versions les plus récentes de Nexus gèrent certains fichiers tels que tar, swf et autres en validant qu'ils sont correctement formés. Cela peut toutefois provoquer un comportement inattendu ou indésirable.

Est-ce la meilleure façon de faire ... vous seul pouvez le dire en fonction de vos cas d'utilisation. Des facteurs tels que la fréquence à laquelle les artefacts changent, la latence du réseau et d’autres peuvent faire ou défaire une stratégie.

réfs: 

https://stackoverflow.com/a/33311645/32453

http://betterlogic.com/roger/2012/04/mavennexus-upload-tgztar-gz-file/

5
cmonkey

Vous pouvez (voir les autres réponses). Vous pouvez également vous y référer par exemple comme ceci (bien qu'un exemple serait Nice):

Vous pouvez vous référer à/les utiliser comme ce plugin:

  <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>
0
rogerdpack
0
Bogdan