2009-10-18 5 views
5

Como se recomienda en a previous SO-Answer Estoy ejecutando una imagen de VmWare de secureci como una infraestructura de desarrollo preconfigurada que contiene maven, nexus, hudson, svn.¿Cómo puedo implementar en nexus (alojado por secureci)?

Ahora quiero configurar Maven en mi máquina con Windows XP para implementar sus artefactos en el nexo. Pero cuando puedo configurar mi pom.xml como esto (tomado de 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 imprime el mensaje de error:

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

En settings.xml he configurado nombre de usuario y la contraseña de la siguiente manera:

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

pregunta: ¿Qué configuración qué tengo que usar para el despliegue de nex ¿nos?


ya he intentado https en lugar de scp, pero con este experto corrieron a tener problemas con los certificados que faltan.

Probé http en lugar de scp, pero secureci tiene un firewall instalado para bloquear el acceso al puerto 80 (http), lo que causa un tiempo de espera.

EDIT:

me encontré con que Nexus almacena sus artefactos en /root/sonatype-work/nexus/storage/snapshots/. Pero no me gusta la idea de ingresar las credenciales de la cuenta raíz en mi settings.xml.

EDIT:

Q: ¿Usted permitió la implementación de un repositorio alojado bajo Nexus?

Sí, está habilitado de forma predeterminada.

Q: ¿Escucha Nexus en el puerto 80?

hay un Apache ejecuta en el puerto 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: Si un servidor de seguridad no permite HTTP, ¿por qué no acaba de añadir una excepción para las conexiones HTTP desde el " host "IP"?

Porque asumí que SecureCI está bien configurado y debería haber una forma de hacerlo sin modificar la instalación. Pero tal vez soy demasiado ingenuo aquí.

Respuesta

12

El error es claro: el usuario tangens no tiene permiso para crear /nexus en la máquina remota.En realidad, su url scp no es correcto y no está apuntando a la ubicación correcta como lo mencionó. Tendría que darle al usuario tangens el permiso correcto o configurar sshd para permitir que root se conecte, pero esta no es una buena idea.

Habiendo dicho esto, no creo que scp es el camino a seguir con Nexus. Si despliega usando scp, Nexus no será notificado de la implementación y sus artefactos no serán visibles. De acuerdo con Deploying Artifacts to Nexus y con el capítulo 9.4.2. Update the POM: Deployment Configuration del libro Nexus, la implementación debe realizarse con HTTP PUT. En otras palabras, su sección distributionManagement debe parecerse a algo como esto:

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

Noté que ha dicho que SecureCI utiliza un servidor de seguridad que está configurado para colocar las conexiones en el puerto 80. Sin embargo, como no estoy usando el mismo SecureCI , Tengo algunas preguntas (quizás estúpidas):

  • ¿Habilita la implementación para un repositorio alojado en Nexus?
  • ¿Escucha Nexus en el puerto 80?
  • Si un firewall no permite HTTP, ¿por qué no agrega una excepción para las conexiones HTTP desde la IP del "host"?

EDIT: De acuerdo con las respuestas OP, creo que el uso de HTTPS podría ser de hecho la forma "natural" para ir con SecureCI. Sin embargo, antes de poder cargar a través de HTTPS, deberá agregar el certificado CA de SecureCI (el certificado del emisor de su certificado) en su JDK. Puede seguir these instructions para hacer esto. Pero antes de ir más lejos, la verdadera pregunta es:

  • ¿SecureC proporciona el certificado CA (el certificado del emisor de su certificado)?

Si no lo hacen, no sé cómo hacer posible la implementación sin modificar las reglas del firewall.

+0

He integrado sus preguntas en mi publicación. – tangens

+0

He perforado el firewall como sugirió. Ahora puedo hacer una implementación con 'http'. Si no aparece ninguna otra solución que me permita implementar sin modificar la instalación, aceptaré esta respuesta. Gracias. – tangens

+0

Ok. Agregué otra sugerencia (¿pregunta?) Mientras tanto. Pero es bueno saber –

1

Lo siento. Solo encontré la pregunta.

hay dos opciones, como han mencionado otros carteles: suministrar el certificado a Maven o activar el acceso HTTP y el puerto 80 abierto (que está cerrada por defecto para la seguridad).

Para habilitar el acceso a HTTP, consulte/trac/secureci/wiki/HowTo/EnableHttp en SecureCI (en la sección de procedimientos de la wiki, ¿cómo habilito el acceso HTTP?).

para el certificado, la clave pública y privada se encuentran en/etc/apache2/ssl /.

Si desea reemplazar el certificado predeterminado, los documentos para instalar el suyo propio (que pueden ser autofirmados o firmados por una CA reconocida) se encuentran en la wiki de SecureCI en/trac/secureci/wiki/HowTo/InstallSslCert (en HowTo Doc en la wiki, ¿cómo instalo un certificado SSL?). La ubicación del certificado existente se anota allí también.

Cuestiones relacionadas