brunch

Rails 프로젝트 travis-ci 연동하기

by 홍진우

CI (Continuous Integration)은 코드 품질 유지를 위해 팀의 작업내역을 지속적으로 자주 통합하는 프로세스를 말한다. 통합이 늦어지면 그에 따른 비용도 증가하기 때문에, 빠른 통합을 통해서 시스템의 문제를 빠르게 발견하고 해결할 수 있게 된다.


CI를 위해서 중요한 것은 자동화된 빌드와 자동화된 테스트인데 이를 위해 진행 중인 프로젝트에 travis-ci를 통한 테스트 자동화를 구현했다.


travis-ci.org 홈페이지에 Ruby 관련한 가이드는 있으나 Rails 가이드는 없는 것 같아 지금 프로젝트에 적용한 방법을 정리해둔다.




1. travis 설정 파일 만들기


travis-ci를 위해 설정 파일(.travis.yml)을 만들어둔다. travis-ci에서는 이 설정 파일이 있는지 여부로 테스트를 실행할지를 결정하기 때문에 반드시 만들어줘야 한다.


# .travis.yml

language: ruby
rvm:
- 2.2.0
before_script:
- cp config/database.yml.travis config/database.yml
- psql -c 'create database travis_ci_test;' -U postgres


2. 루비 버전 명시하기


.ruby-version 파일에 사용 중인 루비 버전을 명시해준다.


# .ruby-version

2.2.0


3. 데이터베이스 설정하기


travis-ci에서 테스트를 실행할 때 테스트용 데이터베이스를 만들기 때문에 database.yml의 내용이 필요하다. database.yml 파일은 형상관리를 통해 관리하지 않기 때문이기도 하고 실제 서버의 설정 내용과 다르기 때문에 travis-ci용 데이터베이스 설정파일이 필요하다. config/database.yml.travis 라는 파일에 travis를 위한 데이터베이스를 정보를 명시한다.


# config/database.yml.travis

test:
adapter: postgresql
database: travis_ci_test
username: postgres


이 파일은 위의 .travis.yml 파일의 before_script 부분 (아래에 다시 첨부)에 의해서 테스트 전에 database.yml로 복사되어 데이터베이스를 생성하는 데에 쓰인다.


# .travis.yml

...
before_script:
- cp config/database.yml.travis config/database.yml
- psql -c 'create database travis_ci_test;' -U postgres


4. travis-ci 연동하기


위의 3파일을 전부 만들었다면 리모트 저장소에 푸쉬하고 https://travis-ci.com 에서 해당 프로젝트를 설정해주면 된다.

매거진의 이전글postgres 유저 비밀번호 변경