通过 CircleCi 2.1 测试和部署到 Amazon Elastic Beanstalk
在互联网上搜索了一种通过circleCI将我的应用程序部署到Elastic beanstalk的直接方法之后,我想我可以帮助其他试图通过这篇文章做同样的事情的人。在github上签出ryansimms,因为这种方法是基于他在CircleCI 2.0上的方法,这是我让它工作的起点。
首先按照以下步骤设置 AWS IAM 用户(建议使用 CircleCI 的唯一用户))
- 在 AWS 服务上搜索 IAM
- 选择“用户”(或“用户组”,例如,如果您希望将部署用户分组在一起。TravisCI 和 CircleCI)
- 在用户下,点击“添加用户”'
- 设置用户名并仅勾选访问键 - 编程访问作为访问类型
- 单击下一步(设置权限),然后选择“直接附加现有策略”,然后搜索并选择管理员访问 - AWSElasticBeanstalk 和 AmazonS3FullAccess。注意:这曾经只是 AWSElasticBeanstalkFullAccess,但后来被弃用>确保将用户的 Access-Key-ID 和 Secret-Access-key 复制到安全位置。
- 单击下一步(标签),下一步(查看),最后单击“创建用户”。
设置您的弹性豆茎应用程序
- 在 AWS 服务上搜索 Elastic Beanstalk
- '创建一个新应用程序',并为其提供您的应用程序名称。
- '创建新环境',并相对于它将要托管的git分支名称命名它,例如 我这样做是因为我有一个过渡分支和主分支,所以在我们的EB配置中,我们将替换为CircleCi提供的$CIRCLE_BRANCH环境变量,因此在部署过渡分支时,例如,它将知道部署到Elastic Beanstalk上的环境。
BRANCHNAME-my-applicationBRANCHNAMEstaging-my-application
- 等待环境上线。之后,您可以在
[environment-name].[application-region].elasticbeanstalk.com
将部署用户环境变量添加到 CircleCi
在 CircleCI 上,转到
- 项目设置>环境变量添加这些键:及其值
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
将配置添加到应用程序代码.elasticbeanstalk/config.yml
- 在应用程序代码的根目录中创建此文件夹
- 使用代码段更新 config.yml 的值(根据您的设置)。
branch-defaults:
master:
environment: your-app-name-$CIRCLECI_BRANCH
develop:
environment: your-app-name-$CIRCLECI_BRANCH
global:
application_name: your-app-name
default_platform: 64bit Amazon Linux 2/3.4.16
default_region: your-app-region (e.g. us-east-1)
sc: git
注意:请确保application_name
与您在执行“创建新应用程序”步骤时在 Elastic Beanstalk 中调用的应用程序完全相同。
另请注意:请勿在此处设置配置文件
:值,配置文件将根据您设置AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY环境变量进行设置。
更新您的 .circleci/config.yml
如下所示,并根据您的设置
代码语言:javascript复制version: 2.1
jobs:
# add commands to run your test if you have them otherwise skip this
test-me:
docker:
- image: cimg/node:14.19
steps:
- run: my test script
# deployment starts here
deploy-me:
docker:
- image: cimg/python:3.10
steps:
- checkout
- run: pip3 --version
- run:
working_directory: /
name: installing ebcli
command: pip3 install awsebcli --upgrade --user
- run: eb --version
- run:
name: deploying with awsebcli
command: eb deploy your-app-name-$CIRCLE_BRANCH
workflows:
test-then-deploy:
jobs:
- test-me
- deploy-me:
context: aws-creds
filters:
branches:
only:
- master
- staging
requires:
- testme
请注意,您的应用程序名称
应与 Elastic Beanstalk 上的名称相同
现在我们等待
- 提交,推送并等待CircleCi完成运行。如果在 CircleCI 上一切顺利,您应该会在 Elastic Beanstalk 仪表板上看到您的应用程序更新。
附加功能,仅限用户使用TravisCI
理想情况下,将此步骤添加到文件中应该可以正常工作deploy.travis.yml
deploy:
provider: elasticbeanstalk
region: "us-east-1"
app: "your-app-name"
env: " your-app-environment-name"
bucket: elasticbeanstalk-us-east-1-398485943999
bucket_path: "your-app-name"
on:
branch: master
access_key_id: $AWS_ACCESS_ID
secret_access_key: $AWS_SECRET_KEY
注意:将 us-east-1
替换为您的应用程序区域。
注意2:AWS_ACCESS_ID和AWS_SECRET_KEY环境变量应在TravisCI仪表板中设置。
当然,欢迎提出更正和建议,以改进做法。