CircleCI에서 AWS Elastic Beanstalk로 푸시 (Deploy)
6481 단어 CircleCIElasticBeanstalkAWS
여기의 기사는 참고 정도로.
배경은 제쳐두고, PR을 병합하면 빨리 Elastic Beanstalk를 갱신해 두어도 좋은 앱도 있을 것입니다.
그럼 CircleCI에서 push 해 두자.
circle.yml
circle.yml은 이런 느낌.
관련 도구 설정 및 캐시, 배포 명령의 조합입니다.
circle.yml
---
dependencies:
pre:
- ci/01_eb_command.sh
- ci/02_credencial_for_eb.sh
cache_directories:
- ~/awstools
deployment:
my_environment:
branch: master
commands:
- git aws.push
eb 명령 설치 (01_eb_command.sh)
[업데이트]
sudo pip install awsebcli에서 좋은 패턴. 이것은 나이스.
참고: CircleCI를 통해 ElasticBeanstalk에 배포하는 방법 - Qiita
도구 설정 그, eb 명령. 흔히 있는 외부 툴의 도입이군요.
Elastic Beanstalk적으로는
RepositorySetup
가 중요합니다.이 근처, 빌드로 매회 하는 것과 캐쉬 해 두고 싶은 것, 환경 변수로부터 취하고 싶은 것의 구별로 여러가지 궁리의 여지는 있습니다.
ci/01_eb_command.sh
#!/usr/bin/env bash
set -ex
EB_VERSION="2.6.4"
EB_BASE="AWS-ElasticBeanstalk-CLI-${EB_VERSION}"
HOME=${HOME:-/home/ubuntu}
## botoがいるので入れておく
sudo pip install boto
mkdir -p ${HOME}/awstools
cd $HOME/awstools
## ebダウンロード済みならスキップ
if ! [ -d ${HOME}/awstools/${EB_BASE} ]; then
wget https://s3.amazonaws.com/elasticbeanstalk/cli/${EB_BASE}.zip
unzip ${EB_BASE}.zip
fi
## ebコマンドをパスが通っている場所にリンク
sudo ln -fs ${HOME}/awstools/${EB_BASE}/eb/linux/python2.7/eb ${HOME}/bin/
## gitのプラグインを`.git/AWSDevTools/`に入れる(eb init相当)
cd $HOME/${CIRCLE_PROJECT_REPONAME}
bash -ex ${HOME}/awstools/${EB_BASE}/AWSDevTools/Linux/AWSDevTools-RepositorySetup.sh
eb 용 credentials 파일 생성 ( 02_credencial_for_eb.sh )
CircleCI의 프로젝트 설정에는 AWS 키를 넣는 곳이 있으며
~/.aws/config
, ~/.aws/credentials
를 자동으로 넣어준다.하지만, eb 커멘드로부터는 직접 읽을 수 없고(..은), 환경 변수에도 들어가지 않는다.
이번에는 있는 것(
~/.aws/credentials
)을 유용, 성형하기로 했습니다.ci/02_credencial_for_eb.sh
#!/usr/bin/env bash
set -ex
if [ -f ~/.aws/credentials ]; then
sed -e 's/\[default\]//' -e 's/aws_access_key_id = /AWSAccessKeyId=/' -e 's/aws_secret_access_key = /AWSSecretKey=/' ~/.aws/credentials | sed ':loop; N; $!b loop; ;s/^\s*\n//' > ~/.aws/eb_credentials.txt
chmod 0600 ~/.aws/eb_credentials.txt
fi
키 측면을 변경, 여분의 개행과 공백을 지우고 있습니다.
환경 변수 AWS_CREDENTIAL_FILE을 설정하십시오.
eb는 환경 변수
AWS_CREDENTIAL_FILE
가 있으면 해당 파일에서 credentials를 캡처하므로 프로젝트 설정에 하나를 추가합니다.AWS_CREDENTIAL_FILE=/home/ubuntu/.aws/eb_credentials.txt
git aws.push
이 경우 기본적으로 ignore
./.elasticbeanstalk/config
는 Git 저장소에 포함되어 있습니다.포함하고 싶지 않은 경우에도 브랜치 이름과 Environment의 대응이 있으면 좋기 때문에, CircleCI상에서 생성해도 괜찮습니다.
참고: Git 브랜치를 특정 환경에 배포 - AWS Elastic Beanstalk
이제 모든 브랜치가 바로 EB에 푸시됩니다.
Reference
이 문제에 관하여(CircleCI에서 AWS Elastic Beanstalk로 푸시 (Deploy)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sawanoboly/items/28e98827bc044abdc32f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)