我正在Windows上构建Jenkins作业以自动执行发布过程.因此我使用的是Maven发布插件.
当我在工作中执行Perform Maven Release时,它会要求我提供SCM登录,SCM注释前缀和SCM标记.但是,当执行git push以使用以下日志提交更改时,作业失败.
[INFO] Checking in modified POMs... [INFO] Executing: cmd.exe /X /C "git add -- pom.xml" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git status" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git commit --verbose -F C:\windows\TEMP\maven-scm-1948138390.commit pom.xml" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git symbolic-ref HEAD" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git push git@github.com:elizabetht/StudentEnrollmentWithREST.git master:master" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2:03.980s [INFO] Finished at: Mon Feb 03 14:29:30 CST 2014 [INFO] Final Memory: 9M/21M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release- plugin:2.2.2:prepare (default-cli) on project StudentEnrollmentWithREST: Unable to commit files [ERROR] Provider message: [ERROR] The git-push command failed. [ERROR] Command output: [JENKINS] Archiving C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts\pom.xml to com.github.elizabetht/StudentEnrollmentWithREST/1.3-SNAPSHOT/StudentEnrollmentWithREST-1.3-SNAPSHOT.pom [ERROR] Permission denied (publickey). [ERROR] fatal: Could not read from remote repository. [ERROR] [ERROR] Please make sure you have the correct access rights [ERROR] and the repository exists. [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException channel stopped Finished: FAILURE
我相信这个错误与为Jenkins作业运行ssh代理有关.我按照stackoverflow问题Maven中给出的解决方案- 将代码错误释放到GitHub(Hangs After Push)并且git push在终端中正常工作.
pom.xml中的SCM参数设置如下
scm:git:git@github.com:elizabetht/StudentEnrollmentWithREST.git scm:git:git@github.com:elizabetht/StudentEnrollmentWithREST.git http://github.com/elizabetht/StudentEnrollmentWithREST
mvn scm:validate的输出如下
$ mvn scm:validate [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building StudentEnrollmentWithREST 1.3-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] >>> maven-scm-plugin:1.9:validate (default-cli) @ StudentEnrollmentWithREST >>> [INFO] [INFO] --- maven-enforcer-plugin:1.2:enforce (enforce-maven) @ StudentEnrollmentWithREST --- [INFO] [INFO] <<< maven-scm-plugin:1.9:validate (default-cli) @ StudentEnrollmentWithREST <<< [INFO] [INFO] --- maven-scm-plugin:1.9:validate (default-cli) @ StudentEnrollmentWithREST --- [INFO] connectionUrl scm connection string is valid. [INFO] project.scm.connection scm connection string is valid. [INFO] project.scm.developerConnection scm connection string is valid. [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.325s [INFO] Finished at: Tue Feb 04 18:06:04 CST 2014 [INFO] Final Memory: 14M/309M [INFO] ------------------------------------------------------------------------
添加'ssh -vT git@github.com'的输出
C:\Users\Sara>ssh -vT git@github.com OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007 debug1: Connecting to github.com [192.30.252.131] port 22. debug1: Connection established. debug1: identity file /c/Users/Sara/.ssh/identity type -1 debug1: identity file /c/Users/Sara/.ssh/id_rsa type 1 debug1: identity file /c/Users/Sara/.ssh/id_dsa type -1 debug1: Remote protocol version 2.0, remote software version Ope n-5ubuntu1+github5 debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1+github5 pat OpenSSH debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_4.6 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-cbc hmac-md5 none debug1: kex: client->server aes128-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Host 'github.com' is known and matches the RSA host key. debug1: Found key in /c/Users/Sara/.ssh/known_hosts:1 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Trying private key: /c/Users/Sara/.ssh/identity debug1: Offering public key: /c/Users/Sara/.ssh/id_rsa debug1: Server accepts key: pkalg ssh-rsa blen 277 debug1: read PEM private key done: type RSA debug1: Authentication succeeded (publickey). debug1: channel 0: new [client-session] debug1: Entering interactive session. debug1: Remote: Forced command. debug1: Remote: Port forwarding disabled. debug1: Remote: X11 forwarding disabled. debug1: Remote: Agent forwarding disabled. debug1: Remote: Pty allocation disabled. debug1: Remote: Forced command. debug1: Remote: Port forwarding disabled. debug1: Remote: X11 forwarding disabled. debug1: Remote: Agent forwarding disabled. debug1: Remote: Pty allocation disabled. debug1: client_input_channel_req: channel 0 rtype exit-status re Hi elizabetht! You've successfully authenticated, but GitHub doe ell access. debug1: channel 0: free: client-session, nchannels 1 debug1: Transferred: stdin 0, stdout 0, stderr 0 bytes in 0.1 se debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 0.0 debug1: Exit status 1
任何人都可以帮助指出如何在Windows上作为Jenkins工作运行吗?
我按照@Saravana Kumar Periyasamy发现的解决方法,在链接https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin的主题"Jenkins和Github之间的可能问题"中找到了解决方法
迫使Jenkins以配置了SSH密钥的用户身份运行,上传了生成的没有密码短语和中提琴的SSH密钥,我使用Jenkins成功完成了Maven Release(116次尝试用这个Jenkins工作确定正确的配置!!)
这是控制台的输出
[INFO] Checking in modified POMs... [INFO] Executing: cmd.exe /X /C "git add -- pom.xml" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git status" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git commit --verbose -F C:\Users\Sara\AppData\Local\Temp\maven-scm-170370981.commit pom.xml" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git symbolic-ref HEAD" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git push git@github.com:elizabetht/StudentEnrollmentWithREST.git master:master" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Tagging release with the label StudentEnrollmentWithREST-1.3... [INFO] Executing: cmd.exe /X /C "git tag -F C:\Users\Sara\AppData\Local\Temp\maven-scm-1647501295.commit StudentEnrollmentWithREST-1.3" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git push git@github.com:elizabetht/StudentEnrollmentWithREST.git StudentEnrollmentWithREST-1.3" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git ls-files" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Transforming 'StudentEnrollmentWithREST'... [INFO] Not removing release POMs [INFO] Checking in modified POMs... [INFO] Executing: cmd.exe /X /C "git add -- pom.xml" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git status" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git commit --verbose -F C:\Users\Sara\AppData\Local\Temp\maven-scm-890096458.commit pom.xml" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git symbolic-ref HEAD" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Executing: cmd.exe /X /C "git push git@github.com:elizabetht/StudentEnrollmentWithREST.git master:master" [INFO] Working directory: C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts [INFO] Release preparation complete.
然后,作业继续将我的工件上传到我的发布存储库.
pom.xml中的元素如下(这有效)
<scm> <connection>scm:git:git@github.com:user/repo-name.git</connection> <developerConnection>scm:git:git@github.com:user/repo-name.git</developerConnection> <url>git@github.com:user/repo-name.git</url> <tag>HEAD</tag> </scm>
在我的Jenkins作业配置中,我使用以下格式指定了存储库URL
git@github.com:user/repo-name.git
而不是使用https://github.com/user/reponame.git
我通过Jenkins获取maven版本的整个步骤可以在http://elizabetht.github.io/blog/2014/02/05/jenkins-release-upload/下找到.