如何加密Travis密钥

时间:2017-03-01 07:40:45

标签: travis-ci public-key-encryption

Travis docs表示加密密钥的最简单方法,例如。要上传到S3,就是使用他们的命令行工具。

还有其他方法可以做到这一点,不涉及安装Ruby等只是为了使用他们的命令行工具吗?

1 个答案:

答案 0 :(得分:4)

恰好有一个Javascript方法,它可用here和相应的github repo here

使用加密的S3密钥会引起混淆,因为Travis文档中没有很好地解释这些原则。

在上面提到的表单的左上角字段中输入您的Travis-CI用户ID / 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。

当您的构建在Travis中运行时,解密的密钥不会公开。相反,你看到的是:

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