CI

CI란 Continuous Integration의 약자로, 각각의 개발자의 개발소스를 한번에 통합 빌드하는 과정을 지속적으로 함으로써 따로 어느시점에 코드를 모아서 통합빌드할 필요가 없도록 하는 기법을 말합니다. 이를 활용하면 배포를 위한 빌드와 테스트 단계의 소요시간을 줄일 수 있다고 합니다.

CI Server

빌드 프로세스를 관리해주는 서버로 대표적으로 젠킨스, Travis CI, Circle CI가 있습니다. 오늘 저는 Travis CI를 이용해 제 SpringBoot 프로젝트에 CI를 적용해보겠습니다.

Travis에 프로젝트를 연동완료하면, master브랜치에 소스코드가 올라갈때마다 자동으로 통합빌드 및 테스트를 진행하여, 수행 결과를 이메일 혹은 텔레그램 등으로 보내줍니다.

  1. 먼저 SpringBoot 프로젝트를 하나 만들어줍니다. 저는 미리 만들어 놓은 개인 프로젝트에 적용할 것이고, Maven을 빌드툴로 사용합니다. 만드신 프로젝트를 git을 이용하여 github에 새로 올려주세요.
  1. github에 프로젝트를 올리셨다면, Travis CI로 이동합니다. Travis CI에 가입되어 있지 않으신 분은 가입을 먼저 진행하신 후, new repository 버튼을 클릭합니다.

  1. 이런식으로 본인의 github에 올라가있는 repository들이 리스트에 보여집니다. 여기서 본인이 원하는 해당 레포지토리 옆의 스위치 버튼을 클릭하여 활성화시킵니다.
  1. .travis.yml파일을 repository의 root 위치에 생성합니다.
language: java
jdk: oraclejdk8

before_install:
  - chmod +x mvnw

before_install에서 chmod +x mvnw를 해주는 이유는 travis내에서 admin 권한을 갖고 있지않아 permission denied에러가 뜨는 경우가 있기 때문입니다.

기본적으로 Travis는 mvn test -B를 실행할 것입니다. 하지만 이외의 다른 command를 사용을 원하실 경우 .travis.yml파일을 수정하여 적용시킬 수 있습니다.

이제 .travis.yml을 commit하고, push까지 완료해주세요.

  1. Travis 홈페이지로 돌아가면 아래와 같이 빌드가 시작된 것을 볼 수 있습니다.

빌드 시작까지 시간이 조금 걸릴 수 있습니다. 기다려도 실행되지않으면 우측상단의 More Options버튼을 클릭 후 Requests를 클릭한 후 다시 기다려주세요.

빌드과정에서 에러 발생시 화면 최하단으로 내려보면 아래와 같이 에러코드가 써있습니다. 에러 발생시 소스코드를 수정 후 다시 커밋앤 푸시해주세요.

  1. 빌드가 완료되면 아래와 같은 화면이 뜨고 레포지토리 우측에 status image가 build: passing으로 바뀝니다.

이제 이를 저희 README파일에 넣어보겠습니다. 화면에서 build passing이라 적혀있는 부분을 클릭하시면 이런 화면이 뜹니다.

두번째 선택란을 markdown으로 변경하시고, 3번째 입력칸에 적혀있는 값을 복사합니다.

이제 이를 본인의 README.md파일에서 넣기 원하시는 부분에 붙여넣고 이를 푸시해주면 끝!

위와 같이 status이미지가 README에 나타나는 걸 확인할 수 있습니다!


아직 모르는게 많아 게시글에 잘못된 정보가 있을 수 있습니다. 혹시 잘못된 정보가 있다면, 댓글 혹은 메일로 알려주시면 최대한 빨리 수정하겠습니다!