jenkins 安裝 SVN Publisher 後向 svn 提交代碼報錯: E170001: Authentication required for...

問題描述

    安裝並啓動 jenkins 後,添加了 SVN Publisher 插件,然後在構建任務的“構建後操作”操作中添加了“Publish to Subversion repository”相關的配置,如圖所示:

但是每次構建完成之後並沒有將對應的 jar 包成功提交到 svn 倉庫中,在 jenkins 構建任務的“Console Output”頁面中也並沒有提示相關的錯誤信息。

系統環境

操作系統:CentOS 6.5

JDK: 1.6.0_45

Jenkins:1.602

問題分析

    因爲構建任務的“Console Output”頁面沒有顯示任何錯誤信息,所以就查看 jenkins 的日誌文件(/var/log/jenkins/jenkins.log)了。在日誌文件的末尾處看到了相關的錯誤信息:

Mar 20, 2015 6:28:39 PM com.mtvi.plateng.subversion.SVNForceImport forceImport
INFO: null Name
SVNForceImport Error: svn: E170001: Authentication required for '<http://svn-server:80> CentOS Code Slave SVN1.7.16 Server'
Mar 20, 2015 6:28:40 PM com.mtvi.plateng.subversion.SVNForceImport forceImport
SEVERE: *SVNForceImport Error: svn: E170001: Authentication required for '<http://svn-server:80> CentOS Code Slave SVN1.7.16 Server'
從上述錯誤信息可得知是因爲 SVN 的安全認證失敗了,從而導致文件沒有被正確提交到 SVN。於是嘗試通過“系統管理”-->“系統設置”,修改 SVN Publisher 插件的全局設置,將 SVN 的用戶名和密碼給保存上,如下圖所示:

然後,重新執行對應的構建任務,發現問題依然存在,而且日誌文件中的錯誤信息也還一模一樣,所以只能繼續尋找其他解決方案。最後終於在 stackoverflow 上找到了對應的解決方案,具體操作如下。

解決方案

1. 修改用戶 jenkins 的默認 shell,將 /etc/passwd 文件中以 jenkins 開頭的那一行末尾處的 /bin/false 改爲 /bin/bash,修改後的結果爲:

2. 安裝 subversion(如果沒有安裝過的話): # yum install subversion

3. 將 Linux 終端換爲 jenkins 用戶: # su - jenkins

4. 刪除 ~/.subversion 目錄(如果存在的話): $ rm -fr ~/.subversion

5. 執行一下 svn  的 checkout 操作,目的是保存 svn 的用戶名和密碼: $ svn checkout --username dev-ci(你的 SVN 用戶名) http://svn-server/testRepository/trunk/,輸入完密碼後,會詢問你是否需要保存密碼,輸入 yes 以保存 SVN 密碼。

    至此,所有操作已經完成。你只需重新回到 jenkins 的視圖頁面,重新執行對應的構建任務即可。本次執行完成後,“Console Output”頁面的末尾處多輸出了幾條將文件提交到 SVN 的信息:

SVN Publisher: target: /var/lib/jenkins/jobs/my-jenkins-task/workspace/target
SVN Publisher: Deleting Remote Item: xxx.jar
SVN Publisher: Importing Item: xxx.jar
Finished: SUCCESS
使用 TortoiseSVN 瀏覽版本庫,看到確實將對應的 jar 提交上來了:
參考資料:
http://stackoverflow.com/questions/18417597/svn-checkout-not-working-for-jenkins
http://stackoverflow.com/questions/17464993/jenkins-cannot-acces-to-svn-https

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章