Travis ci
Github에서 진행되는 오픈소스 프로젝트를 위한 지속적인 통합(Continuous Integration) 서비스다.
Travis ci를 이용하면 자동으로 테스트, 빌드하거나 배포할 수 있다.
Travis Ci의 흐름
1. 로컬 Git에 있는 소스를 Github 저장소에 Push 한다.
2. Github master 저장소에 소스가 Push가 되면 Travis Ci에게 소스가 Push 되었다고 알려준다.
3. Travis ci는 업데이트된 소스를 Github에서 가져온다.
4. Github에서 가져온 소스의 테스트 코드를 실행해 본다.
5. 테스트 코드 실행 후 테스트가 성공하면 AWS 같은 호스팅 사이트로 보내서 배포한다.
Travis ci 사용법
1. https://travis-ci.com 페이지 이동
2. Github로 로그인
3. 오른쪽 상단의 프로필 눌러서 Settings 선택
4. Manage repositories on GitHub 클릭하여 자신이 배포할 프로젝트 가져오기
5. Travis ci 사용 시 aws 처럼 영어 이름, 영어 주소, 카드를 등록해야 사용이 가능하다.
Travis ci 설정
docker는 docker-compose.yml 에서 무엇을 할지 작성해 주었다면
Travis ci에서는 .travis.yml 파일에서 해준다.
소스로 보기
language: generic
sudo: required
services:
- docker
before_install:
- docker build -t hello/react-test-app -f ./frontend/Dockerfile.dev ./frontend
script:
- docker run -e CI=true hello/react-test-app npm test
after_success:
- docker build -t hello/docker-frontend ./frontend
- docker build -t hello/docker-backend ./backend
- docker build -t hello/docker-nginx ./nginx
- echo "$DOCKER_HUB_PASSWORD" | docker login -u "$DOCKER_HUB_ID" --password-stdin
- docker push hello/docker-frontend
- docker push hello/docker-backend
- docker push hello/docker-nginx
deploy:
provider: elasticbeanstalk
region: "ap-northeast-2"
app: "docker-fullstack-app"
env: "Dockerfullstackapp-env"
bucket_name: elasticbeanstalk-ap-northeast-2-889722733980
bucket_path: "docker-fullstack-app"
on:
branch: main
access_key_id: $AWS_ACCESS_KEY
secret_access_key: $AWS_SECRET_ACCESS_KEY
sudo -> 관리자 권한 갖기
language -> 언어(플랫폼)를 선택
services -> 도커 환경 구성
before_install -> 스크립트를 실행할 수 있는 환경 구성
script -> 실행할 스크립트(테스트 실행)
after_success -> 테스트 성공 후 할 일
provider -> 외부 서비스 표시(s3, elasticbeanstalk, firebase 등)
region -> 현재 사용하고 있는 AWS의 물리적 장소
app -> 생성한 애플리케이션 이름
bucket_name -> 해당 일래스틱 빈스톡을 위한 s3 버킷 이름
bucket_path -> 애플리케이션의 이름과 동일
branch -> 어떤 브랜치에 푸시할 때 AWS에 배포할 것인지 설정
access_key_id와 secret_access_key는 aws에서 제공하는 액세스 키와 비밀 액세스 키를 넣어주는 것이다.
AWS IAM을 생성 후 액세스 키와 비밀 액세스 키가 나오고 Travis Ci에 저장시켜주면 된다.
IAM 이란?
AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스이다. IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여된 대상을 제어한다.
'컨테이너 > 도커' 카테고리의 다른 글
Docker 총 정리 (0) | 2022.05.22 |
---|---|
docker copy vs volume (0) | 2022.05.18 |
docker react 설치 (0) | 2022.05.17 |
Docker 이미지 만들기 (0) | 2022.05.15 |
Docker 정리(4) (0) | 2022.05.15 |