[CI/CD] Travis CI를 활용한 배포 자동화 (1)
CI
CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 레포지토리에 통합되기 때문에 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.
이러한 CI를 위한 서비스에는 대표적으로 Travis CI와 Jenkins 등 이 있다.
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를 확인할 수 있다. 또한 작업이 완료되면 관련된 내용을 작성한 메일을 통하여 확인할 수 있다.