- Тестирование и развертывание на Amazon Elastic Beanstalk с помощью CircleCi 2.1
- Сначала настройте пользователя AWS IAM, выполнив следующие шаги (рекомендуется создать уникального пользователя для CircleCI)
- Настройка приложения Elastic Beanstalk
- Добавление переменных окружения пользователя развертывания в CircleCi
- Добавьте конфиг .elasticbeanstalk/config.yml в код приложения
- Обновите ваш .circleci/config.yml
- Теперь мы ожидаем
- Дополнительно, -только для пользователей TravisCI
Тестирование и развертывание на Amazon Elastic Beanstalk с помощью CircleCi 2.1
После поиска в интернете простого способа развертывания моего приложения на Elastic Beanstalk с помощью CircleCI, я решил, что смогу помочь этим постом другим, пытающимся сделать то же самое. Проверьте ryansimms на github, так как этот метод основан на его методе для CircleCI 2.0, который был моей отправной точкой, чтобы заставить его работать.
Сначала настройте пользователя AWS IAM, выполнив следующие шаги (рекомендуется создать уникального пользователя для CircleCI)
- На сервисах AWS найдите IAM
- Выберите Users (или User Groups, если вы хотите сгруппировать пользователей развертывания вместе, например, TravisCI и CircleCI).
- В разделе «Пользователи» нажмите на «Добавить пользователя».
- Задайте имя пользователя и отметьте только ключ доступа — программный доступ в качестве типа доступа.
- Нажмите на next (Set permissions), выберите ‘Attach existing policies directly’, затем найдите и выберите AdministratorAccess-AWSElasticBeanstalk, and AmazonS3FullAccess.Note: Раньше это был просто AWSElasticBeanstalkFullAccess, но с тех пор это устарело>Убедитесь, что скопировали Access-Key-ID пользователя и Secret-Access-key в безопасное место.
- Нажмите на next(Tags), next(Review) и, наконец, ‘Create User’.
Настройка приложения Elastic Beanstalk
- На сервисах AWS найдите Elastic Beanstalk
- ‘Create a New Application’ и дайте ему имя вашего приложения.
- Создайте новую среду и назовите ее в соответствии с именем ветки git, в которой она будет размещена, например.
BRANCHNAME-my-application
Я делаю так, поскольку у меня есть staging branch и master branch, поэтому в нашей конфигурации EB мы заменимBRANCHNAME
переменной окружения $CIRCLE_BRANCH, предоставленной CircleCi, чтобы при развертывании, например, staging branch, она знала, что нужно развернуть в окружениеstaging-my-application
на Elastic Beanstalk. - Подождите, пока окружение заработает. После этого вы сможете просмотреть образец приложения по адресу
[имя окружения].[регион приложения].elasticbeanstalk.com
.
Добавление переменных окружения пользователя развертывания в CircleCi
В CircleCI перейдите в раздел
- Project Settings > Environment Variables добавьте эти ключи:и их значения
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, когда выполняли шаг ‘Create New Application’.
Также обратите внимание: не задавайте здесь значение profile
:, профиль будет установлен на основе переменных окружения AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY, которые вы установили.
Обновите ваш .circleci/config.yml
Как показано ниже и в соответствии с вашими настройками
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.
Теперь мы ожидаем
- Commit, Push и ждем окончания работы 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.
Исправления и предложения по улучшению практики, конечно же, будут приветствоваться