通过 CircleCi 2.1 和 TravisCI 将应用程序部署到 Elastic Beanstalk

2022-06-02 10:00:11 浏览数 (3)

通过 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-IDSecret-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 的值(根据您的设置)。
代码语言:javascript复制
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

代码语言:javascript复制
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仪表板中设置。

当然,欢迎提出更正和建议,以改进做法。

0 人点赞