2016-09-23 55 views
2

我有一個用Go編寫的AppEngine Classic應用程序,作爲它的一部分,我有一些我希望在代碼回購中沒有的鍵。如何在使用AppEngine和Go時將密鑰用於回購?

我想要在測試目的的回購默認密鑰,但保持生產密鑰的祕密。我知道我可以指定哪些文件不能上傳到我的.gitignore文件的回購。但是,我不確定要做到這一點的最佳方式是讓其他開發人員可以在不訪問文件文件的情況下構建和測試代碼。

什麼是最有效的方法來保持密鑰退出回購協議,而仍然有代碼編譯和測試時,文件與密鑰不存在?

+0

是存儲並從數據存儲選項讀書的鑰匙?如果是這樣,那將解決你的問題。 – icza

+0

@icza數據存儲是可讀的(通過數據存儲查看器)許多不應該訪問私鑰的人,因此這不是一個選項。 – JohnGB

回答

1

由於您希望在回購協議中使用默認(測試)密鑰,以便其他人可以測試您的代碼,但是您希望保密私鑰(使用回購協議),我會使用解決方案來擁有2個單獨的文件夾,一個用於測試密鑰,一個用於私鑰。

很顯然,私鑰文件夾可能會變爲.gitignore(因此將被保留在回購協議之外),並且您可以在運行時通過邏輯來確定密鑰文件夾。

最簡單的邏輯是首先查找私鑰文件夾(只存在於您的計算機中),如果不存在,請繼續使用測試密鑰文件夾。

你可以加入這個邏輯例如允許使用cmd標誌或env變量繞過私鑰文件夾,即使它存在。在生產環境中只查找私鑰文件夾也是合理的。

但請注意/注意生產碼可以下載,例如用下面的命令:

appcfg.py download_app -A <your_app_id> -V <your_app_version> <output-dir> 

只有誰上傳的代碼和應用程​​序擁有者可以下載開發者。

查看關於此位置的詳細信息:Downloading Your Source Code

+0

如何查找AppEngine中的文件夾,因爲沒有文件系統。我已經嘗試了您的確切解決方案,但在調用通常會檢查文件或文件夾的代碼時遇到錯誤。 – JohnGB

+0

@JohnGB有文件系統,你不能寫它,你不能讀取所有的東西,但你可以閱讀你的應用程序的_application_文件。您必須使用相對路徑,請參閱相關問題以獲取詳細信息:[在Go AppEngine中正確讀取文件的方式](http://stackoverflow.com/questions/36717098/correct-way-to-read-file-in-go- appengine)和[我如何在谷歌應用程序引擎中存儲我的服務器的私鑰?](http://stackoverflow.com/questions/34629056/how-do-i-store-the-private-key-of-my -server-in-google-app-engine) – icza

+0

相對文件路徑解釋了很多,謝謝。這爲我解決了這個問題。 – JohnGB

相關問題