2012-02-18 114 views

回答

88

Travis具有加密環境變量的功能("Encrypting environment variables")。這可以用來保護您的祕密API密鑰。我已經成功地將它用於我的Heroku API密鑰。

您只需安裝travis gem,對您想要的字符串進行加密並在您的.travis.yml中添加加密的字符串。加密僅對一個存儲庫有效。 travis命令爲您的回購獲取您的公鑰,然後可以在構建期間解密字符串。

gem install --user travis 
travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo 

這給你以下的輸出:

Please add the following to your .travis.yml file: 

    secure: "OrEeqU0z6GJdC6Sx/XI7AMiQ8NM9GwPpZkVDq6cBHcD6OlSppkSwm6JvopTR\newLDTdtbk/dxKurUzwTeRbplIEe9DiyVDCzEiJGfgfq7woh+GRo+q6+UIWLE\n3nowpI9AzXt7iBhoKhV9lJ1MROrnn4DnlKxAEUlHTDi4Wk8Ei/g=" 
+11

不要忘記記錄你正在使用的變量以及爲什麼,因爲一旦加密它們,只有具有原始密鑰的人才能恢復他們。 – jerseyboy 2013-07-20 15:06:36

+1

它看起來像特拉維斯寶石的新版本更喜歡有他們的參數在相反的順序:'travis encrypt [args ..] [選項]',即你會想要做'travis加密MY_SECRET_ENV = super_secret -r my_username/my_repo'。首先選擇選項並且要加密的數據會顯示警告。 – 2014-05-30 21:50:43

+0

@Jordan感謝您的更新,我相應地更新了我的答案。 – Odi 2014-06-02 12:36:15

0

使用一組不同的API密鑰,並以相同的方式進行操作。你的Travis盒子會在你的構建運行中獲得設置,然後在構建完成後再次完全拆除。在構建過程中,您可以對您的盒子進行root訪問,因此您可以隨心所欲地做任何事情。

+4

你是什麼意思的「以同樣的方式」? 我並不喜歡將API密鑰存儲在回購本身(即在.travis.yml文件中)的想法,但似乎沒有其他方式來配置travis上的環境變量。 – BM5k 2012-07-11 05:15:46

+0

env變量將被公鑰加密,所以只有密鑰的所有者才能解密它。你不應該使用重要的標記。在我的情況下,我使用了Travis已經用於GitHub的那個。這工作得很好,從github內部我可以撤銷這個令牌,只要我覺得Travis有風險。在我的回購中加密的令牌不會讓我睡不好。 https://github.com/ecki/GCViewer/blob/topic-ciupload/.travis.yml – eckes 2013-02-19 01:17:24

2

您還可以定義祕密variables in repository settings

在倉庫設置中定義的變量都相同的所有版本,當你重新啓動一箇舊版本,它使用最新的值。這些變量不會自動提供給叉子。

  • 每庫不同:

    在庫設置定義的變量。

  • 包含敏感數據,如第三方憑據。

要定義Repository Settings中的變量,請確保您已登錄,導航到相關存儲庫,從cog菜單中選擇「Settings」,然後在「Environment Variables」中單擊「Add new variable」 「 部分。

+1

不明白如何創建* secret *變量。當谷歌搜索,結果解釋如何加密。 – XedinUnknown 2017-08-12 16:44:48

+0

@XedinUnknown這可以用於祕密變量。在鏈接中:「默認情況下,這些新環境變量的值對日誌中的導出行是隱藏的,這對應於.travis.yml中加密變量的行爲。變量在我們的系統中被加密存儲,並且在構建腳本生成時解密。「 – bmaupin 2018-01-25 18:28:35

3
根據特拉維斯CI文檔中 this

它說:

如果您同時安裝了Heroku的和Travis CI命令行客戶端,你可以得到你的密鑰,加密,並把它添加到您的.travis.yml從項目目錄運行以下命令:

travis encrypt $(heroku auth:token) --add deploy.api_key 

the following教程安裝客戶端的Heroku艾科rding到你的操作系統

+0

我只想驗證:它添加到您的文件的密鑰是安全的上傳到版本控制,對不對? – vapurrmaid 2018-03-03 23:46:08