Deployment 如何部署到nexus(由secureci托管)?

Deployment 如何部署到nexus(由secureci托管)?,deployment,maven-2,nexus,Deployment,Maven 2,Nexus,就像我在运行的VmWare映像中推荐的那样,它是一个预配置的开发基础架构,包含maven、nexus、hudson和svn 现在我想在我的WindowsXP机器上配置maven,将其工件部署到nexus。但当我像这样配置pom.xml时(取自): 在settings.xml中,我对用户名和密码进行了如下配置: <servers> <server> <id>nexus</id> <username>tangens<

就像我在运行的VmWare映像中推荐的那样,它是一个预配置的开发基础架构,包含maven、nexus、hudson和svn

现在我想在我的WindowsXP机器上配置maven,将其工件部署到nexus。但当我像这样配置pom.xml时(取自):

settings.xml
中,我对用户名和密码进行了如下配置:

<servers>
  <server>
    <id>nexus</id>
    <username>tangens</username>
    <password>********</password>
  </server>
</servers>
  <distributionManagement>
    ...
    <repository>
      <id>releases</id>
      <name>Internal Releases</name>
      <url>http://localhost:8081/nexus/content/repositories/releases</url>
    </repository>
    ...
  </distributionManagement>

关系
唐根斯
********
问题:部署到nexus需要使用什么配置


我已经尝试了
https
而不是
scp
,但是使用这个maven遇到了缺少证书的问题

我尝试了
http
而不是
scp
,但是secureci安装了防火墙来阻止对端口80(http)的访问,导致超时

编辑:

我发现nexus将其工件存储在
/root/sonatype work/nexus/storage/snapshots/
上。但是我不喜欢在我的
settings.xml
中输入根帐户的凭据

编辑:

Q:您是否在Nexus下启用了托管存储库的部署

是的,默认情况下已启用

Q:Nexus是否正在监听端口80

端口80上运行着一个apache。
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:如果防火墙不允许HTTP,为什么不为来自“主机”IP的HTTP连接添加一个例外


因为我假设SecureCI配置良好,应该有一种不用调整安装的方法。但也许我在这里太天真了。

错误很明显:用户
tangens
没有在远程机器上创建
/nexus
的权限。实际上,您的
scp
url不正确,并且没有指向您提到的正确位置。您必须给用户
tangens
正确的权限,或者配置sshd以允许root连接,但这不是一个好主意

话虽如此,我不认为
scp
是Nexus的发展方向。如果使用
scp
进行部署,Nexus将不会收到部署通知,您的工件也将不可见。根据Nexus手册的章节,部署必须使用HTTP PUT完成。换句话说,您的
distributionManagement
部分应该如下所示:

<servers>
  <server>
    <id>nexus</id>
    <username>tangens</username>
    <password>********</password>
  </server>
</servers>
  <distributionManagement>
    ...
    <repository>
      <id>releases</id>
      <name>Internal Releases</name>
      <url>http://localhost:8081/nexus/content/repositories/releases</url>
    </repository>
    ...
  </distributionManagement>

...
释放
内部释放
http://localhost:8081/nexus/content/repositories/releases
...
我注意到您说过SecureCI使用配置为在端口80上断开连接的防火墙。但是,由于我自己没有使用SecureCI,我有几个(可能是愚蠢的)问题:

  • 您是否在Nexus下启用了托管存储库的部署
  • Nexus正在监听端口80吗
  • 如果防火墙不允许HTTP,为什么不为来自“主机”IP的HTTP连接添加一个例外
编辑:根据OP的回答,我认为使用HTTPS可能确实是使用SecureCI的“自然”方式。但是,在通过HTTPS上传之前,需要将SecureCI的CA证书(证书颁发者的证书)添加到JDK中。你可以跟着做这件事。但在进一步讨论之前,真正的问题是:

  • SecureCI是否提供CA证书(证书颁发者的证书)

如果他们没有,我不知道如何在不调整防火墙规则的情况下实现部署。

对不起。我刚刚遇到了这个问题

正如其他海报所提到的,有两种选择:向Maven提供证书或打开HTTP访问并打开端口80(默认情况下出于安全考虑关闭端口80)

有关启用HTTP访问的信息,请参见secureci中的/trac/secureci/wiki/HowTo/EnableHttp(在wiki上的HowTo文档下,如何启用HTTP访问?)

对于证书,公钥和私钥位于/etc/apache2/ssl/中


如果要替换默认证书,则用于安装您自己的证书的文档(可以是自签名或由认可的CA签名)位于SecureCI wiki中的/trac/SecureCI/wiki/HowTo/InstallSslCert(在wiki上的HowTo文档下,如何安装SSL证书?)。现有证书的位置也在此处注明。

我将您的问题整合到我的帖子中。我按照您的建议穿透了防火墙。现在我可以使用
http
进行部署。如果没有其他解决方案允许我在不调整安装的情况下进行部署,我将接受这个答案。谢谢,好的。同时,我补充了另一个建议(问题?)。但是知道这一点很好。+1为了避免scp,我认为http/https是正确的方法。http/https是用来使用http/https的。Scp有点工作,但这是一种黑客行为,它会使内部缓存和索引与磁盘不同步。如果这是绝对必要的,您可以安排刷新和重新索引,但我们不推荐这种模式。我们有一些工具可以使使用https自签名证书变得更容易。您可以在nexus用户列表上ping我们以获得更多帮助。