2013-02-12 90 views
7

我正在運行maven版本插件(org.apache.maven.plugins:maven-release-plugin:2.3.2),並注意到scm的密碼已保存在通過命令行傳遞時,在release.properties文件中以明文顯示。我想知道是否有辦法解決這個問題。maven版本插件release.properties文件包含未加密的密碼

我使用Hudson來自動執行發佈過程,並通過Hudson將svn用戶名和密碼傳遞到命令行。原因是做發佈準備的人可以更改,並且我有多個共享settings.xml的哈德森作業來發布不同的項目。

我傳遞參數如: -Dtag = $ {svn.label} -DreleaseVersion = $ {maven.releaseVersion} -DdevelopmentVersion = $ {maven.developmentVersion} -Dusername = $ {svn.username文件裏} -Dpassword = $ {svn.password} -DscmCommentPrefix ='[maven-release-plugin] $ {env.BUILD_URL}'

release.properties文件在發佈期間被創建:prepare,但我不認爲它應該是必要的,因爲我傳遞了命令行中的所有信息。當這個release.properties文件被創建時,它包含純文本的密碼。這是有問題的,因爲可以使用hudson來瀏覽工作區,所以任何有權訪問哈德森的人都可以通過瀏覽器打開文件來查看密碼。

有沒有辦法不創建release.properties文件,或不保存密碼在文件中?我意識到加密的密碼可以保存在settings.xml文件中,但是這個文件在多個作業中共享,並且不能由運行作業的人員編輯。

+0

您是否使用Maven選項進行密碼加密? (-emp, - encrypt-master-password 加密主安全密碼 -ep, - encrypt-password 加密服務器密碼) – bmargulies 2013-02-12 20:13:23

回答

0

我們避免了讓svn-client爲我們緩存密碼的問題。

爲此目的,我們有一個特殊的帳戶,在顛覆方面有足夠的權利。

在我們的構建服務器上,密碼由svn-client以明文形式存儲在運行hudson的用戶帳戶中。對我們來說這沒有問題,因爲只有哈德森管理員才能訪問此帳戶。

但是你也可以配置svn-client存儲加密的密碼。配置取決於您的操作系統。

svn-client配置存儲在.subversion(linux)或「ApplicationData/Subversion」(windows)中。

請參閱 here,herehere

+0

這是一般SVN的好方法。對於我們的用例,必須保留用戶的個人登錄信息以獲取源代碼歷史記錄。所以,支持多個SVN用戶很重要。 – ash 2013-09-04 22:54:31