2012-10-24 17 views
22

Mam serwery chmur zlokalizowane w oddzielnych centrach danych na całym świecie. Każde centrum danych jest oddzielone od innych.Czy Nexus lub Artifactory mogą przechowywać proste artefakty tar.gz?

Poszukuję łatwego sposobu rozmieszczania artefaktów na poszczególne klastry serwerów (które mogą mieć uruchomione różne wersje oprogramowania, tj. Dev, test i klastry produkcyjne) w każdym z tych regionów z łatwością i spójnością. Wydaje mi się, że potrzebny jest serwer artefaktów, ponieważ mógłbym wykonać skrypt instalacyjny na serwerze w chmurze, który usuwa właściwy artefakt oprogramowania.

Teraz pracuję po stronie operacyjnej. Nie dbam o tworzenie buildów ani zarządzanie zależnościami oprogramowania. Po prostu chcę serwer artefaktów, w którym mogę przechowywać wszystkie różne wersje moich pakietów w celu uzyskania dostępu w późniejszym czasie. Kicker, jest to, że mam kilka różnych typów artefaktów do przechowywania.

  • Shell skrypty
  • skrypty
  • Python
  • Lalek przejawia
  • plików Debiana (często dostarczane w postaci pliku tar.gz wielu debians)

Czy Nexus lub Artifactory zarządzaj z nich rodzaje paczek, czy powinienem patrzeć w innym kierunku? Nie jestem przeciwny dodawaniu plików make do projektów skryptów powłoki, które po prostu generują pliki tar.gz. Po prostu nie chcę podążać ścieżką konfigurowania repozytorium artefaktów, gdy w końcu trochę skryptów, wget i serwer apache będzie działał dobrze.

Odpowiedz

22

Zarówno Artifactory i Nexus może obsługiwać dowolny typ pliku, ponieważ oba są "Binary repozytorium za managerów".

Mimo to Nexus może technicznie przechowywać dowolny plik, ale brakuje mu obsługi plików binarnych, które nie są zgodne z układem repozytorium Maven. Na przykład takie pliki nie zostaną zaindeksowane i nie można ich pobrać w wyszukiwaniach; Ponadto, jeśli artefakty inne niż Maven obciążają informacje o module na swojej ścieżce, to obecnie Artifactory jest jedynym repozytorium, które może z nich korzystać i pozwala na operacje oparte na artefaktach (np. Pobierz najnowszą wersję zapytania).

Chociaż oba te Narzędzia rozpoczęły się od rozwiązania problemu w świecie Maven, potrzeba inteligentnego zarządzania binarnego została rozpoznana w wielu innych dziedzinach, operations included.

Pliki binarne wymagają wyspecjalizowanego menedżera i chociaż udostępnienia sieciowe/serwery plików SCM/plików wydają się być realną opcją na początku; oni po prostu nie skalują.

Zobacz także my answer to a similar question dla niektórych korzyści menedżera z innych rozwiązań doraźnych.

4

Tak, można przesyłać pliki inne niż jar. Na przykład:

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 

Nowsze wersje Nexusa obsługują określone pliki, takie jak tar, swf i inne, potwierdzając, że zostały poprawnie utworzone. Może to jednak spowodować nieoczekiwane lub niepożądane zachowanie.

Czy to jest najlepszy sposób, aby przejść ... tylko można powiedzieć na podstawie przypadków użycia. Czynniki takie jak częstotliwość zmian artefaktów, opóźnienia w sieci i inne mogą spowodować lub złamać strategię.

bibl:

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

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

+0

dzięki za link. było pomocne! –

0

można (patrz inne odpowiedzi). Można również odnieść się do nich na przykład tak (chociaż przykładem byłoby miło):

Można odwołać się do/z nich korzystać jak ten 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>