AWS,  CI,  Docker Container

GitHub – Travis CI 사용법 (Docker, AWS EB, IAM)

  • Travis CI 란 ?

Travis CI는 GithubBitbucket에서 진행되는 오픈소스 프로젝트를 위한 지속적인 통합(Continuous Integration) 서비스입니다.
2011년에 설립되어 2012년에 급성장하였으며 Ruby언어만 지원하였지만 현재는 대부분의 개발 언어를 지원하고 있으며 Travis CI를 이용하면 Github repository에 있는 프로젝트를 특정 이벤트에 따라 자동으로 테스트, 빌드하여 배포할 수 있습니다.
* Private repository는 유료로 일정 금액을 지불하고 사용할 수 있습니다.

  • 준비물
    • AWS 계정
    • Github 계정
    • Travis에 연동할 Github Repository

Travis CI – Github, AWS 연동 과정

먼저 Travis 홈페이지에서 Travis CI 계정을 생성합니다.

생성 후 화면 우측 상단 내 정보 – Setting으로 이동하면 아래 화면이 나옵니다.

Activate 클릭
연동할 Github Repository를 선택해줍니다
git repository 연동 완료
추가로 위 서비스 플랜까지 지정해줍니다!
  • elasticbeanstalk 생성 과정
    • AWS Console에서 ElasticBeanstalk 검색 – 새 환경 생성
    • 환경 티어 선택 – 웹 서버 환경 선택
    • 플랫폼 – docker 선택 (Linux 1은 Dockerfile로 실행하고 Linux 2는 docker-compose.yml 파일로 실행합니다)
    • 환경 생성 – 완료
  • IAM(Identity and Access Management) 란?
    • AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스로 대상을 인증하고 권한 내의 사용을 제어합니다.
  • IAM 사용자 생성 과정
    • AWS Console에서 IAM 검색 – 좌측 대시보드에서 사용자 클릭 – 사용자 추가
    • AWS 액세스 유형 선택 – (액세스 키 – 프로그래밍 방식 액세스) 선택
    • 권한 설정 부분
      • 기존 정책 직접 연결 – (AdministratorAccess-AWSElasticBeanstalk) 선택
  • IAM 사용자 생성 이후 Travis 설정
    • access key, secret key 저장
    • Travis Dashboard 이동
    • 연동할 Repository 선택 후 우측 상단 More Options – Settings 이동
    • Environment Variables에서 access key 변수 선언
More Options – Settings 위치
  • .travis.yml 설정 파일
    • Travis에서 연동한 Github Repository의 소스가 올라왔을때 설정 파일 내용을 토대로 테스트 후 Docker Hub, AWS, GCP 등에 지정된 서비스에 적용합니다.
    • 파일명은 (.travis.yml)
명령 의미 예시 코드
sudo 관리자 권한 sudo: required
language 이미지를 빌드하기위한 명령을 지정 language: generic
services 호스트에서 컨테이너에 파일을 복사한다. services:
– docker
before_install 스크립트를 실행할 수 있는 환경 구성 before_install:
– 스크립트
– 스크립트
script 실행할 스크립트(테스트 실행) script:
– 스크립트
after_success 테스트 성공 이후 after_success:
– 스크립트
provider 외부 서비스 표시 (s3, elasticbeanstalk, firebase 등) provider: provider service name
region 현재 사용하고 있는 AWS의 서비스가 위치하고 있는 물리적 장소 region: “”
app 생성된 어플리케이션의 이름 app : “”
env elasticbeanstalk 환경 이름 (생략 가능) env: “”
bucket_name 해당 elasticbeanstalk을 위한 s3 버켓 이름 bucket_name: “”
bucket_path 어플리케이션의 이름과 동일 bucket_path: “”
on branch 어떤 브랜치에 Push를 할때 AWS에 배포할지 지정 on:
    branch: main
  • 간단한 .travis.yml 파일 설정
    • script 실행 후 dockerhub 업로드
sudo: required
language: generic
services:
  - docker
before_install:
  - script 영역
script:
  - script 영역
after_success:
  - script 영역 
  (docker push 이미지명은 도커 계정명과 일치해야함)
  (multi container와 AWS EB 설정에 대한 추가적인 설명 참고)
  - echo "$DOCKER_HUB_PASSWORD" | docker login -u "$DOCKER_HUB_ID" --password-stdin
  - docker push $DOCKER_HUB_ID/docker-frontend
  - docker push $DOCKER_HUB_ID/docker-backend
  - docker push $DOCKER_HUB_ID/docker-nginx
  • 간단한 .travis.yml 파일 설정
    • AWS EB 배포 설정
deploy:
  provider: provider service name
  region: "region name"
  app : "application name"
  env: "env name"
  bucket_name: "s3 name"
  bucket_path: "application name"
  on:
    branch: "push branch name"
  access_key_id: $AWS_Access_Key
  secret_access_key: $AWS_Secret_Access_Key

참고 자료

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.