Dav*_*Sag 16 configuration amazon-web-services continuous-deployment travis-ci aws-cli
我试图让travis-ci运行一个自定义部署脚本,用于awscli将部署推送到我的登台服务器.
在我的.travis.yml文件中,我有这个:
before_deploy:
- 'curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"'
- 'unzip awscli-bundle.zip'
- './awscli-bundle/install -b ~/bin/aws'
- 'export PATH=~/bin:$PATH'
- 'aws configure'
Run Code Online (Sandbox Code Playgroud)
我已经设置了以下环境变量:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION
Run Code Online (Sandbox Code Playgroud)
在travis-ciWeb界面中使用正确的值.
但是当aws configure运行时,它会停止并等待用户输入.如何告诉它使用我定义的环境变量?
Fra*_*ula 25
Darbio的解决方案工作正常,但没有考虑到您最终可能会在您的存储库中推送您的AWS凭据.
这是一件坏事,特别是如果docker试图从你的一个ECR存储库中提取私有图像.这意味着您可能不得不将AWS生产凭证存储在.travis.yml文件中,这远非理想.
幸运的是,Travis为您提供了加密环境变量,通知设置和部署API密钥的可能性.
gem install travis
Run Code Online (Sandbox Code Playgroud)
做一个travis login首先,它会问你为你的github上的凭据.登录后,进入项目根文件夹(.travis.yml文件所在的位置)并加密访问密钥ID和秘密访问密钥.
travis encrypt AWS_ACCESS_KEY_ID="HERE_PUT_YOUR_ACCESS_KEY_ID" --add
travis encrypt AWS_SECRET_ACCESS_KEY="HERE_PUT_YOUR_SECRET_ACCESS_KEY" --add
Run Code Online (Sandbox Code Playgroud)
由于该--add选项,您将在配置文件中最终得到两个新的(加密的)环境变量.现在只需打开您的.travis.yml文件,您应该看到如下内容:
env:
global:
- secure: encrypted_stuff
- secure: encrypted_stuff
Run Code Online (Sandbox Code Playgroud)
现在,您可以让travis运行一个shell脚本,~/.aws/credentials为您创建文件.
ecr_credentials.sh
#!/usr/bin/env bash
mkdir -p ~/.aws
cat > ~/.aws/credentials << EOL
[default]
aws_access_key_id = ${AWS_ACCESS_KEY_ID}
aws_secret_access_key = ${AWS_SECRET_ACCESS_KEY}
EOL
Run Code Online (Sandbox Code Playgroud)
然后你只需ecr_credentials.sh要从你的.travis.yml文件中运行脚本:
before_install:
- ./ecr_credentials.sh
Run Code Online (Sandbox Code Playgroud)
完成!:-D
来源: Travis CI上的铭文键
Dar*_*bio 10
您可以通过几种方式设置它们.
首先,通过在~/.aws/config(或~/.aws/credentials)创建文件.
例如:
[default]
aws_access_key_id=foo
aws_secret_access_key=bar
region=us-west-2
Run Code Online (Sandbox Code Playgroud)
其次,您可以为每个设置添加环境变量.
例如,创建以下环境变量:
AWS_DEFAULT_REGION
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
Run Code Online (Sandbox Code Playgroud)
第三,您可以将区域作为命令行参数传递.例如:
aws eb deploy --region us-west-2
Run Code Online (Sandbox Code Playgroud)
aws configure在配置cli时,您无需在这些情况下运行.
此页面上还有AWS文档.
| 归档时间: |
|
| 查看次数: |
6917 次 |
| 最近记录: |