2017-03-01 26 views
1

特拉維斯docs說,最簡單的方法來加密密鑰如。上傳到S3,就是使用他們的命令行工具。如何加密你的特拉維斯鍵

有沒有其他方法可以做到這一點,而不需要安裝Ruby等只是使用他們的命令行工具?

回答

3

碰巧有一個Javascript方法,它可用here與相應的github回購here

要使用加密的S3密鑰是相當混亂的,因爲在Travis文檔中沒有很好地解釋這些原則。

在上面提到的表單的左上角字段中,輸入您的Travis-CI userid/repo-name,這樣就可以讓腳本爲您的存儲庫下拉由Travis創建的公鑰。

在右側前場,你輸入:

AWS_ACCESS_KEY_ID:...the..access..string..from..Amazon.IAM... 

點擊加密和複製下面加密數據

然後在右側前場產生的字符串,請輸入:

AWS_SECRET_ACCESS_KEY:...the.very.secret.string.from.Amazon.IAM... 

並再次複製加密的字符串。請注意,由於隨機數據包含在加密字符串中,加密字符串每次都會發生更改。

這些加密密鑰對由Travis解密並導出爲環境變量。您在.travis.yml文件中像這樣輸入它們:

global: 
     # travis encrypt AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID 
     - secure: "--first-very--long-encrypted-string--=" 
     # travis encrypt AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY 
     - secure: "--second--very-long-encrypted-string--=" 
     - AWS_S3_BUCKET_NAME: yourbucketname 

現在在部署部分,您使用時使用的加密對

deploy: 
    provider: s3 
    # these are set up in the global env 
    access_key_id: $AWS_ACCESS_KEY_ID 
    secret_access_key: $AWS_SECRET_ACCESS_KEY 
    bucket: $AWS_S3_BUCKET_NAME 
    skip_cleanup: true 
    upload-dir: travis-builds 

的名字引用它們如果您用過ACCESS_ID在全局環境中被加密,然後在部署中被稱爲$ ACCESS_ID

upload-dir是在指定的存儲桶中創建的。

當你的構建特拉維斯運行時,解密的密鑰不被暴露。相反,你看到的是:

See https://docs.travis-ci.com/user/workers/container-based-infrastructure/ for details. 
Setting environment variables from .travis.yml 
$ export AWS_ACCESS_KEY_ID=[secure] 
$ export AWS_SECRET_ACCESS_KEY=[secure] 
$ export AWS_S3_BUCKET_NAME=yourbucketname