2009-10-18 18 views
5

Zgodnie z zaleceniami w a previous SO-Answer używam obrazu VmWare z secureci jako wstępnie skonfigurowanej infrastruktury programistycznej zawierającej maven, nexus, hudson, svn.Jak wdrożyć na nexusie (hostowane przez secureci)?

Teraz chcę skonfigurować program maven na moim komputerze z systemem Windows XP, aby rozmieścić jego artefakty na nexusie. Ale kiedy skonfigurować mojego pom.xml tak (zaczerpnięte z Deploying Artifacts to Nexus):

<distributionManagement> 
    <!-- use the following if you're not using a snapshot version. --> 
    <repository> 
     <id>nexus</id> 
     <name>RepositoryProxy</name> 
     <url>scp://192.168.0.197/nexus/content/repositories/releases</url> 
    </repository> 
    <!-- use the following if you ARE using a snapshot version. --> 
    <snapshotRepository> 
     <id>nexus</id> 
     <name>RepositoryProxy</name> 
     <url>scp://192.168.0.197/nexus/content/repositories/snapshots</url> 
    </snapshotRepository> 
</distributionManagement> 

... mvn deploy wypisuje komunikat o błędzie:

Error deploying artifact: Exit code: 1 - 
    mkdir: cannot create directory `/nexus': Permission denied 

W settings.xml I skonfigurowany nazwę użytkownika i hasło tak:

<servers> 
    <server> 
    <id>nexus</id> 
    <username>tangens</username> 
    <password>********</password> 
    </server> 
</servers> 

Pytanie: Co konfiguracja muszę używać do wdrażania do NEX nas?


Próbowałem już https zamiast scp, ale z tego Maven wpadł problemów z brakujących certyfikatów.

Próbowałem http zamiast scp, ale secureci ma zainstalowany firewall blokujący dostęp do portu 80 (http), powodując przekroczenie limitu czasu.

EDIT:

Okazało się, że Nexus przechowuje swoje artefakty w /root/sonatype-work/nexus/storage/snapshots/. Ale nie podoba mi się pomysł wprowadzenia poświadczeń konta root w moim settings.xml.

EDIT:

Q: Czy włączone do wdrażania hosted repozytorium pod Nexus?

Tak, jest domyślnie włączona.

Czy Nexus nasłuchuje na porcie 80?

Jest apache działa na porcie 80. Server: Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6 mod_ssl/2.2.8 OpenSSL/0.9.8g mod_wsgi/1.3 Python/2.5.2

Q: Jeśli firewall nie pozwala HTTP, dlaczego nie można po prostu dodać wyjątek dla połączeń HTTP z " host "IP?

Ponieważ założyłem, że SecureCI jest dobrze skonfigurowany i powinien istnieć sposób, aby to zrobić bez ulepszania instalacji. Ale może jestem tu zbyt naiwny.

Odpowiedz

12

Błąd jest jasny: użytkownik tangens nie ma uprawnień do utworzenia /nexus na zdalnym komputerze.W rzeczywistości adres URL użytkownika scp jest niepoprawny i nie wskazuje właściwej lokalizacji, o której wspomniano. Musisz dać użytkownikowi tangens odpowiednie uprawnienie lub skonfigurować sshd tak, aby zezwalał rootowi na łączenie się, ale nie jest to dobry pomysł.

Mając to powiedziane, nie sądzę, że scp jest drogą do Nexusa. Jeśli wdrożysz przy użyciu scp, Nexus nie zostanie powiadomiony o wdrożeniu, a twoje artefakty nie będą widoczne. Zgodnie z Deploying Artifacts to Nexus oraz z rozdziałem 9.4.2. Update the POM: Deployment Configuration książki Nexus, wdrożenie musi zostać wykonane za pomocą HTTP PUT. Innymi słowy, odcinek distributionManagement powinien wyglądać mniej więcej tak:

<distributionManagement> 
    ... 
    <repository> 
     <id>releases</id> 
     <name>Internal Releases</name> 
     <url>http://localhost:8081/nexus/content/repositories/releases</url> 
    </repository> 
    ... 
    </distributionManagement> 

Zauważyłem, powiedział pan, że SecureCI używa zapory, który jest skonfigurowany do spadku połączenia na porcie 80. Jednakże, jak nie używam SecureCI myself Mam kilka (może głupich) pytań:

  • Czy włączyłeś wdrożenie hostowanego repozytorium w Nexusie?
  • Czy Nexus nasłuchuje na porcie 80?
  • Jeśli zapora sieciowa nie akceptuje protokołu HTTP, dlaczego po prostu nie dodasz wyjątku dla połączeń HTTP z adresu IP hosta?

EDIT: Zgodnie z odpowiedziami OP, myślę, że za pomocą protokołu HTTPS może być rzeczywiście „naturalny” sposób, aby przejść z SecureCI. Zanim jednak będziesz mógł przesyłać przez HTTPS, musisz dodać certyfikat CA SecureCI (certyfikat wystawcy certyfikatu) do swojego JDK. Aby to zrobić, możesz wykonać these instructions. Ale zanim przejdziemy dalej, prawdziwe pytanie brzmi:

  • Czy SecureCI dostarcza certyfikat CA (certyfikat wydawcy certyfikatu)?

Jeśli tego nie zrobią, nie wiem, jak umożliwić wdrożenie bez zmiany ustawień zapory sieciowej.

+0

Zintegrowalem twoje pytania w moim wpisie. – tangens

+0

Przebiłem zaporę ogniową zgodnie z sugestią. Teraz mogę zrobić wdrożenie z 'http'. Jeśli nie pojawi się żadne inne rozwiązanie, które umożliwi mi wdrożenie bez zmiany konfiguracji, przyjmuję tę odpowiedź. Dziękuję Ci. – tangens

+0

Ok. W międzyczasie dodałem kolejną sugestię (pytanie?). Ale dobrze wiedzieć. –

1

Przepraszamy. Właśnie natknąłem się na to pytanie.

Są dwie opcje, o których wspomniały inne plakaty: dostarcz certyfikat do Mavena lub włącz dostęp HTTP i otwórz port 80 (który jest domyślnie zamknięty dla bezpieczeństwa).

Aby włączyć dostęp HTTP, zobacz/trac/secureci/wiki/HowTo/EnableHttp w SecureCI (w dokumentacji HowTo na wiki, Jak mogę włączyć dostęp HTTP?).

Dla certyfikatu klucz publiczny i prywatny znajdują się w katalogu/etc/apache2/ssl /.

Jeśli chcesz zastąpić domyślny certyfikat, dokumenty do instalacji własne (które mogą być samopodpisane lub podpisane przez uznany urząd certyfikacji) znajdują się w wiki SecureCI w katalogu/trac/secureci/wiki/HowTo/InstallSslCert (w dokumencie HowTo na wiki, Jak zainstalować certyfikat SSL?). Tutaj również znajduje się lokalizacja istniejącego certyfikatu.