nodejs에서 작성한 express 애플리케이션을 git에 CircleCI에서 자동 빌드가 되고 nodejs에서 작성한 테스트 코드가 실행됩니다.
빌드에 성공하고 테스트 코드도 모두 통과가 되면 AWS elastic beanstalk에 자동 배포를 해주는 ci/cd 를 구축해봅니다.
➡️ 1편으로 바로가기
➡️ 2편으로 바로가기
마지막 단계로 circleCI에서 빌드와 테스트 성공시 AWS elastic beanstalk로 자동 배포하는 작업을 해줍니다.
1. config.yml 파일 수정
-
python3, pip3, awsebcli 설치
- run:
name: Installing deployment dependencies
command: |
sudo apt-get -y -qq update
sudo apt-get install python3-pip python3-dev build-essential
sudo pip3 install awsebcli --upgrade
2. EB에 배포하는 코드
- run:
name: Deploying
command: |
git config --global core.autocrlf input
eb deploy (EB 환경 이름)
완성된 config.yml
jobs:
test:
executor:
name: node/default
tag: '13.14'
steps:
- checkout
- node/install-packages
- run:
name: Run Test Code
command: npm run test
- run:
name: Installing deployment dependencies
command: |
sudo apt-get -y -qq update
sudo apt-get install python3-pip python3-dev build-essential
sudo pip3 install awsebcli --upgrade
- run:
name: Deploying
command: |
git config --global core.autocrlf input
eb deploy Mocha-practice-dev
- store_test_results:
path: ~/project/artifacts/test
orbs:
node: circleci/node@3.0.0
version: 2.1
workflows:
test_my_app:
jobs:
- test
2. nodeJS 파일에 Procfile추가
프로젝트 루트에 Procfile를 만들어주고 다음 코드를 넣어줍니다.
web: npm start
3. AWS IAM 설정
AWS IAM - 사용자 - 사용자 추가
권한설정 - 기존 정책 직접 연결
AmazonS3FullAccess와 AWSElasticBeanstalkFullAccess를 찾아 선택합니다.
다음을 누른 후 생성된 csv 파일을 다운받아 줍니다.
4. AWS credential 설정
CircleCI Dashboard에서 프로젝트를 선택하고, 오른쪽 상단의 Project Settings 클릭합니다.
Envirionment Variables에서 AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY 추가를 줍니다.
value로는 방금 다운 받은 csv 파일에 있는 정보를 입력합니다.
5. push 후 EB 배포 확인
성공적! 이로써 nodejs에서 소스를 수정하고 git에 push를 하면 CircleCI에서 자동 빌드, 테스트 한 후 결과를 시각화 하여 알려주고, 성공 시 AWS Elastic Beanstalk로 자동 배포를 해주는 작업을 완료하였습니다. :)