개발 공부 기록/03. AWS

AWS에서 Travis를 이용해 CI/CD를 해보자

박세류 2023. 11. 28. 01:33

1. CI / CD 란?

  • 코드가 git에 push 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정을 CI (Continuous Integration - 지속적 통합) 이라고 한다.
  • 이 빌드 결과가 자동으로 운영 서버에 무중단 배포까지 진행되는 과정을 CD (Continuous Deployment - 지속적인 배포) 라고 한다.

2. CI의 장점

현대 개발에서는 여러 프로그래머가 하나의 프로젝트를 같이 개발하므로 지속적인 코드가 통합되는 환경(CI)를 구축하고, 테스트코드와 빌드를 수행하면서 자동으로 코드가 통합되어 개발에 집중할 수 있게 한다.

3. CD의 장점

한 두대의 서버에 개발자가 수동으로 배포를 하지않고, 수백대나 긴박하게 배포할 경우 수동으로 하면 오래걸리기 때문에 자동화 하여 개발자가 개발만 집중하게끔 해준다.

 

4. CI의 4가지 규칙

  • 모든 소스 코드가 실행되고 누구든 현재의 소스에 접근할 수 있는 단일 지점을 유지할 것
  • 빌드 프로세스를 자동화해서 누구든 소스로부터 시스템을 빌드하는 단일 명령어를 사용할 수 있게 할 것
  • 테스팅을 자동화하여 언제든지 시스템에 대한 건전한 테스트를 실행할 수 있게 할 것
  • 누구나 현재 실행 파일을 얻으면 가장 완전한 실행파일을 얻었다는 확신을 얻게 할 것

 

5. Travis CI ?

깃허브에서 제공하는 무료 CI 서비스이다. 

 

젠킨스는 설치해야 하기 떄문에 젠킨스 서버(EC2 인스턴스)가 하나 더 필요하다. (NCP 할땐 맘대로 해서 좋았는데)

배포를 위한 EC2 인스턴스는 돈이 들기 때문에 웹 서비스인 Travis를 사용해보자.

 

YAML?

JSON에서 괄호를 제거한 것이며, Travis CI는 YAML을 통해 설정하고 있다.

build.gradle과 같은 위치에서 .travis.yml을 생성한 뒤 코드를 추가한다.

 

language: java
jdk:
  - openjdk8

branches:
  only:
    - main

# Travis CI 서버의 Home
cache:
  directories:
    - '$HOME/.m2/repository'
    - '$HOME/.gradle'
script: "./gradlew clean build"

# CI 실행 완료 시 메일로 알람
notifications:
  email:
    recipients:
      - 메일주소 입력

 

하고 travis에서 확인해보면 빌드가 됨을 확인 할 수 있다.

 

6. Travis CI와 AWS S3 연동하기

S3란 AWS에서 제공하는 일종의 파일 서버이다. ( NCP의 오브젝트 스토리지 )

 

이미지 파일을 비롯한 정적 파일이나 배포 파일들을 관리하다. 이미지 업로드를 구현한다면 S3서버를 주로 활용한다.

 

IAM를 발급받은뒤,

travis의 Environment Variables에 AWS_ACCESS_KEY, AWS_SECRET_KEY를 추가해준다.

여기에 등록된 값들은 .travis.yml에서 변수로 사용될 수 있다.

 

728x90