AT-在发布时登录主机名:执行

Posted

技术标签:

【中文标题】AT-在发布时登录主机名:执行【英文标题】:AT-Sign in hostname on release:perform 【发布时间】:2014-06-05 14:32:50 【问题描述】:

我尝试使用 Maven 在 GitHub 中发布一个项目。

<scm>
    <connection>scm:git:git://github.com/jenkinsci/jabber-server-plugin.git</connection>
    <developerConnection>scm:git:git@github.com/jenkinsci/jabber-server-plugin.git</developerConnection>
    <url>http://github.com/jenkinsci/jabber-server-plugin</url>
</scm>

不幸的是,maven 无法 git-clone 到服务器 @github.com

全文:

fatal: Unable to look up @github.com (port 9418) 
  (Beim Datenbankaufruf ist ein nicht behebbarer Fehler aufgetreten. )

我需要做什么来强制使用主机名github.com

【问题讨论】:

【参考方案1】:

首先,如果需要指定ssh用户git@

<developerConnection>scm:git:git@github.com:jenkinsci/jabber-server-plugin.git</developerConnection>

即:':'而不是github.com之后的'/',如图:

"Maven Tips", “Using maven-release-plugin with GitHub “You can't push to git://github.com/…”” “example/pom.xml

如果仍然失败,您有一些可能的解决方法:

如果您想为 developerConnection 部分保留 ssh url,请尝试查看 url examples 是否更好:

scm:git:ssh://server_name[:port]/path_to_repository

即:

<developerConnection>scm:git:ssh://git@github.com/jenkinsci/jabber-server-plugin.git</developerConnection>

(因此明确指定ssh:// 协议,如“How to Use Maven Release Plugin with GitHub Releases”中使用的那样)


作为最后的手段,您可以尝试另一种不必使用非默认端口或 ssh 的协议,例如 Maven SCM Git 中列出的 https 协议:

scm:git:https://server_name[:port]/path_to_repository

那会给出:

<scm>
    <connection>scm:git:https://github.com/jenkinsci/jabber-server-plugin.git</connection>
    <developerConnection>scm:git:https://yourLogin@github.com/jenkinsci/jabber-server-plugin.git</developerConnection>
    <url>http://github.com/jenkinsci/jabber-server-plugin</url>
</scm>

【讨论】:

顺便说一句:对于: 而不是/ 我不得不ssh-add .ssh/id_rsa。之后release:perform 遇到了 NPE。 @PeterRader 首先尝试使用没有密码的 ssh 密钥(然后不需要 ssh-add)进行测试。 我试过这个并遇到了***.com/questions/3243755/…。无论如何,NPE 实际上是InstallMojo.execute(InstallMojo.java:116) 引起的问题。我现在调查代码... @PeterRader 我不记得我也回答过这个问题! @PeterRader 我同意,我只是在检查。无论如何,我仍然会尝试使用更简单的 ssh 密钥,只是为了排除这种情况。【参考方案2】:

使用 Windows 是不可能的。我使用 virtualbox 安装了 debian,这就是故事:

    java -version(给我 openjdk,根据我知道的经验:我需要一个 oracle/sun 的 jdk) (从 oracle 下载 java 并安装,export JAVA_HOME...-stuff 也可以) java -version(现在给我 oracle/sun jdk,很好) 苏 apt-get 安装 maven apt-get 安装 git apt-get install jenkins 退出 git 克隆https://github.com/jenkinsci/jabber-server-plugin cd jabber-server-plugin 苏 vi /etc/maven/settings.xml(添加镜像...) 退出 mvn release:prepare release:perform(无法写入错误 pid-file) 苏 /etc/init.d/jenkins 停止 退出 mvn 发布:准备发布:执行(错误:github-user-unknown) ssh-add github-private-key(输入密码) mvn 发布:准备发布:执行(错误:jenkins-ci.org 401) mvn release:prepare release:perform -Dpassword -Dusername(错误:github 使用 jenkins-ci.org 的密码而不是 keystore,该死) 苏 vi /etc/maven/settings.xml(将密码和用户名从 -Dparam 移动到 maven 的部分) 退出 mvn release:prepare release:perform(错误:401,我阅读了 doc,我需要粘贴 encryptet-password(slat 或更多)) https://repo.jenkins-ci.org/webapp(登录,打开我的帐户,解锁以编辑个人资料,复制加密密码)。 vi /etc/maven/settings.xml(覆盖剪贴板中的密码) mvn 发布:准备发布:执行

建立成功

(心理阶段)

【讨论】:

很好的反馈,比我的回答更完整。 +1 @VonC 欢迎您。如果没有您使用证书的压力,我将无法解决此问题! 重启后简单的ssh-add github-private-keymvn release:prepare release:perform 就足够了。【参考方案3】:

以下内容应该适用于您的项目

<scm>
    <connection>scm:git:git://github.com/jenkinsci/jabber-server-plugin.git</connection>
    <developerConnection>scm:git:git@github.com:jenkinsci/jabber-server-plugin.git</developerConnection>
    <url>http://github.com/jenkinsci/jabber-server-plugin</url>
</scm>

【讨论】:

这和VonC说的一模一样。 多或少。他建议为 使用不同的协议,这(从我的角度来看)是没有必要的。我把所有东西都捆绑在一起。因此,其他人将更容易获得支持的解决方案。但我同意:在我的回答中,此页面上尚未提及任何内容。 ;-)

以上是关于AT-在发布时登录主机名:执行的主要内容,如果未能解决你的问题,请参考以下文章

13_linux修改主机名

怎么用BAT或者powershell获取主机名和登录用户保存到TXT文件中,或者用其他啥方式?

查看局域网内所有的主机名MAC地址和IP地址

NTLM 身份验证 - 在 PHP 中获取 Windows 登录名、域和主机

centos7重启及修改主机名

主机名不能为空并出现错误:任务“:app:uploadCrashlyticsMappingFileRelease”执行失败