Programming/infra

[CI/CD] Travis CI를 활용한 배포 자동화 (1)

hyeonic 2021. 6. 22. 16:24

CI

CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 레포지토리에 통합되기 때문에 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다. 

 

이러한 CI를 위한 서비스에는 대표적으로 Travis CIJenkins 등 이 있다.


Travis CI

Travis CI는 github에서 제공하는 무료 CI 서비스이다. Jenkins의 경우 설치하여 사용해야 하지만 Travis CI는 오픈소스 웹 서비스이기 때문에 오픈 소스인 경우 무료로 사용이 가능하다. 

 

간단한 사용법을 알아보기 위해 https://travis-ci.com/에 접속한다.

 

 

github 계정을 활용하여 로그인을 진행한다.

로그인이 완료되었다면 settings로 이동한다.

 

아래 Manage repositories on GitHub를 클릭한다.

 

Repository access에서 CI를 사용할 public repository를 선택한다.

다시 Travis로 돌아와 확인해보면 repository가 등록된 것을 확인할 수 있다. 

 

웹 사이트에서 등록하는 과정은 모두 완료되었다. 추가적인 설정은 프로젝트에 .travis.yml을 활용하여 작성해야 한다.

.travis.yml의 위치는 src 디렉토리와 같다.

.travis.yml

# 언어와 jdk의 버전을 지정한다.
language: java
jdk:
  - openjdk11

# 어느 브랜치가 push 될 때 수행할지 지정한다. 
# 오직 main 브랜치가 push될 때 수행하도록 지정하였다.
branches:
  only:
    - main

# 빌드 전에 gradlew의 권한을 추가한다.
before_install:
  - chmod +x gradlew

# Travis CI 서버의 Home
# gradle을 통하여 의존성을 받게 되면 이를 캐시하여 배포할 때 마다 다시 받지 않도록 설정한다.
cache:
  directories:
    - '$HOME/.m2/repository'
    - '$HOME/.gradle'

# main 브랜치에 push 되면 수행되는 명령어이다. 
# 프로젝트 내에 권한이 추가된 gradlew를 활용하여 clean, build를 진행한다.
script: "./gradlew clean build"

# CI 실행 완료 시 작성한 이메일로 알람
notifications:
  email:
    recipients:
      - dev.hyeonic@gmail.com

작성한 후 main 브랜치에 commit & push 하면 Travis CI 저장소 페이지는 해당 .travis.yml의 내용을 기반으로 빌드를 진행한다.

 

해당 작업이 성공하면 passed를 확인할 수 있다. 실패한다면 errored를 확인할 수 있다. 또한 작업이 완료되면 관련된 내용을 작성한 메일을 통하여 확인할 수 있다.


References.

 

CI/CD(지속적 통합/지속적 제공): 개념, 방법, 장점, 구현 과정

CI/CD는 애플리케이션의 통합 및 테스트부터 제공 및 배포까지 전체 라이프사이클에서 지속적인 자동화와 모니터링을 제공합니다. 개념, 차이점, 학습방법(인강)을 보세요.

www.redhat.com

 

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 출간 후기

(출판사: 프리렉, 쪽수: 416, 정가: 22,000원) 서적 링크 오프라인 서점에는 2019.12.04 (수) 부터 올라갈 예정입니다. 강남 교보문고나 광화문 교보문고는 주말에도 올라올 순 있겠지만, 혹시 모르니

jojoldu.tistory.com