Travis docs表示加密密钥的最简单方法,例如。要上传到S3,就是使用他们的命令行工具。
还有其他方法可以做到这一点,不涉及安装Ruby等只是为了使用他们的命令行工具吗?
答案 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