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-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-key
和mvn 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-在发布时登录主机名:执行的主要内容,如果未能解决你的问题,请参考以下文章
怎么用BAT或者powershell获取主机名和登录用户保存到TXT文件中,或者用其他啥方式?
NTLM 身份验证 - 在 PHP 中获取 Windows 登录名、域和主机
主机名不能为空并出现错误:任务“:app:uploadCrashlyticsMappingFileRelease”执行失败