如何加密你的 Travis 密钥

Gra*_*hiu 5 public-key-encryption travis-ci

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

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

Gra*_*hiu 6

碰巧有一个 Javascript 方法,它可以在这里与相应的 github repo here 一起使用

使用加密的 S3 密钥有点令人困惑,因为 Travis 文档中没有很好地解释这些原则。

在上面提到的表单的左上角字段中,您输入您的 Travis-CI 用户 ID/repo-name,这样脚本就可以为您的存储库下拉由 Travis 创建的公钥。

在右上角的字段中,您输入:

AWS_ACCESS_KEY_ID:...the..access..string..from..Amazon.IAM...
Run Code Online (Sandbox Code Playgroud)

单击加密并复制在加密数据下方生成的字符串

然后在右上方的字段中,输入:

AWS_SECRET_ACCESS_KEY:...the.very.secret.string.from.Amazon.IAM...
Run Code Online (Sandbox Code Playgroud)

并再次复制加密的字符串。请注意,由于加密字符串中包含随机数据,因此加密字符串每次都会发生变化。

这些加密的密钥对由 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
Run Code Online (Sandbox Code Playgroud)

现在在部署部分,您使用用于加密对的名称来引用它们

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
Run Code Online (Sandbox Code Playgroud)

如果您在加密时在 global env 中使用了名称 ACCESS_ID,那么在部署中您会将其称为 $ACCESS_ID

上传目录在命名存储桶中创建。

当您的构建在 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
Run Code Online (Sandbox Code Playgroud)