Gra*_*hiu 5 public-key-encryption travis-ci
Travis文档说加密密钥的最简单方法,例如。要上传到 S3,就是使用他们的命令行工具。
是否有其他方法可以做到这一点而不涉及安装 Ruby 等,只是为了使用他们的命令行工具?
碰巧有一个 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)